

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



:root {

  --bg: #07121d;

  --surface: #0e2030;

  --surface-2: #142b3b;

  --border: #294251;

  --text: #edf5f5;

  --muted: #a4b8c1;

  --teal: #58e2c3;

  --teal-dark: #123c3c;

  --navy: #06101a;

  --font: 'DM Sans', Arial, sans-serif;

  --display: 'Space Grotesk', Arial, sans-serif;

}



* {

  box-sizing: border-box;

}



html {

  scroll-behavior: smooth;

}



body {

  margin: 0;

  background: var(--bg);

  color: var(--text);

  font-family: var(--font);

  line-height: 1.65;

}



button, input, select {

  font: inherit;

}



button {

  cursor: pointer;

}



a {

  color: inherit;

  text-decoration: none;

}



button:focus-visible,

a:focus-visible,

input:focus-visible,

select:focus-visible {

  outline: 3px solid var(--teal);

  outline-offset: 3px;

}



h1, h2, h3, h4 {

  font-family: var(--display);

  line-height: 1.15;

  letter-spacing: -0.035em;

}



h1, h2, h3, p {

  margin-top: 0;

}



h2 {

  font-size: clamp(2rem, 4vw, 3.5rem);

}



h3 {

  font-size: 1.25rem;

}



p {

  color: var(--muted);

}



.site-header {

  min-height: 84px;

  padding: 16px 5%;

  display: flex;

  align-items: center;

  justify-content: space-between;

  gap: 24px;

  border-bottom: 1px solid var(--border);

  background: rgba(7, 18, 29, 0.96);

  position: sticky;

  top: 0;

  z-index: 50;

  backdrop-filter: blur(16px);

}



.logo {

  font-family: var(--display);

  font-weight: 700;

  font-size: 1.6rem;

  letter-spacing: -0.06em;

  white-space: nowrap;

}



.logo span {

  color: var(--teal);

}



.site-header nav {

  display: flex;

  align-items: center;

  gap: 32px;

}



.site-header nav a,

.footer-links a {

  font-size: 0.9rem;

  color: var(--muted);

  transition: color 0.2s;

}



.site-header nav a:hover,

.footer-links a:hover {

  color: var(--teal);

}



.header-action {

  border: 1px solid var(--border);

  padding: 10px 18px;

  border-radius: 6px;

  font-size: 0.85rem;

  font-weight: 700;

}



.header-action:hover {

  border-color: var(--teal);

}



