/*
=====================================================================
*   Ceevee v1.0 Layout Stylesheet
*   url: styleshout.com
*   03-18-2014
=====================================================================

   TOC:
   a. General Styles
   b. Header Styles
   c. About Section
   d. Resume Section
   e. Portfolio Section
   f. Call To Action Section
   g. Testimonials Section
   h. Contact Section
   i. Footer

===================================================================== */

/* ------------------------------------------------------------------ */
/* a. General Styles
/* ------------------------------------------------------------------ */

body {
  background: #0b0f19;
  color: #e2e8f0;
}

/* Skip link for keyboard users */
.skip-link {
  position: absolute;
  left: -9999px;
  z-index: 9999;
  padding: 0.75rem 1.25rem;
  background: #8b5cf6;
  color: #fff;
  font-weight: bold;
  text-decoration: none;
}
.skip-link:focus {
  left: 0.5rem;
  top: 0.5rem;
}

/* ------------------------------------------------------------------ */
/* b. Header Styles
/* ------------------------------------------------------------------ */

header {
  position: relative;
  min-height: 78vh;
  min-height: 78svh;
  width: 100%;
  background: #07080a url(../images/header-background.jpg) no-repeat center
    center;
  background-image: image-set(
    url(../images/header-background.webp) type('image/webp'),
    url(../images/header-background.jpg) type('image/jpeg')
  );
  background-size: cover !important;
  -webkit-background-size: cover !important;
  text-align: center;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* dark overlay for readable hero text while keeping photo visible */
header:after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(7, 8, 10, 0.55) 0%,
    rgba(7, 8, 10, 0.45) 45%,
    rgba(7, 8, 10, 0.72) 100%
  );
  pointer-events: none;
  z-index: 1;
}

/* vertically center banner section (flexbox) */
header .banner {
  margin: 0 auto;
  width: 85%;
  padding: 80px 0 40px 0;
  text-align: center;
  position: relative;
  z-index: 2;
}

header .banner-text {
  width: 100%;
}

/* keep nav fixed above hero overlay/content */
header #nav-wrap {
  z-index: 10;
}
header #nav-wrap ul#nav li a {
  text-shadow: 0px 1px 3px rgba(0, 0, 0, 0.85);
}

/* scroll cue: fixed to viewport bottom while hero is visible */
@keyframes hero-scroll-bounce {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(10px);
  }
}

header .scrolldown {
  position: fixed;
  bottom: 0;
  left: 0;
  width: 100%;
  z-index: 90;
  margin: 0;
  padding: 0 16px 16px 16px;
  display: flex;
  justify-content: center;
  align-items: flex-end;
  pointer-events: none;
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition:
    opacity 0.35s ease,
    visibility 0.35s ease,
    transform 0.35s ease;
}
header .scrolldown.scrolldown--hidden {
  opacity: 0;
  visibility: hidden;
  transform: translateY(14px);
  pointer-events: none;
}

/* scrolldown link */
header .scrolldown a {
  position: relative;
  left: auto;
  bottom: auto;
  margin: 0;
  margin-left: 0;
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 48px;
  width: 48px;
  font-size: 48px;
  line-height: 1;
  border-radius: 100%;
  pointer-events: auto;
  text-decoration: none;

  -webkit-transition:
    color 0.25s ease-in-out,
    transform 0.25s ease-in-out;
  -moz-transition:
    color 0.25s ease-in-out,
    transform 0.25s ease-in-out;
  -o-transition:
    color 0.25s ease-in-out,
    transform 0.25s ease-in-out;
  transition:
    color 0.25s ease-in-out,
    transform 0.25s ease-in-out;
}
header .scrolldown a:hover {
  color: #3b82f6;
}
header .scrolldown a:hover .icon-down-circle {
  animation-play-state: paused;
}

header .scrolldown a .icon-down-circle {
  display: block;
  animation: hero-scroll-bounce 1.65s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
  header .scrolldown a .icon-down-circle {
    animation: none;
  }
}
header .banner-text h1 {
  font:
    90px/1.1em 'opensans-bold',
    sans-serif;
  color: rgb(181, 225, 255);
  letter-spacing: -2px;
  margin: 0 auto 18px auto;
  text-shadow: 0px 1px 3px rgba(0, 0, 0, 0.8);
}
header .banner-text h3 {
  font:
    18px/1.9em 'librebaskerville-regular',
    serif;
  color: #94a3b8;
  margin: 0 auto;
  width: 70%;
  text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.5);
}
header .banner-text h3 span,
header .banner-text h3 a {
  color: #fff;
}
header .banner-text hr {
  width: 60%;
  margin: 18px auto 24px auto;
  border-color: #2f2d2e;
  border-color: rgba(150, 150, 150, 0.1);
}

/* header social links */
header .social {
  margin: 24px 0;
  padding: 0;
  font-size: 30px;
  text-shadow: 0px 1px 2px rgba(0, 0, 0, 0.8);
}
header .social li {
  display: inline-block;
  margin: 0 15px;
  padding: 0;
}
header .social li a {
  color: #fff;
}
header .social li a:hover {
  color: #3b82f6;
}

/* primary navigation
--------------------------------------------------------------------- */
#nav-wrap ul,
#nav-wrap li,
#nav-wrap a {
  margin: 0;
  padding: 0;
  border: none;
  outline: none;
}

/* nav-wrap */
#nav-wrap {
  font:
    20px 'opensans-bold',
    sans-serif;
  width: 100%;
  text-transform: uppercase;
  letter-spacing: 2.5px;
  margin: 0 auto;
  z-index: 100;
  position: fixed;
  left: 0;
  top: 0;
}
.opaque {
  background-color: #333;
}

/* hide toggle button */
#nav-wrap > a.mobile-btn {
  display: none;
}

ul#nav {
  min-height: 48px;
  width: auto;

  /* center align the menu */
  text-align: center;
}
ul#nav li {
  position: relative;
  list-style: none;
  height: 48px;
  display: inline-block;
}

/* Links */
ul#nav li a {
  /* 8px padding top + 8px padding bottom + 32px line-height = 48px */

  display: inline-block;
  padding: 8px 13px;
  line-height: 32px;
  text-decoration: none;
  text-align: left;
  color: #fff;

  -webkit-transition: color 0.2s ease-in-out;
  -moz-transition: color 0.2s ease-in-out;
  -o-transition: color 0.2s ease-in-out;
  -ms-transition: color 0.2s ease-in-out;
  transition: color 0.2s ease-in-out;
}

ul#nav li a:active {
  background-color: transparent !important;
}
ul#nav li.current a {
  color: #8b5cf6;
}

/* ---- Hero: sub-lines, stack line, proof strip ---- */
.hero-sub {
  margin: 10px auto 0 auto;
  max-width: 62ch;
  color: #cbd5e1;
  font:
    17px/28px 'opensans-regular',
    sans-serif;
}
.hero-stack {
  margin: 14px auto 0 auto;
  color: #94a3b8;
  font:
    13px/22px 'opensans-semibold',
    sans-serif;
  letter-spacing: 0.06em;
}

.hero-proof {
  margin: 34px auto 0 auto;
  padding: 22px 0 0 0;
  border-top: 1px solid rgba(226, 232, 240, 0.16);
  max-width: 900px;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px 16px;
  text-align: center;
}
.hero-proof-item {
  min-width: 0;
}
.hero-proof-value {
  margin: 0;
  font:
    30px/34px 'opensans-bold',
    sans-serif;
  color: #ffffff;
}
.hero-proof-label {
  margin: 6px 0 0 0;
  font:
    12px/18px 'opensans-regular',
    sans-serif;
  letter-spacing: 0.04em;
  color: #cbd5e1;
}

