@import url("https://use.typekit.net/tzk1uqw.css");
@import url('https://fonts.googleapis.com/css2?family=Inconsolata:wght@200..900&family=Playfair+Display:ital,wght@0,400..900;1,400..900&family=VT323&display=swap');
* {
  box-sizing: border-box;
  margin: 0;
  padding:0;
  font-weight: 300;
}

:root {
  --main-bg: #FBFBFB;
  --main-black: #1B1B1B;
  --color-grey: #D7D7D7;
  --grey-text: #747474;
  --grey-bg: #F5F5F5;
  --main-branding: #FFF08F;
  --san-serif-font: "Elza", "Plus Jakarta Sans", "Albert Sans", "Work Sans", sans-serif;
  --serif-font: "Playfair Display", serif;

  /* Font Sizes and Lineheights */
  --h1: clamp(2.5rem, 2.25rem + 1.32vw, 3rem);

  --accent: clamp(1.125rem, .9rem + .5vw, 1.625rem);
  --textsize: clamp(1rem, 0.95rem + 0.2vw, 1.125rem);
  --smalltext: clamp(0.875rem, 0.8rem + 0.3vw, 1rem);
  --navtext: 1.125rem;

  --lineheight105:105%;
  --lineheight120:120%;
  --lineheight145:145%;
  --lineheight165:165%;

  /* Spacing */
  --outer-margin: 3.75rem; /* 60px */
  --halfgutter: .75rem;
  --gutter: 1.5rem;
  --doublegutter: 3rem;
  --halfgap: 5.5rem;
  --gap: 7.5rem;
  --smallgap: 0.563rem;

  --fullwidth: calc(100dvw - var(--outer-margin)*2);

  --topbottom: 9rem;

}

html, body, a, button {
  
  font-family: var(--san-serif-font);
  font-optical-sizing: auto;

  color: var(--main-black);
  text-decoration: none;
  text-align: left;

  background-color: var(--main-bg);
  border: none;

} 

a:hover, a:focus, button:hover, button:focus, 
.content-container .link:hover, .content-container .link:focus {
  color: var(--main-black);
  transition: all .175s ease-in;
} button:hover, button:focus{ background-color:unset;}

::selection, mark { 
  background-color: var(--main-branding); 
  color: var(--main-black); 
}

hr { 
  border: none;
  height: 1.175px;
  background-color: var(--color-grey);
  width: 820px;
} 

@keyframes fadeIn {
  from { opacity: 0.175; }
  to { opacity: 1; }
} body { animation: fadeIn 2s;}





/* ---------------- MENU / HAMBURGER --------------- */

.nav-container {
  position: fixed;
  height: var(--outer-margin);
  width: 100%;
  z-index: 99;
  display: flex; 
  padding: 0 var(--outer-margin) ;
  background-color: var(--main-bg);
}
nav {
  display: flex;
  justify-content: space-between;
  align-items: center; 
  width: 100%;
} 
nav ul li { 
  float: left; 
  margin-left: var(--gutter);
} 
nav a { font-size: var(--navtext);}

nav a:hover, nav a:focus, 
.link:hover, .link:focus {  background-color: var(--main-branding); }

.hamburger {
  display: flex;
  flex-direction: column;
  gap: var(--smallgap);
  cursor: pointer;

  display: none;
}
.hamburger span {
  display: block;
  height: 1px;
  width: var(--gutter);
  background-color: var(--main-black);
  transition: transform 0.3s ease-in-out; 
}
.hamburger.open span:nth-child(1) {
  transform: rotate(45deg);
  position: relative;
  top: 10px;
}
.hamburger.open span:nth-child(2) {
  transform: rotate(-45deg);
  position: relative;
}





/* ---------------- DEFAULT / TYPE SETTING --------------- */

main {
  padding: var(--topbottom) 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--gap);
}


.flex, .flex-column, .flex48, .flex-column48  {
  display: flex;
  gap: var(--gutter);
}
.flex-column,.flex-column48  { flex-direction: column; }
.flex48, .flex-column48 { gap: var(--doublegutter); }