.hero {

  min-height: 620px;

  display: grid;

  grid-template-columns: 1.1fr 0.9fr;

  align-items: center;

  gap: 30px;

  padding: 90px 7%;

  position: relative;

  overflow: hidden;

  background:

    radial-gradient(ellipse at 80% 40%, rgba(31, 139, 129, 0.19), transparent 48%),

    linear-gradient(145deg, #091a2a, #07121d 65%);

}



.hero-content {

  position: relative;

  z-index: 2;

  max-width: 680px;

}



.eyebrow {

  color: var(--teal);

  font-size: 0.76rem;

  font-weight: 700;

  letter-spacing: 0.19em;

  text-transform: uppercase;

  margin-bottom: 20px;

}



.hero h1 {

  font-size: clamp(3.3rem, 6vw, 6.3rem);

  letter-spacing: -0.075em;

  margin-bottom: 26px;

}



.hero h1 em {

  font-style: normal;

  color: var(--teal);

}



.hero-description {

  font-size: 1.12rem;

  max-width: 570px;

  margin-bottom: 32px;

}



.hero-actions {

  display: flex;

  flex-wrap: wrap;

  gap: 12px;

}



.button {

  border-radius: 6px;

  padding: 13px 22px;

  font-size: 0.9rem;

  font-weight: 700;

  display: inline-flex;

  align-items: center;

  justify-content: center;

  gap: 8px;

  border: 1px solid transparent;

  transition: transform 0.2s, *background* 0.2s, border-color 0.2s;

}



.button:hover:not(:disabled) {

  transform: translateY(-2px);

}



.button:disabled {

  opacity: 0.45;

  cursor: not-allowed;

}



.button.primary {

  background: var(--teal);

  color: #06251f;

}



.button.primary:hover {

  background: #8af4d9;

}



.button.secondary {

  color: var(--text);

  border-color: var(--border);

  background: rgba(255, 255, 255, 0.035);

}



.button.secondary:hover {

  border-color: var(--teal);

}



.hero-note {

  font-size: 0.78rem;

  margin-top: 26px;

  max-width: 470px;

}



.hero-art {

  height: 420px;

  position: relative;

  display: grid;

  place-items: center;

}



.future-number {

  font-family: var(--display);

  font-weight: 700;

  font-size: clamp(6rem, 14vw, 13rem);

  letter-spacing: -0.12em;

  color: rgba(88, 226, 195, 0.14);

  text-shadow: 0 0 90px rgba(88, 226, 195, 0.18);

  transform: rotate(-9deg);

}



.orbit {

  position: absolute;

  border: 1px solid rgba(88, 226, 195, 0.19);

  border-radius: 50%;

}



.orbit-one {

  width: 330px;

  height: 330px;

}



.orbit-two {

  width: 440px;

  height: 440px;

  border-style: dashed;

}



.floating-card {

  position: absolute;

  background: rgba(17, 42, 53, 0.9);

  border: 1px solid rgba(88, 226, 195, 0.3);

  border-radius: 8px;

  padding: 14px 18px;

  font-family: var(--display);

  font-size: 0.7rem;

  letter-spacing: 0.1em;

  box-shadow: 0 16px 45px rgba(0, 0, 0, 0.25);

}



.card-one {

  top: 18%;

  right: 0;

}



.card-two {

  bottom: 15%;

  left: 0;

}



.signal {

  display: inline-block;

  width: 7px;

  height: 7px;

  border-radius: 50%;

  background: var(--teal);

  margin-right: 7px;

}



.stats-strip {

  display: grid;

  grid-template-columns: repeat(4, 1fr);

  border-top: 1px solid var(--border);

  border-bottom: 1px solid var(--border);

  background: var(--surface);

}



.stats-strip div {

  padding: 28px 20px;

  text-align: center;

  border-right: 1px solid var(--border);

}



.stats-strip div:last-child {

  border-right: 0;

}



.stats-strip strong {

  display: block;

  font-family: var(--display);

  font-size: 1.8rem;

  color: var(--teal);

}



.stats-strip span {

  color: var(--muted);

  font-size: 0.8rem;

}



.section {

  padding: 100px 7%;

  scroll-margin-top: 84px;

}



.section-heading {

  display: flex;

  justify-content: space-between;

  align-items: end;

  gap: 25px;

  margin-bottom: 36px;

}



.section-heading h2 {

  margin-bottom: 12px;

}



.search-panel {

  background: var(--surface);

  border: 1px solid var(--border);

  padding: 24px;

  border-radius: 12px;

  display: grid;

  grid-template-columns: 2fr 1fr 1fr auto;

  align-items: end;

  gap: 15px;

}



.field {

  display: flex;

  flex-direction: column;

  gap: 8px;

}



.field span {

  font-size: 0.8rem;

  color: var(--muted);

}



.field input,

.field select {

  width: 100%;

  min-height: 48px;

  padding: 12px 14px;

  background: var(--bg);

  color: var(--text);

  border: 1px solid var(--border);

  border-radius: 6px;

  outline: none;

}



.field input:focus,

.field select:focus {

  border-color: var(--teal);

}



.saved-filter {

  min-height: 48px;

  display: flex;

  align-items: center;

  gap: 8px;

  font-size: 0.83rem;

  white-space: nowrap;

}



input[type="radio"],

input[type="checkbox"] {

  accent-color: var(--teal);

}



.results-bar {

  display: flex;

  justify-content: space-between;

  align-items: center;

  margin: 26px 0 18px;

  color: var(--muted);

  font-size: 0.85rem;

}



.results-bar button {

  color: var(--teal);

  background: none;

  border: 0;

}



.job-grid {

  display: grid;

  grid-template-columns: repeat(3, minmax(0, 1fr));

  gap: 18px;

}



.job-card {

  display: flex;

  flex-direction: column;

  align-items: flex-start;

  text-align: left;

  gap: 12px;

  min-height: 220px;

  padding: 25px;

  border-radius: 10px;

  border: 1px solid var(--border);

  background: var(--surface);

  color: var(--text);

  transition: transform 0.2s, border-color 0.2s, *background* 0.2s;

}



.job-card:hover {

  transform: translateY(-4px);

  border-color: var(--teal);

  background: var(--surface-2);

}



.tag {

  color: var(--teal);

  font-size: 0.72rem;

  font-weight: 700;

}



.category {

  color: var(--muted);

  font-size: 0.72rem;

}



.job-card h3 {

  font-size: 1.35rem;

  margin: 5px 0 20px;

}



.job-card .bottom {

  display: flex;

  align-items: center;

  justify-content: space-between;

  width: 100%;

  margin-top: auto;

  color: var(--muted);

  font-size: 0.8rem;

}



.arrow {

  font-size: 1.4rem;

  color: var(--teal);

}



.empty {

  grid-column: 1 / -1;

  padding: 50px 20px;

  text-align: center;

  background: var(--surface);

  border: 1px solid var(--border);

  border-radius: 10px;

  color: var(--muted);

}



.pagination {

  display: flex;

  justify-content: center;

  align-items: center;

  gap: 25px;

  margin-top: 30px;

}



.discover-section {

  display: grid;

  grid-template-columns: 1fr 1fr;

  gap: 70px;

  align-items: center;

  background: #0b1d2b;

  border-top: 1px solid var(--border);

  border-bottom: 1px solid var(--border);

}



.discover-copy p {

  max-width: 480px;

}



.discover-panel {

  background: var(--surface-2);

  border: 1px solid var(--border);

  padding: 35px;

  border-radius: 12px;

}



.interest-options {

  display: grid;

  gap: 10px;

  margin: 24px 0;

}



.interest-options label {

  display: flex;

  align-items: center;

  gap: 12px;

  padding: 13px 15px;

  background: var(--surface);

  border: 1px solid var(--border);

  border-radius: 7px;

  cursor: pointer;

}



.interest-options label:hover {

  border-color: var(--teal);

}



#match-results {

  margin-top: 20px;

}