@media only screen and (min-width: 767px) {
  .hero-proof {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0 18px;
  }
  .hero-proof-item + .hero-proof-item {
    border-left: 1px solid rgba(226, 232, 240, 0.14);
  }
}

/* ------------------------------------------------------------------ */
/* c. About Section
/* ------------------------------------------------------------------ */

#about {
  background: #111827;
  padding-top: 96px;
  padding-bottom: 66px;
  overflow: hidden;
  background-size: cover !important;
  -webkit-background-size: cover !important;
  overflow: hidden;
}

#about a,
#about a:visited {
  color: #fff;
}
#about a:hover,
#about a:focus {
  color: #3b82f6;
}

#about h2 {
  font:
    22px/30px 'opensans-bold',
    sans-serif;
  color: #e2e8f0;
  margin-bottom: 12px;
}
#about p {
  line-height: 30px;
  color: #94a3b8;
}
#about .profile-pic {
  position: relative;
  width: 120px;
  height: 120px;
  border-radius: 100%;
}
#about .profile-pic-fallback {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #444;
  color: #fff;
  font-size: 2.5rem;
  font-weight: bold;
  object-fit: none;
}
#about .contact-details {
  width: 41.66667%;
}
#about .download {
  width: 58.33333%;
  padding-top: 6px;
}
#about .main-col {
  padding-right: 5%;
}
#about .download .button {
  margin-top: 6px;
  background: #444;
}
#about .download .button:hover {
  background: #fff;
  color: #2b2b2b;
}
#about .download .button i {
  margin-right: 15px;
  font-size: 20px;
}

/* ------------------------------------------------------------------ */
/* d. Resume Section
/* ------------------------------------------------------------------ */

#resume {
  background: #0f172a;
  padding-top: 90px;
  padding-bottom: 72px;
  overflow: hidden;
}

#resume a,
#resume a:visited {
  color: #3b82f6;
}
#resume a:hover,
#resume a:focus {
  color: #60a5fa;
}

#resume h1 {
  font:
    18px/24px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1px;
}
#resume h1 span {
  border-bottom: 3px solid #3b82f6;
  padding-bottom: 6px;
}
#resume h3 {
  font:
    25px/30px 'opensans-bold',
    sans-serif;
}

#resume .header-col {
  padding-top: 9px;
}
#resume .main-col {
  padding-right: 10%;
}

.education,
.work {
  margin-bottom: 48px;
  padding-bottom: 24px;
  border-bottom: 1px solid #1e293b;
}
#resume .info {
  font:
    16px/24px 'librebaskerville-italic',
    serif;
  color: #6e7881;
  margin-bottom: 18px;
  margin-top: 9px;
}
#resume .info span {
  margin-right: 5px;
  margin-left: 5px;
}
#resume .date {
  font:
    15px/24px 'opensans-regular',
    sans-serif;
  margin-top: 6px;
}

/*----------------------------------------------*/
/*	Skill Bars
/*----------------------------------------------*/

.bars {
  width: 95%;
  float: left;
  padding: 0;
  text-align: left;
}
.bars .skills {
  margin-top: 36px;
  list-style: none;
}
.bars li {
  position: relative;
  margin-bottom: 60px;
  background: #ccc;
  height: 42px;
  border-radius: 3px;
}
.bars li em {
  font:
    15px 'opensans-bold',
    sans-serif;
  color: #cbd5e1;
  text-transform: uppercase;
  letter-spacing: 2px;
  font-weight: normal;
  position: relative;
  top: -36px;
}
.bar-expand {
  position: absolute;
  left: 0;
  top: 0;

  margin: 0;
  padding-right: 24px;
  background: #313131;
  display: inline-block;
  height: 42px;
  line-height: 42px;
  border-radius: 3px 0 0 3px;
}
/*
.git {
  	-moz-animation: git 2s ease;
  	-webkit-animation: git 2s ease;
}
.illustrator {
  	-moz-animation: illustrator 2s ease;
  	-webkit-animation: illustrator 2s ease;
}
.reactjs {
  	-moz-animation: reactjs 2s ease;
  	-webkit-animation: reactjs 2s ease;
}
.css {
  	-moz-animation: css 2s ease;
  	-webkit-animation: css 2s ease;
}
.html5 {
  	-moz-animation: html5 2s ease;
  	-webkit-animation: html5 2s ease;
}
.vuejs {
  	-moz-animation: vuejs 2s ease;
  	-webkit-animation: vuejs 2s ease;
}
.mongodb {
  	-moz-animation: mongodb 2s ease;
  	-webkit-animation: mongodb 2s ease;
}

@-moz-keyframes git {
  0%   { width: 0px;  }
  100% { width: 60%;  }
}
@-moz-keyframes illustrator {
  0%   { width: 0px;  }
  100% { width: 55%;  }
}
@-moz-keyframes reactjs {
  0%   { width: 0px;  }
  100% { width: 50%;  }
}
@-moz-keyframes css {
  0%   { width: 0px;  }
  100% { width: 90%;  }
}
@-moz-keyframes html5 {
  0%   { width: 0px;  }
  100% { width: 80%;  }
}
@-moz-keyframes vuejs {
  0%   { width: 0px;  }
  100% { width: 50%;  }
}
@-moz-keyframes mongodb {
  0%   { width: 0px;  }
  100% { width: 80%;  }
}

@-webkit-keyframes photoshop {
  0%   { width: 0px;  }
  100% { width: 60%;  }
}
@-webkit-keyframes illustrator {
  0%   { width: 0px;  }
  100% { width: 55%;  }
}
@-webkit-keyframes reactjs {
  0%   { width: 0px;  }
  100% { width: 50%;  }
}
@-webkit-keyframes css {
  0%   { width: 0px;  }
  100% { width: 90%;  }
}
@-webkit-keyframes html5 {
  0%   { width: 0px;  }
  100% { width: 80%;  }
}
@-webkit-keyframes vuejs {
  0%   { width: 0px;  }
  100% { width: 50%;  }
}
@-webkit-keyframes mongodb {
  0%   { width: 0px;  }
  100% { width: 80%;  }
}  */

/* ------------------------------------------------------------------ */
/* e. Portfolio Section
/* ------------------------------------------------------------------ */

#portfolio {
  background: #0b0f19;
  padding-top: 90px;
  padding-bottom: 60px;
}
#portfolio h1 {
  font:
    15px/24px 'opensans-semibold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1px;
  text-align: center;
  margin-bottom: 48px;
  color: #95a3a3;
}

/* Portfolio Content */
#portfolio-wrapper .columns {
  margin-bottom: 36px;
}
.portfolio-item .item-wrap {
  background: #fff;
  overflow: hidden;
  position: relative;

  -webkit-transition: all 0.3s ease-in-out;
  -moz-transition: all 0.3s ease-in-out;
  -o-transition: all 0.3s ease-in-out;
  -ms-transition: all 0.3s ease-in-out;
  transition: all 0.3s ease-in-out;
}
.portfolio-item .item-wrap a {
  display: block;
  cursor: pointer;
}