.contentbox {
  max-width: 820px;
  width: 820px;
  justify-self: center;
  justify-content: center;
}
.highlightbox {
  max-width: 1280px;
  width: 1280px;
  justify-self: center;
  justify-content: center;
}
.fullbox{
  width:100vw;
  margin: 48px 0;
  padding: 192px 0;
}

img, .img { width: 100%; border-radius: var(--gutter);}


.section-container {
  align-items: center;
  gap: var(--gap);
}

.landing {
  padding-top: var(--outer-margin); /* nav-height */
  padding-bottom: 3.5rem; /* gap - num of bottom+top gap */
} 


.content-left { width: 80%; }



h1, .bigtext {

  font-family: var(--serif-font);

  font-size: var(--h1);
  line-height: var(--lineheight145);
  font-weight: 600;
  letter-spacing: -.065rem;
  margin-bottom: var(--gutter);
}

h2, h3, 
p, details {
  font-size: var(--accent);
  line-height: var(--lineheight165);
  color: var(--main-black);
} 

h2 { 
  font-size: var(--accent);
  color: var(--grey-text); 
  letter-spacing: -.01rem; 
  margin-bottom: var(--smallgap);
} 

h3 {
  font-size: var(--textsize);
  letter-spacing: var(--lineheight165);
  color: var(--grey-text); 
  letter-spacing: -.01rem; 
  margin-bottom: var(--halfgutter);
}
hgroup h3 {
  margin-bottom:0;

}


p {
  font-size: var(--textsize);
  line-height: var(--lineheight145);
}

ul li { list-style-type: none;  }


.highlight {
  font-family: var(--serif-font);
  font-size: var(--accent);
  font-weight: 500;
  letter-spacing: .15px;
  line-height: var(--lineheight145);
} 

figcaption, .citation { 
  font-size: var(--smalltext);
  line-height: var(--lineheight145);
}
.citation { 
  color: var(--grey-text);
  transition: all .175s ease-in; 
} .citation:hover, .citation:focus { color: var(--main-black); background-color:unset; }

.mono {
  font-family: "VT323", "Inconsolata", monospace;
  line-height: var(--lineheight105);
}

.footer-links { 
  font-size: var(--accent);
  line-height: var(--lineheight165);
  text-align: right;
} .link { border-bottom: .975px solid var(--main-black); }

.grey { color: var(--grey-text); }
.small { font-size: var(--smalltext);}
.italic { font-style: italic; }
.bold { font-weight: 500; letter-spacing: .015rem; }


.contentbox ul li {
  font-size: var(--textsize);
  list-style-type: disc;
  margin: var(--gutter) 0 0 var(--gutter) ;
  line-height: var(--lineheight145);
}
.contentbox ul li:first-of-type {
  margin-top: 6px;
}

summary::-webkit-details-marker { display: none; } 
summary::before {
  content: "+";
  color: var(--main-black);
  transition: transform 0.3s ease-in-out;
}

details[open] summary::before { transform: rotate(45deg); }
details[open] .sub{ opacity: 0;}

details summary {
  display: flex;   
  flex-direction: row-reverse; 
  justify-content: space-between;
  align-items: center;      
  list-style: none;
  width: 100%;       
}
.details hr {
  margin: 24px 0;
}
details {
  height: fit-content;
  width: 100%;
  cursor: pointer;
} details p { padding: var(--gutter) var(--gutter) 0 ; }


.primarybutton, .secondarybutton {

  display: inline;
  transition: all .15s ease-in;

  font-size: var(--smalltext);
  text-align: center;
  line-height: var(--lineheight120);

  width: 180px;
  height: 50px;
  padding: var(--halfgutter) 0;
  background-color: var(--main-black);
  color: var(--grey-text);
  border: none;
  border-radius: var(--gap); 
  cursor: pointer;
  
} 
.secondarybutton {
  background-color: unset;
  color: var(--grey-text);
  border: 1px solid var(--grey-text);
} 
.primarybutton:hover, .primarybutton:focus { 
  background-color: var(--main-black);
  color: var(--main-bg);
} 
.secondarybutton:hover, .secondarybutton:focus { 
  background-color: var(--main-bg);
  color: var(--main-black);
  border-color: var(--main-black);
} 