.match-result {

  display: block;

  width: 100%;

  text-align: left;

  background: var(--surface);

  border: 1px solid var(--border);

  color: var(--text);

  padding: 12px;

  border-radius: 6px;

  margin: 8px 0;

}



.match-result:hover {

  border-color: var(--teal);

}



.feature-section {

  text-align: center;

}



.feature-grid {

  display: grid;

  grid-template-columns: repeat(3, 1fr);

  gap: 20px;

  margin: 48px 0 35px;

  text-align: left;

}



.feature-grid article {

  padding: 30px;

  border: 1px solid var(--border);

  background: var(--surface);

  border-radius: 10px;

}



.feature-number {

  display: block;

  font-family: var(--display);

  font-size: 2rem;

  color: var(--teal);

  margin-bottom: 20px;

}



.about-section {

  background: var(--surface);

}



.about-section > p {

  max-width: 850px;

}



.about-section h3 {

  margin-top: 42px;

}



.sources {

  display: grid;

  gap: 12px;

  max-width: 850px;

}



.sources a {

  padding: 16px 20px;

  border: 1px solid var(--border);

  border-radius: 7px;

  color: var(--teal);

}



.sources a:hover {

  background: var(--surface-2);

}



.disclaimer,

.mini-note {

  font-size: 0.78rem;

  color: var(--muted);

}



.teaching-section {

  padding-top: 65px;

  padding-bottom: 65px;

  border-bottom: 1px solid var(--border);

}



.teaching-section p {

  max-width: 700px;

}



.site-footer {

  display: flex;

  justify-content: space-between;

  flex-wrap: wrap;

  gap: 30px;

  padding: 50px 7%;

  background: var(--navy);

}



.footer-links {

  display: flex;

  flex-wrap: wrap;

  gap: 22px;

}



.copyright {

  width: 100%;

  font-size: 0.75rem;

  border-top: 1px solid var(--border);

  padding-top: 20px;

}



.site-dialog {

  width: min(760px, calc(100% - 28px));

  max-height: 88vh;

  overflow-y: auto;

  background: var(--surface);

  color: var(--text);

  border: 1px solid #426573;

  border-radius: 14px;

  padding: 42px;

  position: fixed;

}



.site-dialog::backdrop {

  background: rgba(0, 7, 14, 0.82);

  backdrop-filter: blur(5px);

}



