/* styles.css 
   Project: 
   Author: 
   Date: 
	
*/

/*google font*/

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;700;800&family=Source+Serif+4:wght@400;600&display=swap');
/*main css*/

* {
  box-sizing: border-box;
}

img, video {
  width: 100%;
  display: block;
}

audio {
  display: block;
}

/*link style*/

a {
  text-decoration: none;
  color: darkred;
}

a:visited {
  color: gray;
}

a:hover, a:active {
  color: darkgray;
} 

body, html {
  font-family: 'Lato', sans-serif; 
}

h1, h2, h3, .pullquote {
  font-family: 'Open Sans', sans-serif;

}

header {
  width: 100%;
  position: sticky;
  top: 0;
  z-index: -1;
  background-color: black;
  /*max-height: 600px;*/
}

header img {
  /* this opacity makes the header image dark so you can read the headline text more easily. remove the opacity if you do not have your headline on top of the image.*/
  opacity: 0.6;
}

.title1 {
  position: absolute;
  width: 100%;
  top: 20%;
  color: white;
  text-align: center;
  padding: 3%;
}

.title1 h1 {
  font-size: 5.1em;
  margin-bottom: -4px;
}

.title1 h2 {
  font-size: 2em;
}

.title1 h3 {
  margin-top: 10%;
  font-size: 1.2em;
  font-style: italic;
}

.title2 {
  width: 100%;
  color: darkslategray;
  text-align: center;
  padding: 3% 10%;
}

.title2 h1 {
  font-size: 4.7em;
  margin-bottom: -4px;
}

.title2 h2 {
  font-size: 2em;
}

.title2 h3 {
  margin-top: 10%;
  margin-bottom: 0;
  font-size: 1.1em;
  font-style: italic;
}

.content {
  width: 100%;
  background-color: white;

}

.maintext {
  max-width: 640px;
  margin: auto;
  color: darkslategray;
  font-size: 1.2em;
  line-height: 1.7em;
  text-align: justify;
  padding: 1%;
}

.pullquote {
  width: 50%;
  font-size: 1.4em;
  line-height: 1.6em;
  font-style: italic;
  text-align: left;
}

.name {
  font-size: 0.7em;
  text-align: center;
  line-height: 0.1em;
  padding-bottom: 30px;
}

.left {
  float: left;
  padding-right: 20px;
  margin-left: -40px;
}

.right {
  float: right;
  padding-left: 20px;
  margin-right: -40px;
}

.floatingpic {
  width: 50%;
}

.floatingpic audio {
  width: 100%;
  margin-top: 5px;
}

.floatingcap {
  margin-top: 0px;
  font-size:  0.8em;
  text-align: center;
}

.sectionhead {
  text-align: center;
  color: darkslategray;
}

.bigphoto {
  position: relative;
}

.photocaption {
  position: absolute;
  bottom: 0px;
  width: 100%;
  padding-left: 1%;
  color: white;
  background-color: rgba(0,0,0,0.4);
}

.sidebyside {
  display: flex;
}

.photoleft {
    flex-direction: row;
}

.photoright {
    flex-direction: row-reverse;
}

.sidephoto {
  flex: 2;
}

.sidecaption {
  flex: 1;
  background-color: black;
  color: white;
  font-size: 1.2em;
  display: grid;
  align-items: center;
  text-align: center;
  padding: 20px 40px;
}

.photogrid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-gap: 5px;
}

.gridpic {
  position: relative;
}

.gridpic .photocaption {
  display: none;
}

.cycle-slideshow {
  max-width: 700px;
  margin: auto;
}

.knightlab {
  max-width: 700px;
  margin: auto;
}

.slidewrapper {
  position: relative;
}

.slides {
  position: sticky;
  position: -webkit-sticky;
  top: 0px;
  z-index: -1;
}

.bottomcredit {
  position: absolute;
  right: 0px;
  bottom: 0px;
  background-color: rgba(255, 255, 255, 0.2);
  padding: 10px;
  color: white;
}

.backgroundimage {
  height: 100vh;
  position: sticky;
  position: -webkit-sticky;
  top: 0px;
  z-index: -1;
}

.backgroundimage img {
  height: 100%;
  object-fit: cover;
}