#topButton {
  display: none;
  position: fixed;
  bottom: var(--gutter-size);
  right: var(--outer-margin);
  z-index: 99;
  cursor: pointer;
  width: var(--doublegutter);
  height: var(--doublegutter);
  text-align: center;

  color: var(--grey-text);
  background-color: unset;
  font-size: var(--textsize);
  line-height: var(--lineheight120);
  border: 1px solid var(--grey-text);
  border-radius: var(--gap); 
  transition: all .175s ease-in;

} #topButton:hover, #topButton:focus {   
  background-color: var(--main-black);
  color: var(--main-bg);
  border: 1px solid var(--main-bg);
}


/* FullBleed Sections */
#lightgrey { background-color: var(--grey-bg); }
#grey { background-color: var(--color-grey); }
#grey h3 { color: var(--main-black);}
#black { background-color: var(--main-black);}
#black .highlight { color: var(--main-bg); }




/* ---------------- LANDING / OVERVIEW SETTING --------------- */
.intro aside {
  gap: 72px;
}

.contentbox img {
  margin-bottom: var(--halfgutter);
}

.process {
  gap: 96px;
}



/* ---------------- INTRO --------------- */




.fullwidth { width: var(--fullwidth);}









/* --- Process (+Testing) Section --- */
.figurebox figure, .card {
  width: calc(100% / 2 - var(--gutter)); 
  height: auto;
  background-color: var(--grey-bg);
  border-radius: var(--halfgutter);

  align-items: center;
  padding: var(--gutter);
}  
.figurebox aside { width: calc(100% - var(--gutter));}
.test1 .figurebox figure { width: calc(100% / 2 - var(--gutter)); }  

.card-container {
  flex-wrap: wrap;
  gap: var(--halfgutter);
  margin-bottom: var(--halfgutter);
}
.card {
  padding: var(--gutter);
  border: 1px solid var(--color-grey);
} 
.card h3 { margin-bottom: 6px;}
.card p { font-size: var(--smalltext);}


.card-container2 .card {
  width:100%;
  padding:0 var(--doublegutter);

}

.card-container2 .card img {
  max-width:45%;
  border-radius:0;
  margin-bottom: 0;
}




.solution figure img {
  border-radius: var(--halfgutter);
  border: var(--gutter) solid var(--grey-bg);
}

.gif {
  gap: var(--halfgutter);
}

.gif-container {
  gap: 96px;
}

/* --- Solution & Reflection Section --- */

#solution .bigtext {
  margin: 0;
  font-size: var(--h1);
}

#solution aside { gap: var(--halfgutter)}

#solution-gif {
  justify-content: center;
}

#solution-gif .figurebox figure {
  width: auto; height: auto;
  padding: var(--doublegutter);
} 

#solution-gif aside { width: 75%; }

iframe {
  margin-top: var(--halfgutter);
  border-radius: var(--halfgutter);
  width: 100%;
  aspect-ratio: 1.5 / 1;
  height: auto; 
  justify-self: center;
}

#reflection ul li {
  list-style-type: decimal; 
  line-height: var(--lineheight165);
}







/* ---------------- FOOTER  --------------- */

#cycling-word::after {
  content: "|";
  animation: blink 1s ease-in-out infinite;
  padding-left: 2px;
}
@keyframes blink {
  0%   { opacity: 1; }
  50%  { opacity: 0; }
  100% { opacity: 1; }
}


.footer {
  position: relative;
  overflow: hidden;
  padding: 0 var(--outer-margin);
}

footer hr {
  width: 100%;
}
.footer-container {

  width: 100%;
  justify-content: space-between;
  margin: var(--doublegutter) 0 var(--gutter);

  transform: translateY(100px);
  opacity: 0;
  transition: transform 1.2s cubic-bezier(0.25, 1, 0.5, 1), opacity 1.2s ease-out;

} .footer-message { margin-top:var(--doublegutter); }
.footer-drawer-container {
  position: relative;
  margin-top: var(--doublegutter);
}