/* overlay */
.portfolio-item .item-wrap .overlay {
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;

  opacity: 0;
  -moz-opacity: 0;
  filter: alpha(opacity=0);

  -webkit-transition: opacity 0.3s ease-in-out;
  -moz-transition: opacity 0.3s ease-in-out;
  -o-transition: opacity 0.3s ease-in-out;
  transition: opacity 0.3s ease-in-out;

  background: url(../images/overlay-bg.png) repeat;
}
.portfolio-item .item-wrap .link-icon {
  display: block;
  color: #fff;
  height: 30px;
  width: 30px;
  font-size: 18px;
  line-height: 30px;
  text-align: center;

  opacity: 0;
  -moz-opacity: 0;
  filter: alpha(opacity=0);

  -webkit-transition: opacity 0.3s ease-in-out;
  -moz-transition: opacity 0.3s ease-in-out;
  -o-transition: opacity 0.3s ease-in-out;
  transition: opacity 0.3s ease-in-out;

  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -15px;
  margin-top: -15px;
}
.portfolio-item .item-wrap img {
  vertical-align: bottom;
}
.portfolio-item .portfolio-item-meta {
  padding: 18px;
}
.portfolio-item .portfolio-item-meta h5 {
  font:
    14px/21px 'opensans-bold',
    sans-serif;
  color: #fff;
}
.portfolio-item .portfolio-item-meta p {
  font:
    12px/18px 'opensans-light',
    sans-serif;
  color: #c6c7c7;
  margin-bottom: 0;
}

/* on hover */
.portfolio-item:hover .overlay {
  opacity: 1;
  -moz-opacity: 1;
  filter: alpha(opacity=100);
}
.portfolio-item:hover .link-icon {
  opacity: 1;
  -moz-opacity: 1;
  filter: alpha(opacity=100);
}

/* popup modal */
.popup-modal {
  max-width: 550px;
  background: #fff;
  position: relative;
  margin: 0 auto;
}
.popup-modal .description-box {
  padding: 12px 36px 18px 36px;
}
.popup-modal .description-box h4 {
  font:
    15px/24px 'opensans-bold',
    sans-serif;
  margin-bottom: 12px;
  color: #e2e8f0;
}
.popup-modal .description-box p {
  font:
    14px/24px 'opensans-regular',
    sans-serif;
  color: #a1a1a1;
  margin-bottom: 12px;
}
.popup-modal .description-box .categories {
  font:
    11px/21px 'opensans-light',
    sans-serif;
  color: #a1a1a1;
  text-transform: uppercase;
  letter-spacing: 2px;
  display: block;
  text-align: left;
}
.popup-modal .description-box .categories i {
  margin-right: 8px;
}
.popup-modal .link-box {
  padding: 18px 36px;
  background: #111;
  text-align: left;
}
.popup-modal .link-box a {
  color: #fff;
  font:
    11px/21px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 3px;
  cursor: pointer;
}
.popup-modal a:hover {
  color: #00cccc;
}
.popup-modal a.popup-modal-dismiss {
  margin-left: 24px;
}

/* fadein/fadeout effect for modal popup
/* ------------------------------------------------------------------ */

/* content at start */
.mfp-fade.mfp-wrap .mfp-content .popup-modal {
  opacity: 0;
  -webkit-transition: all 200ms ease-in-out;
  -moz-transition: all 200ms ease-in-out;
  -o-transition: all 200ms ease-in-out;
  -ms-transition: all 200ms ease-in-out;
  transition: all 200ms ease-in-out;
}
/* content fadein */
.mfp-fade.mfp-wrap.mfp-ready .mfp-content .popup-modal {
  opacity: 1;
}
/* content fadeout */
.mfp-fade.mfp-wrap.mfp-removing .mfp-content .popup-modal {
  opacity: 0;
}

/* ------------------------------------------------------------------ */
/* f. Call To Action Section
/* ------------------------------------------------------------------ */

#call-to-action {
  background: #212121;
  padding-top: 66px;
  padding-bottom: 48px;
}
#call-to-action h1 {
  font:
    18px/24px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 3px;
  color: #fff;
}
#call-to-action h1 span {
  display: none;
}
#call-to-action .header-col h1:before {
  font-family: 'FontAwesome';
  content: '\f0ac';
  padding-right: 10px;
  font-size: 72px;
  line-height: 72px;
  text-align: left;
  float: left;
  color: #fff;
}
#call-to-action .action {
  margin-top: 12px;
}
#call-to-action h2 {
  font:
    28px/36px 'opensans-bold',
    sans-serif;
  color: #ebeeee;
  margin-bottom: 6px;
}
#call-to-action h2 a {
  color: inherit;
}
#call-to-action p {
  color: #636363;
  font-size: 17px;
}
/*#
call-to-action .button {
	color:#fff;
   background: #0D0D0D;
}
*/
#call-to-action .button:hover,
#call-to-action .button:active {
  background: #ffffff;
  color: #0d0d0d;
}
#call-to-action p span {
  font-family: 'opensans-semibold', sans-serif;
  color: #d8d8d8;
}

/* ------------------------------------------------------------------
/* g. Testimonials
/* ------------------------------------------------------------------ */

#testimonials {
  background: #1f1f1f;
  background-size: cover !important;
  -webkit-background-size: cover !important;
  background-attachment: fixed;

  position: relative;
  min-height: 200px;
  width: 100%;
  overflow: hidden;
}
#testimonials .text-container {
  padding-top: 96px;
  padding-bottom: 66px;
}
#testimonials h1 {
  font:
    18px/24px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 3px;
  color: #fff;
}
#testimonials h1 span {
  display: none;
}
#testimonials .header-col {
  padding-top: 9px;
}
#testimonials .header-col h1:before {
  font-family: 'FontAwesome';
  content: '\f10d';
  padding-right: 10px;
  font-size: 72px;
  line-height: 72px;
  text-align: left;
  float: left;
  color: #fff;
}

/*	Blockquotes */
#testimonials blockquote {
  margin: 0 0px 30px 0px;
  padding-left: 0;
  position: relative;
  text-shadow: 0px 1px 3px rgba(0, 0, 0, 1);
}
#testimonials blockquote:before {
  content: none;
}
#testimonials blockquote p {
  font-family: 'librebaskerville-italic', serif;
  padding: 0;
  font-size: 24px;
  line-height: 48px;
  color: #fff;
}
#testimonials blockquote cite {
  display: block;
  font-size: 12px;
  font-style: normal;
  line-height: 18px;
  color: #fff;
}
#testimonials blockquote cite:before {
  content: '\2014 \0020';
}
#testimonials blockquote cite a,
#testimonials blockquote cite a:visited {
  color: #8b9798;
  border: none;
}

/* Flex Slider
/* ------------------------------------------------------------------ */

/* Reset */
.flexslider a:active,
.flexslider a:focus {
  outline: none;
}
.slides,
.flex-control-nav,
.flex-direction-nav {
  margin: 0;
  padding: 0;
  list-style: none;
}
.slides li {
  margin: 0;
  padding: 0;
}

/* Necessary Styles */
.flexslider {
  position: relative;
  zoom: 1;
  margin: 0;
  padding: 0;
}
.flexslider .slides {
  zoom: 1;
}
.flexslider .slides > li {
  position: relative;
}

/* Hide the slides before the JS is loaded. Avoids image jumping */
.flexslider .slides > li {
  display: none;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}
/* Suggested container for slide animation setups. Can replace this with your own */
.flex-container {
  zoom: 1;
  position: relative;
}

/* Clearfix for .slides */
.slides:before,
.slides:after {
  content: ' ';
  display: table;
}
.slides:after {
  clear: both;
}

/* No JavaScript Fallback */
/* If you are not using another script, such as Modernizr, make sure you
 * include js that eliminates this class on page load */
.no-js .slides > li:first-child {
  display: block;
}

/* Slider Styles */
.slides {
  zoom: 1;
}
.slides > li {
  /*margin-right: 5px; */
  overflow: hidden;
}