.textbox {
  max-width: 640px;
  margin: 100vh auto;
  background-color: white;
  color: darkslategray;  
  padding: 20px;
}

.googlemap {
  overflow:hidden;
  padding-bottom:56.25%;
  position:relative;
  height:0;
  max-width: 700px;
  margin: auto;
}

.googlemap iframe {
  left:0;
  top:0;
  height:100%;
  width:100%;
  position:absolute;
}

.youtube {
  max-width: 700px;
  margin: auto;
}

.responsivecontainer {
  position: relative; 
  padding-bottom: 56.25%; 
  padding-top: 30px; 
  height: 0; 
  overflow: hidden;
}

.responsivecontainer iframe, .responsivecontainer object, .responsivecontainer embed { 
  position: absolute; 
  top: 0; 
  left: 0; 
  width: 100%; 
  height: 100%;
}

.clickhere {
  font-style: italic;
  font-size: 0.7em;
  text-align: right;
  padding-right: 1%;
}

.voxpop {
  max-width: 700px;
  margin: auto;
}

.voxgrid {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr 1fr;
  grid-gap: 10px;
}

.person {
  border-radius: 5px;
  box-shadow: 2px 3px 3px lightslategrey;
  overflow: hidden;
}

.person audio {
  width: 100%;
  display: block;
}

.headshot {
  position: relative;
  text-align: center;

}

.popup {
  cursor: pointer;
}

.infographic {
  max-width: 700px;
  margin: auto;
}

/* Slideshow container */
.slideshow-container {
  max-width: 1000px;
  position: relative;
  margin: auto;
}

/* Hide the images by default */
.mySlides {
    display: none;
}

.mySlides img {
    width: 100%;
}

/* Next & previous buttons */
.prev, .next {
  cursor: pointer;
  position: absolute;
  top: 50%;
  width: auto;
  margin-top: -22px;
  padding: 16px;
  color: white;
  font-weight: bold;
  font-size: 18px;
  transition: 0.6s ease;
  border-radius: 0 3px 3px 0;
}

/* Position the "next button" to the right */
.next {
  right: 0;
  border-radius: 3px 0 0 3px;
}

/* On hover, add a black background color with a little bit see-through */
.prev:hover, .next:hover {
  background-color: rgba(0,0,0,0.8);
}

/* Caption text */
.slidetext {
  color: #f2f2f2;
  font-size: 15px;
  padding: 12px;
  position: absolute;
  bottom: 0px;
  width: 100%;
  text-align: center;
  background-color: rgba(0, 0, 0, 0.7);
}

/* Number text (1/3 etc) */
.numbertext {
  color: #f2f2f2;
  font-size: 12px;
  padding: 8px 12px;
  position: absolute;
  top: 0;
}

/* The dots/bullets/indicators */
.dots {
  margin-top: 10px;
  width: 100%;
  display: flex;
  justify-content: center;
}

.dot {
  cursor: pointer;
  height: 15px;
  width: 15px;
  margin: 0 2px;
  background-color: #bbb;
  border-radius: 50%;
  display: inline-block;
  transition: background-color 0.6s ease;
  text-align: center;
}

.active, .dot:hover {
  background-color: #717171;
}

 
.fade {
  -webkit-animation-name: fade;
  -webkit-animation-duration: 1.5s;
  animation-name: fade;
  animation-duration: 1.5s;
}

@-webkit-keyframes fade {
  from {opacity: .4} 
  to {opacity: 1}
}

@keyframes fade {
  from {opacity: .4} 
  to {opacity: 1}
}


/*footer */

footer {
  background-color: black;
  color: white;
  padding: 1%;
  text-align: right;
}

/*popup modal*/

.overlay {
  position: fixed;
  top: 0px;
  left: 0px;
  height: 100%;
  width: 100%;
  background-color: rgba(0, 0, 0, 0.9);
  overflow-y: scroll;
  display: none;
  z-index:  10;
}

.modal {
  width: 70%;
  margin: 2% auto;
}

.closer {
  position: absolute;
  right: 1vh;
  top:  1vh;
  width: 10%;
  cursor: pointer;
}

/*media query for responsive design */