.close-dialog {

  position: sticky;

  top: 0;

  float: right;

  background: var(--surface-2);

  color: var(--text);

  border: 1px solid var(--border);

  border-radius: 6px;

  width: 38px;

  height: 38px;

  z-index: 2;

}



.detail-grid {

  display: grid;

  grid-template-columns: 1fr 1fr;

  gap: 15px;

  margin: 25px 0;

}



.detail-grid > div {

  padding: 18px;

  background: var(--surface-2);

  border-radius: 8px;

}



.detail-grid small,

.detail-grid strong {

  display: block;

}



.detail-grid small {

  color: var(--muted);

}



.detail-section {

  margin: 25px 0;

}



.detail-section li {

  margin-bottom: 8px;

  color: var(--muted);

}



.detail-actions {

  display: flex;

  flex-wrap: wrap;

  gap: 12px;

  margin: 30px 0;

}



.external {

  color: var(--teal);

}



.notice {

  background: rgba(88, 226, 195, 0.08);

  border-left: 3px solid var(--teal);

  padding: 14px 18px;

  font-size: 0.82rem;

}



.mission-progress {

  height: 6px;

  border-radius: 20px;

  overflow: hidden;

  background: var(--border);

  margin: 22px 0;

}



.mission-progress > div {

  height: 100%;

  background: var(--teal);

  transition: width 0.3s;

}



.choices {

  display: grid;

  gap: 12px;

  margin: 25px 0;

}



.choice {

  display: flex;

  gap: 12px;

  align-items: flex-start;

  padding: 17px;

  border: 1px solid var(--border);

  border-radius: 8px;

  cursor: pointer;

  background: var(--surface-2);

}



.choice:hover {

  border-color: var(--teal);

}



.feedback,

.mission-report {

  margin-top: 24px;

  padding: 24px;

  border: 1px solid rgba(88, 226, 195, 0.45);

  border-radius: 10px;

  background: rgba(88, 226, 195, 0.06);

}



@media (max-width: 1000px) {

  .search-panel {

    grid-template-columns: 1fr 1fr;

  }



  .job-grid {

    grid-template-columns: repeat(2, minmax(0, 1fr));

  }



  .hero {

    grid-template-columns: 1fr;

  }



  .hero-art {

    height: 240px;

  }



  .discover-section {

    gap: 30px;

  }

}



@media (max-width: 680px) {

  .site-header {

    flex-wrap: wrap;

    gap: 12px;

    padding: 16px 5%;

  }



  .site-header nav {

    order: 3;

    width: 100%;

    justify-content: space-between;

    gap: 10px;

  }



  .site-header nav a {

    font-size: 0.78rem;

  }



  .header-action {

    font-size: 0.75rem;

    padding: 8px;

  }



  .hero {

    padding: 65px 6%;

    min-height: auto;

  }



  .hero h1 {

    font-size: 3.25rem;

  }



  .hero-art {

    display: none;

  }



  .stats-strip {

    grid-template-columns: 1fr 1fr;

  }



  .stats-strip div:nth-child(2) {

    border-right: 0;

  }



  .section {

    padding: 65px 6%;

  }



  .section-heading {

    align-items: flex-start;

    flex-direction: column;

  }



  .search-panel,

  .job-grid,

  .discover-section,

  .feature-grid,

  .detail-grid {

    grid-template-columns: 1fr;

  }



  .discover-panel {

    padding: 22px;

  }



  .site-dialog {

    padding: 22px;

  }



  .site-footer {

    flex-direction: column;

  }

}



@media (prefers-reduced-motion: reduce) {

  html {

    scroll-behavior: auto;

  }



  *,

  *::before,

  *::after {

    transition-duration: 0.01ms !important;

    animation-duration: 0.01ms !important;

  }

}



/* JOBS2040 — Stronger section definition */



/* More distinct backgrounds between sections */

#jobs {

  background: #081521;

  border-top: 1px solid #31505d;

  border-bottom: 1px solid #31505d;

}



#discover {

  background:

    radial-gradient(

      ellipse at 85% 50%,

      rgba(51, 160, 144, 0.12),

      transparent 55%

    ),

    #112738;

  border-top: 1px solid #355464;

  border-bottom: 1px solid #355464;

}