/* Control Nav */
.flex-control-nav {
  width: 100%;
  position: absolute;
  bottom: -20px;
  text-align: left;
}
.flex-control-nav li {
  margin: 0 6px;
  display: inline-block;
  zoom: 1;
  display: inline;
}
.flex-control-paging li a {
  width: 12px;
  height: 12px;
  display: block;
  background: #ddd;
  background: rgba(255, 255, 255, 0.3);
  cursor: pointer;
  text-indent: -9999px;
  -webkit-border-radius: 20px;
  -moz-border-radius: 20px;
  -o-border-radius: 20px;
  border-radius: 20px;
  box-shadow: inset 0 0 3px rgba(255, 255, 255, 0.3);
}
.flex-control-paging li a:hover {
  background: #ccc;
  background: rgba(255, 255, 255, 0.7);
}
.flex-control-paging li a.flex-active {
  background: #fff;
  background: rgba(255, 255, 255, 0.9);
  cursor: default;
}

/* ------------------------------------------------------------------ */
/* h. Contact Section
/* ------------------------------------------------------------------ */

#contact {
  background: #111827;
  padding-top: 96px;
  padding-bottom: 102px;
  color: #cbd5e1;
}
#contact .section-head {
  margin-bottom: 42px;
}

#contact a,
#contact a:visited {
  color: #3b82f6;
}
#contact a:hover,
#contact a:focus {
  color: #93c5fd;
}

#contact h1 {
  color: #e2e8f0;
  margin-bottom: 6px;
}
#contact h1 span {
  display: none;
}
#contact h1:before {
  font-family: 'FontAwesome';
  content: '\f0e0';
  padding-right: 10px;
  font-size: 72px;
  line-height: 72px;
  text-align: left;
  float: left;
  color: rgba(147, 197, 253, 0.95);
}

#contact h4 {
  font:
    16px/24px 'opensans-bold',
    sans-serif;
  color: #e2e8f0;
  margin-bottom: 6px;
}
#contact p.lead {
  color: #e2e8f0;
  float: none;
  width: auto;
  max-width: 720px;
}

/* Fieldset groups the form with subtle edge on dark bg */
#contact form fieldset {
  margin: 0;
  padding: 22px 22px 10px 22px;
  border: 1px solid rgba(148, 163, 184, 0.35);
  border-radius: 12px;
  background: rgba(15, 23, 42, 0.45);
}

#contact label,
#contact legend {
  color: #e2e8f0;
}
#contact label span,
#contact legend span {
  color: #94a3b8;
}

#contact input,
#contact textarea,
#contact select {
  padding: 16px 18px;
  color: #0f172a;
  background: #f8fafc;
  margin-bottom: 42px;
  border: 1px solid #cbd5e1;
  outline: none;
  font-size: 15px;
  line-height: 24px;
  width: 65%;
  border-radius: 8px;
  transition:
    border-color 0.2s ease,
    box-shadow 0.2s ease,
    background-color 0.2s ease;
}
#contact input::placeholder,
#contact textarea::placeholder {
  color: #64748b;
}
#contact input:focus,
#contact textarea:focus,
#contact select:focus {
  color: #0f172a;
  background-color: #ffffff;
  border-color: #3b82f6;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.28);
}
#contact button.submit {
  text-transform: uppercase;
  letter-spacing: 3px;
  color: #fff;
  background: #3b82f6;
  border: none;
  cursor: pointer;
  height: auto;
  display: inline-block;
  border-radius: 8px;
  margin-left: 26%;
}
#contact button.submit:hover {
  color: #fff;
  background: #2563eb;
}
#contact span.required {
  color: #3b82f6;
  font-size: 13px;
}
#message-warning,
#message-success,
.form-message {
  display: none;
  background: #0f0f0f;
  padding: 24px 24px;
  margin-bottom: 36px;
  width: 65%;
  margin-left: 26%;
}
#message-warning:not([hidden]),
#message-success:not([hidden]),
.form-message:not([hidden]) {
  display: block;
}
#message-warning,
.form-message-warning {
  color: #d72828;
}
#message-success,
.form-message-success {
  color: #3b82f6;
}

#message-warning i,
#message-success i,
.form-message i {
  margin-right: 10px;
}
#image-loader {
  display: none;
  position: relative;
  left: 18px;
  top: 17px;
}

/* Twitter Feed */
#twitter {
  margin-top: 12px;
  padding: 0;
}
#twitter li {
  margin: 6px 0px 12px 0;
  line-height: 30px;
}
#twitter li span {
  display: block;
}
#twitter li b a {
  font:
    13px/36px 'opensans-regular',
    Sans-serif;
  color: #474747 !important;
  border: none;
}

/* ------------------------------------------------------------------ */
/* i. Footer
/* ------------------------------------------------------------------ */

footer {
  padding-top: 48px;
  margin-bottom: 48px;
  color: #e2e8f0;
  font-size: 14px;
  text-align: center;
  position: relative;
}

footer a,
footer a:visited {
  color: #93c5fd;
}
footer a:hover,
footer a:focus {
  color: #ffffff;
}

/* copyright */
footer .copyright {
  margin: 0;
  padding: 0;
}
footer .copyright li {
  display: inline-block;
  margin: 0;
  padding: 0;
  line-height: 24px;
  color: #cbd5e1;
}
.ie footer .copyright li {
  display: inline;
}
footer .copyright li:before {
  content: '\2022';
  padding-left: 10px;
  padding-right: 10px;
  color: #64748b;
}
footer .copyright li:first-child:before {
  display: none;
}

/* social links */
footer .social-links {
  margin: 18px 0 30px 0;
  padding: 0;
  font-size: 30px;
}
footer .social-links li {
  display: inline-block;
  margin: 0;
  padding: 0;
  margin-left: 42px;
}

footer .social-links li:first-child {
  margin-left: 0;
}

footer .social-links li a,
footer .social-links li a:visited {
  color: #93c5fd;
}
footer .social-links li a:hover,
footer .social-links li a:focus {
  color: #ffffff;
}

/* Go To Top Button */
#go-top {
  position: absolute;
  top: -24px;
  left: 50%;
  margin-left: -30px;
}
#go-top a {
  text-decoration: none;
  border: 0 none;
  display: block;
  width: 60px;
  height: 60px;
  background-color: #475569;

  -webkit-transition: all 0.2s ease-in-out;
  -moz-transition: all 0.2s ease-in-out;
  -o-transition: all 0.2s ease-in-out;
  -ms-transition: all 0.2s ease-in-out;
  transition: all 0.2s ease-in-out;

  color: #fff;
  font-size: 21px;
  line-height: 60px;
  border-radius: 100%;
}
#go-top a:hover {
  background-color: #3b82f6;
}

/* =====================================================================
   Custom overrides (2026 refresh)
   ===================================================================== */