.drawer-pull {
  width: 100%;
  text-align: center;
  cursor: pointer;
  padding: 1.5rem 0;
  transition: transform 0.3s ease;
}
.pull-line {
  width: var(--halfgap); /* size by MQ */
  height: calc(var(--halfgutter)/2);
  background-color: var(--color-grey);
  margin: 0 auto;
  border-radius: var(--gutter);
  transition: background-color 0.3s, transform 0.3s;
  border-radius: var(--gutter);
}
.drawer-pull:hover .pull-line, .drawer-pull:focus .pull-line {
  background-color: var(--grey-text);
  transform: scale(1.1);
}

.archive-drawer {

  max-height: 0;
  overflow: hidden;
  gap: var(--halfgap);

  background-color: var(--grey-bg);
  box-shadow: 0 -10px 20px rgba(0, 0, 0, 0.004);
  border-radius: var(--gutter);

  transition: max-height 0.7s cubic-bezier(0.25, 1, 0.5, 1);
  will-change: max-height;
  
}
.archive-drawer.open::before {
  content: '';
  position: absolute;
  top: -12px;
  height: 12px;
  background: linear-gradient(to top, rgba(0,0,0,0.05), transparent);
}
.archive-drawer.open {

  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  max-height:calc(100vh - (2 * var(--outer-margin) + 30px));
  height: calc(100vh - (2 * var(--outer-margin) + 30px));
  padding: var(--doublegutter);
  margin-bottom: var(--outer-margin);
  overflow-y: hidden;

}

footer .highlight {
  background-color: var(--main-black);
  color: var(--main-bg);
  padding: 2px var(--halfgutter) 6px;
  border-radius: var(--halfgutter);
} 

.center-quote {
  align-self: center;
  text-align: center;
}

.gallery-grid {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gutter);
  justify-content: center;
  margin-top: var(--gutter);
}

.gallery-grid .gallery-img {
  width: calc(33.333% - var(--gutter));
  max-height: 220px;
  height: auto;
  object-fit: cover;
  border-radius: var(--gutter);
  transition: transform 0.3s ease;
}


footer .highlight {

  font-family: var(--serif-font);
  font-weight: 500;
  font-style: italic;
  letter-spacing: .15px;
  line-height: var(--lineheight105);

}
 .mono {
  font-size: var(--accent);
  color: var(--grey-text);
}
.mono {
  font-family: "VT323", "Inconsolata", monospace;
  line-height: var(--lineheight105);
}
.bold { font-weight: 500; letter-spacing: .015rem; }



/* -------------------- MQ DESKTOP ----------------------- */
@media screen and (-webkit-min-device-pixel-ratio: 0) {
  .contentbox, .highlightbox  {
    margin-left: auto;
    margin-right: auto;
  }
}

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

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

  :root {
    --navtext: 1rem;
  }
  
}
@media only screen and (max-width:1800px)  { }

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

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

  :root {
    --outer-margin:3rem; /* 48px */
    --navtext: 0.875rem; /* 14px */
  }  .nav-container { height: 3.75rem; }

}

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

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

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


/* -------------------- MQ TABLET ----------------------- */

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

  
}

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

  .menu { display: none; }
  .hamburger { display: flex; }

  nav button { font-size: var(--h1); } 
  nav ul {
    flex-direction: column;
    position: absolute;
    top: 3rem; /* Adjust as needed */
    right: 0;
    background-color: var(--main-bg);
    margin-left: unset;
    width: 100%;
    padding-bottom: var(--doublegutter);
  } nav ul li { margin-left: var(--outer-margin); }
  .menu.active {
    display: flex;
    gap: var(--gutter);
    justify-content: center;
    height: calc(100dvh - 1.5rem);
  } .menu.active a {
    font-size: var(--h1); font-weight: 400;
  }

  .footer-container {
    flex-direction: column;
    gap: var(--gutter);
    margin: var(--gutter) 0;
  } .footer-links { text-align: left; align-self: start; }

}

@media only screen and (max-width: 724px) {
   
  :root { --outer-margin:2rem; }

}

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

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

  :root {  --h1: clamp(1.9rem, 1.3rem + 3vw, 2.25rem);
  }
  
}