@media only screen and (max-width: 900px) {

  .title1 {
    top: 5%;
  }

  .title1 h1 {
    font-size: 3.5em;
  }

  .title1 h2 {
    font-size: 1.5em
  }

  .title1 h3 {
    font-size: 1.1em;
  }

}


@media only screen and (max-width: 800px) {

  .pullquote {
    width: 100%;
    margin: 0px;
    padding: 0px;
    text-align: center;
    display: none; /* remove this line if you want the pullquotes to display on mobile*/ 
  }

  .left, .right {
    margin: 0px;
    padding: 10px;
  }

  .floatingpic {
    width:  100%;
    margin: 0px;
    padding:  0px;
  }

  .popup {
    margin-bottom: 15px;
  }

  .popup .floatingcap {
    display: none;
  }  

}


@media only screen and (max-width: 640px) {

  .title1 {
    top: 1%;
  }

  .title1 h1 {
    font-size: 3em;
  }

  .title1 h2 {
    display: none;
  }

  .title1 h3 {
    font-size: 0.9em;
  }

  .title2 h1 {
    font-size: 2em;
  }

  .title2 h2 {
    font-size: 1.3em;
  }

  .title2 h3 {
    font-size: 1em;
  }

  .maintext {
    font-size: 1.4em;
    line-height: 1.6em;
    text-align: left;
    margin: 0px 15px;
  }

  .voxgrid {
    grid-template-columns: 1fr 1fr;
  }

  .person audio {
    background-color: black;  
  }

  .modal {
    width: 97%;
    margin: 10% auto;
  }

  .sidebyside {
    display: block;
  }

  .sidecaption {
    font-size: 1em;
    padding: 10px 20px;
  }

  .textbox {
    margin: 100vh 20px;
  }

}

.storymap-block {
  max-width: 900px;
  margin: 40px auto;
  padding: 0 15px;
}

.storymap-wrap {
  position: relative;
  width: 100%;
  height: 70vh;
  min-height: 500px;
  max-height: 700px;
}

.storymap-wrap iframe {
  width: 100%;
  height: 100%;
  border: 0;
  border-radius: 4px;
}

/* Mobile */
@media (max-width: 768px) {
  .storymap-wrap {
    height: 60vh;
    min-height: 420px;
  }
}

.placeholder-map {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #eee;
  color: #333;
  text-align: center;
}


/* slideshow sizing */
.slideshow-container {
  max-width: 900px;
  margin: auto;
}

/* image cleaner fit */
.mySlides img {
  width: 100%;
  max-height: 70vh;
  object-fit: contain;
  background: #111;
}

/* caption below image */
.slidetext {
  position: static;
  background: #f5f5f5;
  color: #222;
  padding: 16px 20px;
  font-size: 18px;
  line-height: 1.55;
  text-align: left;
}

/* remove overlap */
.numbertext {
  z-index: 5;
}

/* mobile */
@media (max-width: 768px) {
  .mySlides img {
    max-height: 55vh;
  }

  .slidetext {
  font-size: 16px;
  }
}

.video-placeholder {
  width: 100%;
  max-width: 1100px;
  margin: 70px auto;
  padding: 0 30px;
}

.video-box {
  width: 100%;
  background: #111;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 18px 40px rgba(0,0,0,.14);
}

.video-box video {
  display: block;
  width: 100%;
  height: auto;
}

@media (max-width: 768px) {
  .video-placeholder {
    padding: 0 16px;
    margin: 55px auto;
  }
}

@media (max-width: 768px) {
  .video-inner {
    min-height: 320px;
  }

  .video-label {
    font-size: 22px;
  }

  .video-note {
    font-size: 16px;
  }
}


.tableau-section {
  width: 100%;
  max-width: 1200px;
  margin: 40px auto 15px auto;
  padding: 0 20px;
  text-align: center;
}

.tableauPlaceholder {
  margin: 0 auto;
}

.tableauViz {
  width: 100%;
}

@media (max-width: 768px) {
  .tableau-section {
    margin: 40px auto;
    padding: 0 10px;
  }
}

.map-section {
  width: 100%;
  max-width: 1150px;
  margin: 55px auto;
  padding: 0 20px;
}