/* ---- Header / Hero ---- */
header .banner-text h1 {
  color: #eaf6ff;
}
header .banner-text h3 {
  color: rgba(255, 255, 255, 0.9);
  width: min(780px, 92%);
}
header .banner-text h3 span {
  color: #9ae6ff;
}
.hero-kicker {
  margin: 0 auto 10px auto;
  width: min(780px, 92%);
  text-transform: uppercase;
  letter-spacing: 2px;
  font:
    12px/18px 'opensans-semibold',
    sans-serif;
  color: rgba(255, 255, 255, 0.75);
}
.hero-ctas {
  margin-top: 18px;
  display: flex;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
}
.hero-ctas .button i {
  margin-right: 10px;
}
.hero-primary {
  background: #3b82f6;
}
.hero-secondary,
.button.button-secondary {
  background: rgba(255, 255, 255, 0.15);
  color: #fff;
}
.hero-secondary:hover,
.button.button-secondary:hover {
  background: rgba(255, 255, 255, 0.25);
  color: #fff;
}
.hero-tertiary {
  background: rgba(0, 0, 0, 0.35);
  color: #fff;
}
.hero-tertiary:hover {
  background: rgba(0, 0, 0, 0.55);
  color: #fff;
}
.hero-highlights {
  margin: 22px auto 0 auto;
  padding: 0;
  width: min(780px, 92%);
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  text-align: left;
}
.hero-highlights li {
  margin: 0;
  padding: 10px 12px;
  border-radius: 10px;
  background: rgba(0, 0, 0, 0.35);
  color: rgba(255, 255, 255, 0.9);
  line-height: 22px;
}
@media only screen and (min-width: 900px) {
  .hero-highlights {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

@media only screen and (max-width: 480px) {
  .hero-highlights {
    display: none;
  }
}

/* Hero – mobile nav clearance */
@media only screen and (max-width: 767px) {
  header .banner {
    padding-top: 70px;
  }
}

/* Hero – small / short screens */
@media only screen and (max-height: 750px), only screen and (max-width: 480px) {
  header .banner-text h1 {
    font-size: 48px;
    margin-bottom: 10px;
  }
  header .banner-text h3 {
    font-size: 15px;
    line-height: 1.7em;
  }
  header .banner {
    padding-top: 70px;
    padding-bottom: 30px;
  }
  .hero-kicker {
    font-size: 11px;
    margin-bottom: 6px;
  }
  .hero-ctas {
    margin-top: 12px;
    gap: 8px;
  }
  .hero-ctas .button {
    padding: 10px 16px;
    font-size: 12px;
  }
  .hero-highlights {
    margin-top: 14px;
    gap: 6px;
  }
  .hero-highlights li {
    padding: 8px 10px;
    font-size: 13px;
    line-height: 20px;
  }
  header .social {
    margin: 14px 0;
    font-size: 24px;
  }
  header .social li {
    margin: 0 10px;
  }
  header .banner-text hr {
    margin: 12px auto 16px auto;
  }
  header .scrolldown {
    padding: 0 12px 14px 12px;
  }
  header .scrolldown a {
    font-size: 36px;
    height: 40px;
    width: 40px;
  }
}

/* ---- About ---- */
#about {
  background: #111827;
}
#about h2 {
  font:
    22px/30px 'opensans-bold',
    sans-serif;
  color: #e2e8f0;
}
#about a,
#about a:visited {
  color: #3b82f6;
}
#about a:hover,
#about a:focus {
  color: #0c7074;
}
.about-subheading {
  margin-bottom: 10px;
  font:
    18px/24px 'opensans-bold',
    sans-serif;
  color: #e2e8f0;
}
.about-columns {
  margin-top: 18px;
}
.about-facts {
  margin: 0;
  padding: 0;
}
.about-facts li {
  margin: 0 0 10px 0;
  line-height: 24px;
  color: #cbd5e1;
}
.about-links {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

/* ---- Resume / Experience ---- */
.work-highlights {
  margin: 0 0 18px 0;
  padding-left: 18px;
  list-style: disc;
}
.work-highlights li {
  margin: 0 0 10px 0;
  line-height: 26px;
  color: #94a3b8;
}
.work-links {
  margin-top: -6px;
}
.work-link {
  display: inline-block;
  margin-right: 10px;
  margin-bottom: 10px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(59, 130, 246, 0.3);
  background: rgba(59, 130, 246, 0.15);
  color: #0a5e61 !important;
  font:
    13px/18px 'opensans-semibold',
    sans-serif;
}
.work-link:hover {
  background: rgba(59, 130, 246, 0.15);
}

.skill-categories {
  margin-top: 26px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}
@media only screen and (min-width: 900px) {
  .skill-categories {
    grid-template-columns: 1fr 1fr;
  }
}
.skill-category {
  padding: 16px 16px 14px 16px;
  border-radius: 14px;
  background: rgba(30, 41, 59, 0.6);
  border: 1px solid rgba(255, 255, 255, 0.05);
}
.skill-category-title {
  margin-bottom: 12px;
}
.skill-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.skill-pill {
  display: inline-block;
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(59, 130, 246, 0.3);
  color: #60a5fa;
  font:
    13px/18px 'opensans-semibold',
    sans-serif;
}

.language-list {
  margin: 0;
  padding-left: 18px;
  list-style: disc;
}
.language-list li {
  margin: 0 0 10px 0;
  color: #cbd5e1;
  line-height: 26px;
}

/* ---- Portfolio ---- */
.portfolio-empty {
  text-align: center;
  margin: 24px auto;
  color: #8b9798;
  font-size: 1rem;
}

.portfolio-subtitle {
  text-align: center;
  margin: -28px auto 36px auto;
  width: min(820px, 92%);
  color: #6e7881;
}

/* =====================================================================
   Portfolio (2026 cards)
   ===================================================================== */

.portfolio-header h1 {
  margin-bottom: 10px;
}

.projects-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}
@media only screen and (min-width: 767px) {
  .projects-grid {
    grid-template-columns: 1fr 1fr;
    gap: 22px;
  }
}
@media only screen and (min-width: 1020px) {
  .projects-grid {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

.project-card-link {
  display: block;
  text-decoration: none;
  color: inherit;
}
.project-card {
  background: #1e293b;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);
  transform: translateY(0);
  transition:
    transform 160ms ease,
    box-shadow 160ms ease;
}
.project-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 45px rgba(59, 130, 246, 0.15);
}
.project-card-media {
  height: 180px;
  background-color: #2b2b2b;
  position: relative;
  overflow: hidden;
}
.project-card-media img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.project-card-media:after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 0%,
    rgba(0, 0, 0, 0.35) 100%
  );
}
.project-card-body {
  padding: 16px 16px 14px 16px;
}
.project-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 6px;
}
.project-card-title {
  margin: 0;
  font:
    18px/24px 'opensans-bold',
    sans-serif;
  color: #e2e8f0;
}
.project-card-badge {
  display: inline-block;
  padding: 6px 10px;
  border-radius: 999px;
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(59, 130, 246, 0.3);
  color: #60a5fa;
  font:
    12px/16px 'opensans-semibold',
    sans-serif;
  white-space: nowrap;
}
.project-card-kicker {
  margin: 0 0 10px 0;
  color: #6e7881;
  font:
    13px/20px 'opensans-regular',
    sans-serif;
}
.project-card-summary {
  margin: 0 0 12px 0;
  color: #cbd5e1;
  font:
    14px/22px 'opensans-regular',
    sans-serif;
}
.project-card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 10px;
}
.project-card-tags .project-pill {
  /* pill on light cards (portfolio grid) */
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(59, 130, 246, 0.3);
  color: #60a5fa;
  padding: 7px 10px;
}
.project-card-cta {
  font:
    13px/18px 'opensans-semibold',
    sans-serif;
  color: #60a5fa;
}

/* =====================================================================
   Portfolio — spotlight tier (flagship projects)
   ===================================================================== */

.portfolio-subheading {
  margin: 54px 0 20px 0;
  font:
    15px/22px 'opensans-semibold',
    sans-serif;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #6e7881;
}
.portfolio-subheading:before {
  content: '';
  display: block;
  width: 100%;
  height: 1px;
  background: rgba(148, 163, 184, 0.18);
  margin-bottom: 22px;
}

.projects-spotlights {
  display: grid;
  gap: 22px;
}

.project-spotlight {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  background: #1e293b;
  border: 1px solid rgba(148, 163, 184, 0.12);
  border-radius: 16px;
  overflow: hidden;
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
  transition:
    transform 160ms ease,
    box-shadow 160ms ease;
}
.project-spotlight:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 45px rgba(59, 130, 246, 0.15);
}