.feature-section {

  background: #07121d;

  border-bottom: 1px solid #355464;

}



#about {

  background: #102536;

  border-top: 1px solid #355464;

  border-bottom: 1px solid #355464;

}



#teaching {

  background: #091824;

  border-bottom: 1px solid #355464;

}



/* More generous section spacing */

.section {

  padding-top: 110px;

  padding-bottom: 110px;

}



/* Small accent line above section headings */

.section .eyebrow::before {

  content: "";

  display: inline-block;

  width: 25px;

  height: 2px;

  background: var(--teal);

  vertical-align: middle;

  margin-right: 12px;

}



/* Stronger job board cards */

.job-card {

  background: #112536;

  border-color: #355261;

  border-radius: 12px;

  box-shadow: 0 6px 22px rgba(0, 0, 0, 0.12);

}



.job-card:hover {

  background: #173344;

  border-color: var(--teal);

  box-shadow: 0 12px 35px rgba(0, 0, 0, 0.22);

}



/* Make the search panel stand out */

.search-panel {

  background: #152b3b;

  border-color: #42606e;

  box-shadow: 0 12px 35px rgba(0, 0, 0, 0.12);

}



/* More prominent discovery panel */

.discover-panel {

  background: #193446;

  border-color: #4a6975;

  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.18);

}



/* More structured interactive experience cards */

.feature-grid article {

  background: #102536;

  border-color: #355261;

  border-top: 3px solid var(--teal);

  border-radius: 10px;

  padding: 34px;

}



/* Research links feel more like resources */

.sources a {

  background: #152f40;

  border-color: #3c5a69;

  transition: *background* 0.2s, border-color 0.2s;

}



.sources a:hover {

  background: #1b3b4d;

  border-color: var(--teal);

}



/* Responsive spacing */

@media (max-width: 680px) {

  .section {

    padding-top: 72px;

    padding-bottom: 72px;

  }

}



/* JOBS2040 — Layout refinement */



/* Keep content from stretching too far on wide monitors */

.section > :not(.section-heading) {

  max-width: 1320px;

  margin-left: auto;

  margin-right: auto;

}



.section-heading {

  max-width: 1320px;

  margin-left: auto;

  margin-right: auto;

}



/* Better proportions for the career listings */

.job-grid {

  grid-template-columns: repeat(3, minmax(0, 1fr));

  gap: 20px;

}



.job-card {

  min-height: 245px;

  padding: 28px;

  gap: 14px;

}



.job-card h3 {

  font-size: clamp(1.2rem, 1.5vw, 1.5rem);

  line-height: 1.3;

  margin: 8px 0 14px;

}



.job-card .bottom {

  border-top: 1px solid rgba(164, 184, 193, 0.15);

  padding-top: 16px;

}



/* Give the hero content more presence */

.hero {

  min-height: 680px;

  grid-template-columns: 1fr 1fr;

}



.hero-content {

  max-width: 750px;

}



.hero-description {

  font-size: 1.15rem;

  line-height: 1.8;

}



/* Make the 2040 visual feel more integrated */

.hero-art {

  opacity: 0.95;

}



.future-number {

  color: rgba(88, 226, 195, 0.22);

  text-shadow: 0 0 100px rgba(88, 226, 195, 0.12);

}



/* Reduce excessive empty space in informational sections */

#about,

#teaching {

  padding-top: 85px;

  padding-bottom: 85px;

}



#about > p,

#teaching > p {

  max-width: 780px;

}



#about .sources {

  max-width: 780px;

}



/* Make teaching resources feel like a deliberate section */

#teaching {

  background:

    linear-gradient(

      110deg,

      rgba(88, 226, 195, 0.055),

      transparent 65%

    ),

    #091824;

}



/* Responsive layout */

@media (max-width: 1000px) {

  .hero {

    grid-template-columns: 1fr;

    min-height: auto;

  }



  .job-grid {

    grid-template-columns: repeat(2, minmax(0, 1fr));

  }

}



@media (max-width: 680px) {

  .job-grid {

    grid-template-columns: 1fr;

  }



  .job-card {

    min-height: 210px;

    padding: 23px;

  }



  .hero {

    padding: 65px 6%;

  }



  #about,

  #teaching {

    padding-top: 65px;

    padding-bottom: 65px;

  }

}