.map-wrap {
  position: relative;
  width: 100%;
  height: 700px;
  overflow: hidden;
  border-radius: 6px;
}

.map-wrap iframe {
  width: 100%;
  height: 100%;
  border: 0;
}

@media (max-width: 768px) {
  .map-wrap {
    height: 520px;
  }

  .map-section {
    margin: 35px auto;
    padding: 0 10px;
  }
}

.hero-video {
  position: relative;
  width: 100%;
  height: 100vh;
  min-height: 700px;
  overflow: hidden;
  background: black;
}

.hero-video video {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.35);
}


.title1 {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 90%;
  max-width: 1000px;
  text-align: center;
  color: white;
  z-index: 10;
}

.title1 h1 {
  margin: 0 0 18px 0;
  line-height: 1.05;
}

.title1 h2 {
  margin: 0 0 22px 0;
  line-height: 1.3;
}

.title1 h3 {
  margin: 0;
  line-height: 1.2;
  font-style: italic;
}

@media (max-width: 768px) {
  .title1 {
    width: 92%;
    top: 50%;
  }

  .title1 h1 {
    margin-bottom: 14px;
  }

  .title1 h2 {
    margin-bottom: 18px;
  }
}


.inlinephoto {
  max-width: 900px;
  margin: 45px auto;
  padding: 0 20px;
}

.inlinephoto img {
  width: 100%;
  display: block;
  border-radius: 4px;
}

.inlinecaption {
  margin-top: 10px;
}

.inlinecaption p {
  font-size: 15px;
  line-height: 1.45;
  color: #555;
}


.leadphoto {
  width: 100%;
  margin: 35px 0 45px 0;
}

.leadphoto img {
  width: 100%;
  display: block;
}

.leadphoto .inlinecaption {
  max-width: 900px;
  margin: 12px auto 0 auto;
  padding: 0 20px;
}


body, html {
  font-family: 'Source Serif 4', serif;
  color: #222;
}

body {
  background: #fcfcfa;
}

h1, h2, h3, .pullquote, .sectionhead,
.title1 h1, .title1 h2, .title1 h3,
.title2 h1, .title2 h2, .title2 h3 {
  font-family: 'Inter', sans-serif;
}

.maintext {
  color: #222;
  font-size: 1.28em;
  line-height: 1.78em;
}

.title1 h1 {
  font-weight: 800;
  letter-spacing: -0.04em;
}

.title1 h2 {
  font-weight: 700;
  letter-spacing: -0.02em;
}

.title1 h3 {
  font-weight: 600;
  letter-spacing: .03em;
}

.sectionhead {
  font-weight: 800;
  letter-spacing: .08em;
  font-size: 1.1em;
  margin-top: 60px;
  margin-bottom: 30px;
}

a {
  color: #7a1f1f;
}

a:hover {
  color: #4d1111;
}

.inlinecaption p,
.photocaption p,
.slidetext {
  font-family: 'Inter', sans-serif;
  font-size: 14px;
  line-height: 1.45;
  color: #666;
}

.hero-video {
  position: relative;
  overflow: hidden;
}

.hero-video video {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.28);
}

/* MOBILE — reduce second headline under hero video */

@media (max-width: 768px) {

  .title2 h1 {
    font-size: 3.3em;
    line-height: 1.02;
    letter-spacing: -0.03em;
    margin-bottom: 8px;
  }

  .title2 h2 {
    font-size: 1.55em;
    line-height: 1.2;
  }

  .title2 h3 {
    margin-top: 26px;
  }

}

/* MOBILE — add breathing room below drone shot */

@media (max-width: 768px) {

  .title2 {
    padding-top: 34px;
  }

}

/* Keep 2nd headline on one line across mobile/tablet */

.title2 h1 {
  white-space: nowrap;
  font-size: clamp(42px, 8vw, 74px);
  line-height: 1.05;
  letter-spacing: -0.02em;
}

/* Smaller phones */
@media (max-width: 480px) {
  .title2 h1 {
    font-size: clamp(34px, 9vw, 42px);
  }
}


.author-bio {
  text-align: center;
  margin-top: 26px;
}

.author-bio a {
  display: inline-block;
}