.project-spotlight-media {
  position: relative;
  background: #0f172a;
  aspect-ratio: 16 / 10;
  overflow: hidden;
}
/* Absolutely positioned so the image fills the row rather than defining its
   height — a tall portrait photo would otherwise stretch the whole card. */
.project-spotlight-media img {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
/* Diagram covers must not be cropped — show the whole artwork. */
.project-spotlight-media--contain {
  background: #0f172a;
}
.project-spotlight-media--contain img {
  object-fit: contain;
}

.project-spotlight-body {
  padding: 26px 26px 28px 26px;
  display: flex;
  flex-direction: column;
}

/* The category used to sit beside the title as a second blue chip, which put
   two competing accents on one line. It reads as a quiet eyebrow instead. */
.project-spotlight-top {
  margin-bottom: 12px;
}
.project-spotlight-eyebrow {
  display: block;
  margin-bottom: 8px;
  font:
    12px/16px 'opensans-semibold',
    sans-serif;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #8296ad;
}
.project-spotlight-title {
  margin: 0;
  font:
    26px/32px 'opensans-bold',
    sans-serif;
  color: #f1f5f9;
}

.project-spotlight-summary {
  margin: 0 0 20px 0;
  color: #cbd5e1;
  font:
    16px/26px 'opensans-regular',
    sans-serif;
  max-width: 46ch;
}

.project-spotlight-metrics {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 10px;
  margin: 0 0 22px 0;
  padding: 18px 0 0 0;
  border-top: 1px solid rgba(148, 163, 184, 0.14);
}
.project-spotlight-metric {
  min-width: 0;
}
.project-spotlight-metric-value {
  margin: 0;
  font:
    24px/28px 'opensans-bold',
    sans-serif;
  color: #60a5fa;
}
.project-spotlight-metric-label {
  margin: 4px 0 0 0;
  font:
    12px/17px 'opensans-regular',
    sans-serif;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #8296ad;
}

.project-spotlight-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 20px;
}
/* Muted so the only blue left in the card is the metrics and the CTAs. */
.project-spotlight-tags .project-pill {
  background: transparent;
  border: 1px solid rgba(148, 163, 184, 0.22);
  color: #94a3b8;
  padding: 6px 10px;
  font-size: 12px;
}
.project-pill--muted {
  background: rgba(148, 163, 184, 0.1) !important;
  border-color: rgba(148, 163, 184, 0.25) !important;
  color: #94a3b8 !important;
}

.project-spotlight-ctas {
  margin-top: auto;
  display: flex;
  flex-wrap: wrap;
  gap: 10px 22px;
  align-items: center;
}
.project-spotlight-cta {
  font:
    14px/20px 'opensans-semibold',
    sans-serif;
  color: #60a5fa;
  text-decoration: none;
}
.project-spotlight-cta:hover,
.project-spotlight-cta:focus {
  color: #93c5fd;
  text-decoration: underline;
}
.project-spotlight-cta--secondary {
  color: #94a3b8;
}

@media only screen and (min-width: 767px) {
  .projects-spotlights {
    gap: 26px;
  }
  .project-spotlight {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    align-items: stretch;
  }
  .project-spotlight--reverse .project-spotlight-media {
    order: 2;
  }
  .project-spotlight-media {
    aspect-ratio: auto;
    height: 100%;
    min-height: 380px;
  }
  .project-spotlight-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
  .project-spotlight-body {
    padding: 32px 34px 34px 34px;
  }
}

/* Link-outs demoted below the grid */
.portfolio-linkouts {
  margin: 36px 0 0 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px 16px;
}
/* Solid buttons rather than blue text links: they close the section, so they
   need to read as actions and sit under the middle of the grid. */
.portfolio-linkout {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 12px 24px;
  border-radius: 999px;
  background: #ffffff;
  border: 1px solid #ffffff;
  font:
    14px/20px 'opensans-semibold',
    sans-serif;
  color: #0f172a;
  text-decoration: none;
  transition:
    background-color 160ms ease,
    color 160ms ease,
    transform 160ms ease;
}
.portfolio-linkout:hover,
.portfolio-linkout:focus {
  background: #e2e8f0;
  border-color: #e2e8f0;
  color: #0f172a;
  text-decoration: none;
  transform: translateY(-1px);
}

/* =====================================================================
   Project page
   ===================================================================== */
.project-page {
  background: #0f0f0f;
  min-height: 100vh;
  color: #e6e6e6;
}
.project-hero {
  padding: 36px 0 22px 0;
  background: #0b0c0e;
  position: relative;
  overflow: hidden;
}
.project-hero-image {
  position: absolute;
  inset: 0;
  background-color: #1f1f1f;
  background-size: cover;
  background-position: center;
  filter: saturate(0.9) contrast(1.05);
  transform: scale(1.02);
}
.project-hero:after {
  content: '';
  position: absolute;
  inset: 0;
  /* Light covers (a screenshot rather than a photo) need a heavier scrim than
     the original 0.72, or the title loses contrast against white UI. */
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.82) 0%,
    rgba(0, 0, 0, 0.86) 55%,
    rgba(15, 15, 15, 1) 100%
  );
}
.project-hero .row {
  position: relative;
  z-index: 2;
}
/* Sticky back bar */
.project-back-bar {
  position: sticky;
  top: 0;
  z-index: 100;
  padding: 14px 0;
  background: rgba(15, 15, 15, 0.85);
  -webkit-backdrop-filter: blur(12px);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.project-back-link {
  color: rgba(255, 255, 255, 0.85);
  font:
    13px/18px 'opensans-semibold',
    sans-serif;
  text-decoration: none;
  transition: color 160ms ease;
}
.project-back-link:hover {
  color: #3b82f6;
}
.project-back a {
  color: rgba(255, 255, 255, 0.85);
  font:
    13px/18px 'opensans-semibold',
    sans-serif;
}
.project-title {
  color: #fff;
  margin-top: 10px;
  margin-bottom: 10px;
}
.project-tagline {
  color: rgba(255, 255, 255, 0.9);
  margin-bottom: 10px;
}
.project-summary {
  color: rgba(255, 255, 255, 0.8);
  max-width: 820px;
}
.project-meta {
  margin-top: 18px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
@media only screen and (min-width: 900px) {
  .project-meta {
    grid-template-columns: 1fr 1fr 2fr;
  }
}
.project-meta-item {
  padding: 14px 14px 12px 14px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.08);
}
.project-meta-label {
  font:
    12px/16px 'opensans-semibold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: rgba(255, 255, 255, 0.65);
  margin-bottom: 6px;
}
.project-meta-value {
  color: rgba(255, 255, 255, 0.92);
}
/* Hero quick stats. The component renders .project-quick-stats/.project-stat*,
   which had no rules at all — labels and values ran together as bare inline
   spans ("RoleSoftware Engineer"). */
.project-quick-stats {
  margin-top: 20px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
@media only screen and (min-width: 767px) {
  .project-quick-stats {
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 12px;
  }
}
.project-stat {
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding: 13px 15px 12px 15px;
  border-radius: 14px;
  background: rgba(15, 23, 42, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.1);
  backdrop-filter: blur(6px);
}
.project-stat-label {
  font:
    11px/15px 'opensans-semibold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1.4px;
  color: rgba(226, 232, 240, 0.68);
}
.project-stat-value {
  font:
    15px/22px 'opensans-semibold',
    sans-serif;
  color: #f1f5f9;
}

.project-pill-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.project-pill {
  display: inline-block;
  padding: 7px 10px;
  border-radius: 999px;
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(59, 130, 246, 0.3);
  color: #c9fbff;
  font:
    12px/16px 'opensans-semibold',
    sans-serif;
}
.project-links {
  margin-top: 16px;
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.project-link {
  background: rgba(255, 255, 255, 0.14);
}
.project-link:hover {
  background: rgba(255, 255, 255, 0.22);
}
.project-body {
  padding-top: 28px;
  padding-bottom: 90px;
}
.project-body h2,
.project-body h3 {
  color: #fff;
}
.project-section {
  margin-bottom: 26px;
}
.project-bullets {
  list-style: disc;
  padding-left: 20px;
}
.project-bullets li {
  margin-bottom: 10px;
  line-height: 26px;
}
.project-aside .project-card {
  background: #1e293b;
  padding: 48px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.case-study-metrics .section-heading {
  text-align: center;
  font:
    14px/18px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1.5px;
  color: #3b82f6;
  margin-bottom: 32px;
}
.metrics-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
@media only screen and (min-width: 900px) {
  .metrics-grid {
    grid-template-columns: repeat(4, 1fr);
  }
}
.metric-card {
  text-align: center;
  padding: 28px 20px;
  border-radius: 16px;
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(59, 130, 246, 0.3);
}
.metric-value {
  font:
    42px/48px 'opensans-bold',
    sans-serif;
  color: #3b82f6;
  margin-bottom: 8px;
}
.metric-label {
  font:
    14px/20px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 6px;
}
.metric-description {
  font:
    13px/18px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.6);
}

/* Case Study Content Area */
.case-study-content {
  background: #0f0f0f;
  padding: 48px 0 72px 0;
}

/* Case Study Sections */
.case-study-section {
  margin-bottom: 48px;
  padding-bottom: 36px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  position: relative;
}
.case-study-section:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}
.section-icon {
  position: absolute;
  top: 0;
  left: -50px;
  width: 36px;
  height: 36px;
  border-radius: 10px;
  background: rgba(59, 130, 246, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  display: none;
}
@media only screen and (min-width: 1100px) {
  .section-icon {
    display: flex;
  }
  .case-study-content .eight.columns {
    padding-left: 60px;
  }
}
.section-icon i {
  color: #3b82f6;
  font-size: 16px;
}
.case-study-section h2 {
  font:
    24px/32px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 16px;
}
.case-study-section p {
  font:
    16px/28px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.8);
  margin-bottom: 16px;
}
.case-study-bullets {
  list-style: none;
  padding: 0;
  margin: 0;
}
.case-study-bullets li {
  position: relative;
  padding-left: 24px;
  margin-bottom: 12px;
  font:
    15px/26px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.8);
}
.case-study-bullets li:before {
  content: '';
  position: absolute;
  left: 0;
  top: 10px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #3b82f6;
}

/* Process Steps */
.process-steps {
  margin-top: 24px;
}
.process-step {
  display: flex;
  gap: 20px;
  margin-bottom: 28px;
}
.process-step:last-child {
  margin-bottom: 0;
}
.step-number {
  flex-shrink: 0;
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: linear-gradient(135deg, #11abb0 0%, #0a7a7d 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font:
    18px/24px 'opensans-bold',
    sans-serif;
  color: #fff;
}
.step-content h4 {
  font:
    17px/24px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 6px;
}
.step-content p {
  font:
    15px/24px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.75);
  margin: 0;
}

/* Features Grid */
.features-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  margin-top: 24px;
}
@media only screen and (min-width: 600px) {
  .features-grid {
    grid-template-columns: 1fr 1fr;
  }
}
.feature-card {
  padding: 24px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  transition:
    background 200ms ease,
    border-color 200ms ease;
}
.feature-card:hover {
  background: rgba(255, 255, 255, 0.06);
  border-color: #3b82f6;
}
.feature-icon {
  width: 44px;
  height: 44px;
  border-radius: 12px;
  background: rgba(59, 130, 246, 0.15);
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 16px;
}
.feature-icon i {
  color: #3b82f6;
  font-size: 18px;
}
.feature-card h4 {
  font:
    16px/22px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 8px;
}
.feature-card p {
  font:
    14px/22px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.7);
  margin: 0;
}

/* Technical Decisions */
.tech-decisions {
  margin-top: 20px;
}
.tech-decision {
  padding: 20px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.03);
  border-left: 3px solid #11abb0;
  margin-bottom: 16px;
}
.tech-decision:last-child {
  margin-bottom: 0;
}
.tech-decision h4 {
  font:
    15px/22px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 8px;
}
.tech-decision p {
  font:
    14px/24px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.75);
  margin: 0;
}

/* Challenges List */
.challenges-list {
  margin-top: 20px;
}
.challenge-item {
  margin-bottom: 28px;
  padding: 24px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
}
.challenge-item:last-child {
  margin-bottom: 0;
}
.challenge-problem,
.challenge-solution {
  margin-bottom: 16px;
}
.challenge-solution {
  margin-bottom: 0;
  padding-top: 16px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.challenge-label {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 6px;
  font:
    11px/14px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 8px;
}
.challenge-problem .challenge-label {
  background: rgba(255, 107, 107, 0.15);
  color: #ff8a8a;
}
.challenge-solution .challenge-label {
  background: rgba(59, 130, 246, 0.15);
  color: #3b82f6;
}
.challenge-problem p,
.challenge-solution p {
  font:
    14px/24px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.8);
  margin: 0;
}

/* Results Section */
.case-study-results {
  background: rgba(59, 130, 246, 0.15);
  padding: 32px !important;
  border-radius: 16px;
  border: 1px solid rgba(17, 171, 176, 0.15) !important;
}
.results-list {
  list-style: none;
  padding: 0;
  margin: 16px 0 0 0;
}
.results-list li {
  position: relative;
  padding-left: 32px;
  margin-bottom: 14px;
  font:
    15px/26px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.85);
}
.results-list li:before {
  content: '\f00c';
  font-family: 'FontAwesome';
  position: absolute;
  left: 0;
  top: 2px;
  color: #3b82f6;
  font-size: 14px;
}

/* Learnings List */
.learnings-list {
  list-style: none;
  padding: 0;
  margin: 16px 0 0 0;
}
.learnings-list li {
  position: relative;
  padding-left: 28px;
  margin-bottom: 16px;
  font:
    15px/26px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.8);
}
.learnings-list li:before {
  content: '\f0eb';
  font-family: 'FontAwesome';
  position: absolute;
  left: 0;
  top: 2px;
  color: #f5c842;
  font-size: 14px;
}