.author-bio img {
  width: 84px;
  height: 84px;
  border-radius: 50%;
  object-fit: cover;
  display: block;
  margin: 0 auto 14px auto;
  box-shadow: 0 8px 18px rgba(0,0,0,.14);
  transition: transform .25s ease;
}

.author-bio img:hover {
  transform: scale(1.04);
}

.author-bio h3 {
  margin: 0;
}

@media (max-width: 768px) {
  .author-bio img {
    width: 72px;
    height: 72px;
  }
}


.author-bio img {
  width: 84px;
  height: 84px;
  object-fit: cover;
  border-radius: 18px;
  transition: transform .25s ease;
}

.author-bio img:hover {
  transform: scale(1.04);
}

/* SLIDESHOW REFINEMENT */

.slideshow {
  max-width: 920px;
  margin: 70px auto;
}

.slideshow-container {
  background: transparent;
  box-shadow: none;
}

.mySlides img {
  width: 100%;
  display: block;
}

.slidetext {
  background: transparent;
  color: #555;
  font-size: 15px;
  line-height: 1.45;
  padding: 14px 0 0 0;
  font-family: Georgia, serif;
}

.prev,
.next {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: rgba(0,0,0,.55);
  color: white;
  font-size: 20px;
  line-height: 42px;
  text-align: center;
  transition: background .2s ease;
}

.prev:hover,
.next:hover {
  background: rgba(0,0,0,.8);
}

.dot {
  width: 8px;
  height: 8px;
  margin: 0 4px;
  background: #bbb;
}

.active,
.dot:hover {
  background: #333;
}



/* Larger carousel captions */

.slidetext {
  font-size: 19px;
  line-height: 1.55;
}

/* Mobile — add subtle page margins */

@media (max-width: 768px) {

  .maintext,
  .title2,
  .slideshow,
  .inlinephoto,
  .leadphoto,
  .photogrid {
    padding-left: 16px;
    padding-right: 16px;
  }

}

/* Refined section subheads */

.sectionhead {
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: 0.03em;
}

@media (max-width: 768px) {
  .sectionhead {
    font-size: 31px;
  }
}

/* Photogrid captions — clearer and readable */

.photocaption {
  background: rgba(0, 0, 0, 0.72);
  color: #ffffff;
  padding: 12px 14px;
}

.photocaption p {
  font-size: 14px;
  line-height: 1.45;
  font-family: Georgia, serif;
  margin: 0;
  text-shadow: none;
}

/* Mobile boost */

@media (max-width: 768px) {
  .photocaption {
    padding: 10px 12px;
  }

  .photocaption p {
    font-size: 15px;
    line-height: 1.45;
  }
}

/* Brighter photogrid captions */

.photocaption {
  background: rgba(0, 0, 0, 0.82);
  color: #ffffff;
}

.photocaption p {
  color: #ffffff;
  font-weight: 500;
  text-shadow: 0 1px 2px rgba(0,0,0,.45);
}

/* Desktop photogrid captions larger + clearer */

@media (min-width: 769px) {

  .photocaption {
    padding: 16px 18px;
  }

  .photocaption p {
    font-size: 17px;
    line-height: 1.45;
    font-weight: 500;
  }

}

/* FULL PAGE MAP SPOTLIGHT */

body::before {
  content: "";
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0);
  pointer-events: none;
  transition: background .6s ease;
  z-index: 90;
}

body.map-active::before {
  background: rgba(0,0,0,.82);
}

.map-focus-section {
  position: relative;
  z-index: 100;
  margin: 90px 0;
}

.map-focus-inner {
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 20px;
  transform: scale(1);
  transition: transform .45s ease;
}

body.map-active .map-focus-inner {
  transform: scale(1.02);
}

.map-focus-inner iframe {
  display: block;
  width: 100%;
  border: none;
  border-radius: 8px;
  box-shadow: 0 22px 60px rgba(0,0,0,.45);
}

.map-kicker {
  position: relative;
  z-index: 101;
  text-align: center;
  color: #777;
  margin-bottom: 18px;
  transition: color .4s ease;
}

body.map-active .map-kicker {
  color: rgba(255,255,255,.92);
}