/* Sidebar */
.case-study-sidebar {
  position: sticky;
  top: 80px;
}
.sidebar-card {
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 16px;
  padding: 24px;
  margin-bottom: 20px;
}
.sidebar-card h3 {
  font:
    14px/18px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1px;
  color: rgba(255, 255, 255, 0.6);
  margin-bottom: 16px;
}
.sidebar-card .project-pill-row {
  gap: 8px;
}
.sidebar-list {
  list-style: none;
  padding: 0;
  margin: 0;
}
.sidebar-list li {
  padding: 10px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  font:
    14px/22px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.8);
}
.sidebar-list li:last-child {
  border-bottom: none;
  padding-bottom: 0;
}
.sidebar-list li:first-child {
  padding-top: 0;
}
.highlights-list li {
  position: relative;
  padding-left: 20px;
}
.highlights-list li:before {
  content: '\f00c';
  font-family: 'FontAwesome';
  position: absolute;
  left: 0;
  top: 10px;
  color: #3b82f6;
  font-size: 12px;
}
.sidebar-links {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.sidebar-link {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 16px;
  border-radius: 10px;
  background: rgba(59, 130, 246, 0.15);
  border: 1px solid rgba(59, 130, 246, 0.3);
  color: #11abb0 !important;
  font:
    14px/20px 'opensans-semibold',
    sans-serif;
  transition: background 200ms ease;
}
.sidebar-link:hover {
  background: rgba(59, 130, 246, 0.15);
}
.sidebar-link i {
  font-size: 12px;
  opacity: 0.7;
}

/* CTA Section */
.case-study-cta {
  background: linear-gradient(180deg, #0f0f0f 0%, #111214 100%);
  padding: 72px 0;
  text-align: center;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
.case-study-cta h3 {
  font:
    28px/36px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 12px;
}
.case-study-cta p {
  font:
    16px/26px 'opensans-regular',
    sans-serif;
  color: rgba(255, 255, 255, 0.7);
  margin-bottom: 28px;
}
.cta-buttons {
  display: flex;
  justify-content: center;
  gap: 14px;
  flex-wrap: wrap;
}
.cta-primary {
  background: #11abb0 !important;
  color: #fff !important;
}
.cta-primary:hover {
  background: #0e9499 !important;
}
.cta-secondary {
  background: rgba(255, 255, 255, 0.1) !important;
  color: #fff !important;
}
.cta-secondary:hover {
  background: rgba(255, 255, 255, 0.18) !important;
}

/* ---------------------------------------------------------------------------
   Agent showcase (/projects/ai-agents)

   Sits directly under the hero at full width, because pressing a button is why
   someone opened the page. The card carries a name, a line, the call flow and
   one number; everything else is behind a disclosure so four agents still fit
   on a screen.
   --------------------------------------------------------------------------- */

.agent-gallery {
  padding: 40px 0 8px 0;
}
.agent-gallery-head {
  margin-bottom: 22px;
}
.agent-gallery h2 {
  font:
    22px/30px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin-bottom: 8px;
}
.agent-gallery-sub {
  font:
    15px/25px 'opensans-regular',
    sans-serif;
  color: #94a3b8;
  max-width: 70ch;
  margin: 0;
}
.agent-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
}
@media only screen and (min-width: 900px) {
  .agent-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}
.agent-card {
  display: flex;
  flex-direction: column;
  padding: 22px;
  border-radius: 16px;
  background: #1e293b;
  border: 1px solid rgba(255, 255, 255, 0.08);
  transition: border-color 0.2s ease-in-out;
}
.agent-card--active {
  border-color: rgba(59, 130, 246, 0.55);
}

/* Header: identity left, call button right. The button never moves below the
   fold of the card. */
.agent-card-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: 8px;
}
.agent-card-ident {
  min-width: 0;
}
.agent-card-kicker {
  font:
    10px/15px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1.3px;
  color: #60a5fa;
  margin-bottom: 5px;
}
.agent-card-title {
  font:
    18px/25px 'opensans-bold',
    sans-serif;
  color: #fff;
  margin: 0;
}
.agent-card-line {
  font:
    14px/23px 'opensans-regular',
    sans-serif;
  color: #cbd5e1;
  margin-bottom: 16px;
}

/* Call flow. A chain, not a diagram: it has to read at a glance. */
.agent-flow {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 5px;
  list-style: none;
  margin: 0 0 14px 0;
  padding: 11px 13px;
  border-radius: 10px;
  background: #0f172a;
  border: 1px solid rgba(255, 255, 255, 0.06);
}
.agent-flow-step {
  font:
    11px/17px 'opensans-semibold',
    sans-serif;
  color: #e2e8f0;
  margin: 0;
}
.agent-flow-step:not(:last-child):after {
  content: '\2192';
  margin-left: 5px;
  color: #475569;
}

.agent-card-foot {
  margin-top: auto;
}
.agent-outcome {
  margin: 0 0 4px 0;
  font:
    13px/20px 'opensans-regular',
    sans-serif;
  color: #94a3b8;
}
.agent-outcome strong {
  font:
    16px/20px 'opensans-bold',
    sans-serif;
  color: #3b82f6;
}
.agent-try-it {
  margin: 0;
  font:
    12px/19px 'opensans-regular',
    sans-serif;
  color: #94a3b8;
  font-style: italic;
}

/* Depth on demand */
.agent-details {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid rgba(255, 255, 255, 0.08);
}
.agent-details > summary {
  cursor: pointer;
  list-style: none;
  font:
    11px/16px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1.3px;
  color: #94a3b8;
}
.agent-details > summary::-webkit-details-marker {
  display: none;
}
.agent-details > summary:before {
  content: '+ ';
  color: #60a5fa;
}
.agent-details[open] > summary:before {
  content: '\2212 ';
}
.agent-details > summary:hover {
  color: #e2e8f0;
}
.agent-guard-list {
  list-style: none;
  margin: 12px 0 0 0;
  padding: 0;
}
.agent-guard-list li {
  position: relative;
  padding-left: 18px;
  margin-bottom: 8px;
  font:
    13px/21px 'opensans-regular',
    sans-serif;
  color: #cbd5e1;
}
.agent-guard-list li:before {
  content: '\2715';
  position: absolute;
  left: 0;
  top: 0;
  color: #60a5fa;
  font-size: 10px;
  line-height: 21px;
}
.agent-tools {
  margin-top: 12px;
}

/* Buttons */
.agent-call-button,
.agent-hangup-button,
.agent-close-button {
  flex: none;
  margin-bottom: 0;
  font:
    12px/18px 'opensans-bold',
    sans-serif;
  padding: 9px 15px;
  border-radius: 999px;
  white-space: nowrap;
}
.agent-call-button {
  background: #3b82f6;
}
.agent-call-button:hover {
  background: #2f6fd6;
}
.agent-hangup-button {
  background: rgba(239, 68, 68, 0.18);
  color: #fecaca;
}
.agent-hangup-button:hover {
  background: rgba(239, 68, 68, 0.3);
  color: #fff;
}
.agent-close-button {
  background: rgba(255, 255, 255, 0.1);
}
.agent-close-button:hover {
  background: rgba(255, 255, 255, 0.18);
}

/* Live panel. Replaces the flow chain so the card does not grow mid-call. */
.agent-panel {
  margin-top: auto;
  border-radius: 10px;
  background: #0f172a;
  border: 1px solid rgba(59, 130, 246, 0.28);
  padding: 14px;
}
.agent-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}
.agent-phase {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font:
    11px/17px 'opensans-bold',
    sans-serif;
  text-transform: uppercase;
  letter-spacing: 1.2px;
  color: #94a3b8;
}
.agent-phase-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #64748b;
  flex: none;
}
.agent-phase--live {
  color: #86efac;
}
.agent-phase--live .agent-phase-dot {
  background: #22c55e;
  animation: agent-pulse 1.6s ease-in-out infinite;
}
.agent-phase--error {
  color: #fca5a5;
}
.agent-phase--error .agent-phase-dot {
  background: #ef4444;
}
.agent-phase--connecting .agent-phase-dot,
.agent-phase--permission .agent-phase-dot {
  background: #3b82f6;
  animation: agent-pulse 1.6s ease-in-out infinite;
}
@keyframes agent-pulse {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.25;
  }
}
/* A pulsing dot is decoration; nobody needs it to read the panel. */
@media (prefers-reduced-motion: reduce) {
  .agent-phase-dot {
    animation: none !important;
  }
  .agent-card {
    transition: none;
  }
}
.agent-timer {
  font:
    13px/18px 'opensans-semibold',
    sans-serif;
  color: #e2e8f0;
  font-variant-numeric: tabular-nums;
}
.agent-panel-problem {
  margin: 0 0 12px 0;
  font:
    13px/21px 'opensans-regular',
    sans-serif;
  color: #fecaca;
}
.agent-panel-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 9px;
}
