@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: #DFDFDF;
  --grey-text: #747474;
  --grey-bg: #EFEFEF;
  --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, 3.75rem);

  --accent: clamp(1.125rem, .9rem + .5vw, 1.625rem);
  --textsize: clamp(1rem, 0.95rem + 0.3vw, 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;

}

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-wrapper .link:hover, .content-wrapper .link:focus {
  color: var(--main-black);
  transition: all .175s ease-in;
}

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

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

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






/* ---------------- MENU / HAMBURGER / SCROLL BAR --------------- */

.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;
}

.content-container ::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track {
  border-radius: var(--gutter);
  background-color: var(--grey-bg);
}
::-webkit-scrollbar-thumb {
  background-color: var(--color-grey); 
  border-radius: var(--gutter);
  transition: background-color 0.3s ease-in-out;
} ::-webkit-scrollbar-thumb:hover { background-color: var(--grey-text); }





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

main { 
  min-height: 100vh; 
  padding: var(--outer-margin);
}

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

img, .img { width: 100%; }
 
h1 {
  font-size: var(--h1);
  line-height: var(--lineheight105);
  font-weight: 400;
  letter-spacing: -.125rem;
}

h2, .divider {
  font-size: var(--accent);
  line-height: var(--lineheight145);
  letter-spacing: -.02rem;
} .divider { color: var(--grey-text); margin-top:-2px; }

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

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

.highlight {

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

}
.caption, .mono {
  font-size: var(--accent);
  color: var(--grey-text);
}
.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; }






/* ---------------- LANDING SETTING --------------- */

.main {

  display: grid;
  grid-template-columns: .375fr .625fr;
  column-gap: var(--gap);

  width: 100%;
  height: calc(100dvh - var(--outer-margin) * 2);
  
}

.preview-container {

  align-self: end;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: var(--smallgap);
  width: 100%;
  height: calc(100dvh - var(--outer-margin) * 2);

  grid-column: 1;
  grid-row: 1;
  background-color: var(--color-grey);
  border-radius: var(--halfgutter);
  background-size: cover;
  background-position: center;

  transition: background-image 0.6s ease-in-out;

} 

.preview-container aside { 
  gap: var(--smallgap);
}
.preview-container p {font-size: var(--textsize);}
.preview-container .mono,
.preview-container .timepng,
.preview-container #time-label {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.15s ease, visibility 0s linear 0s;
}
.preview-container.hide-time .mono,
.preview-container.hide-time .timepng,
.preview-container.hide-time #time-label {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.15s ease, visibility 0s linear 0.15s;
}

h1,  #about p, #project p { max-width: 80%;}

.content-wrapper {

  grid-column: 2;  grid-row: 1;

  width: 100%; height: calc(100dvh - var(--outer-margin) * 2);

  display: flex; flex-direction: column;  
  row-gap: var(--halfgap);
  justify-content: flex-end;

}

.content-wrapper header { gap: var(--doublegutter); }
.timepng{ max-width: 55%; }

.content-container { gap: 32px; }

.content-menu li { 
  float: left; 
  margin-right:var(--gutter); 
  margin-bottom: calc(var(--halfgutter)/2*-1);
}
.content-menu button {
  font-size: var(--accent);
  color: var(--grey-text);
  background-color: transparent;
  transition: color 0.15s ease-in-out;
} .content-menu  button:hover, .content-menu  button:focus, 
.work-button.default-active, .content-menu  button.active { color: var(--main-black); }

.content-container article {
  height: 32vh;
  overflow-y: auto;     /* Show vertical scrollbar if needed */
  overflow-x: hidden;   /* Hide horizontal scrollbar */
  padding-right: var(--halfgutter);
}





/* ---------------- PROJECT SECTION --------------- */

.project-list { gap:32px; }
.project-list li { transition: color 0.3s ease; }
.project-list li {
  position: relative;
  padding-right: var(--doublegutter);
  transition: transform 0.2s ease-in-out;
}
.project-list li::after {

  content: "→"; 
  font-size: var(--accent);

  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);

  opacity: 0;
  transition: opacity 0.3s ease-in-out;

}
.project-list li:hover, .project-list li:focus { transform: translateX(6px); }
.project-list li:hover .project-year, .project-list li:focus .project-year { opacity: 0.4; }
.project-list li:hover::after, .project-list li:focus::after { opacity: 1; }

.project-year {

  font-size: var(--textsize);
  color: var(--grey-text);

  position: absolute;
  right: 10px;
  transition: opacity 0.3s ease-in-out;

}
.project-link img {
  max-width: 120px;
  max-height: 80px;
  border-radius: calc(var(--halfgutter)/2);
  border: 5px solid var(--grey-bg);
}
.project-list .small { margin-top: var(--halfgutter); }





/* ---------------- ABOUT SECTION --------------- */

#about .flex-column p { margin-bottom: var(--halfgutter); }
.click-message {

  position: absolute;
  pointer-events: none;
  z-index: 2;

  font-family: "VT323", "Inconsolata", monospace;
  font-size: var(--navtext);
  letter-spacing: 0.0875rem;
  color: var(--main-bg);
  background-color: var(--main-black);
  padding: var(--halfgutter) 18px;
  border-radius: var(--halfgutter);
  opacity: 0.85;

  animation: pulseFade 1.5s infinite ease-in-out;

}





/* ---------------- ANIMATIONS --------------- */

.animated-role {
  font-size: var(--h1);
  line-height: var(--lineheight165);
  font-weight: 500;
  margin-left: 0.25rem;
  color: var(--main-black);
  position: relative;
  display: inline-block;
} .h1animation { animation: animateUp 0.6s ease; }
@keyframes animateUp {
  0% {
    opacity: 0;
    transform: translateY(0.4em);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.blink-colon { 
  margin: 0 calc(var(--smallgap)*-1);
  animation: blink 1s steps(1, start) infinite;
}
#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; }
}

.wave { 
  display: inline-block;
  animation-name: wave-animation;
  animation-duration: 2.5s;  
  animation-iteration-count: infinite; 
  transform-origin: 70% 70%;   
}
@keyframes wave-animation {
  0% { transform: rotate( 0.0deg) }
 10% { transform: rotate(14.0deg) } 
 20% { transform: rotate(-8.0deg) }
 30% { transform: rotate(14.0deg) }
 40% { transform: rotate(-4.0deg) }
 50% { transform: rotate(10.0deg) }
 60% { transform: rotate( 0.0deg) }
100% { transform: rotate( 0.0deg) }
}

.swipe-in {
  opacity: 0;
  transform: translateY(20px);
  transition: all 0.6s ease-out;
} .swipe-in.visible { opacity: 1; transform: translateY(0); }

@keyframes pulseFade {
  0%   { transform: scale(1); opacity: 0.6; }
  50%  { transform: scale(1.1); opacity: 0.95; }
  100% { transform: scale(1); opacity: 0.6; }
}






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

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

.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;
}
/* .gallery-scroll {
  overflow-x: auto;
  scroll-behavior: smooth;
  display: flex;
  
  flex-wrap: wrap;
  gap: var(--gutter);
}
.gallery-scroll::-webkit-scrollbar {
  display: none;
}

.gallery-img {
  flex: 0 0 auto;
  width: 220px;
  height: 220px;
  object-fit: cover;
  border-radius: var(--gutter);
  scroll-snap-align: center;
  transition: transform 0.3s ease;
}


.gallery-controls {
  display: flex;
  justify-content: center;
  gap: var(--halfgutter);
}

.scroll-btn-circle {
  text-align: center;
  width: var(--doublegutter);
  height: var(--doublegutter);
  border-radius: 50%;
  border: 1px solid var(--grey-text);
  background: transparent;
  font-size: var(--highlight-text);
  padding-bottom:6px;
  color: var(--grey-text);
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
}

.scroll-btn-circle:hover {
  background: var(--main-black);
  color: var(--main-bg);
  border:none;
  transform: scale(1.05);
} */


/* .archive-frame-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  grid-template-rows: repeat(4, 1fr);
  gap: var(--halfgutter);
  width: 100%;
  height: 100%;
}

.cell {
  max-width: 100%;
  max-height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
}

.gallery-img {
  max-width: 100%;
  max-height: 100%;
  object-fit: cover;
  border-radius: var(--halfgutter);
}

.center-quote {
  grid-column: 3 / span 2;
  grid-row: 2 / span 2;
  text-align: center;
  justify-content: center;
  align-items: center;
} */







/* -------------------- MQ DESKTOP ----------------------- */

@media screen and (-webkit-min-device-pixel-ratio: 0) { 
  main, .main, footer { margin-left: auto; }
}

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

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

  :root {
    --navtext: 1rem;
  }
  h1 { max-width: 90%;}
  .archive-drawer {  gap: var(--gutter); } /* change when changing archive */
}

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

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

  #about p, #project p { max-width: 86%; }
  h1 { max-width: 99%;}

}

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

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

  .content-wrapper header { margin-bottom: 0; }
  .content-container article { 
    height: 28vh; 
    margin-bottom: var(--gutter);
  }

}

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

  .main {
    grid-template-columns: .35fr .65fr;
    grid-template-rows: .475fr .525fr;    
    column-gap: var(--outer-margin);
  }

  h1, .animated-role {
    line-height: var(--lineheight145);
  }

  .preview-container {

    grid-column: 1;
    grid-row: 1;

    border-radius: 50%;
    aspect-ratio: 1 / 1;          
    width: clamp(200px, 22vw, 300px); 
    height: auto;    

    align-self: end;
    justify-self: center;
  } 
  .preview-container aside { 
    position: absolute;
    top: 110%;
    width: max-content;
  }

  .content-wrapper { 
    grid-column: 2; 
    grid-row: 1 / span 2;

    padding-left: 0;
    
    display: grid;
    grid-template-rows: 42% 58%;
  }
  .timepng{ max-width: 95%; }

  .content-wrapper header { grid-row: 1; align-self: end; }
  .content-container { grid-row: 2}
  .content-container article { height: 35vh; }

}

@media only screen and (max-width:1366px)  {
  
  .main {
    grid-template-rows: .525fr .475fr; 
  }
  
  .content-container article { height: 28vh; }
  .content-wrapper { 
    grid-template-rows: 45% 55%;
    row-gap: var(--doublegutter);
  }
  .content-wrapper header { margin-bottom: var(--halfgutter); }

}

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

  .main {
    grid-template-columns: .325fr .675fr;
    grid-template-rows: .5fr .5fr; 
  }
  .content-wrapper header { margin-bottom: var(--smallgap); }


} 


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

@media only screen and (max-width:1024px)  {  
  
  h1 { max-width: 86%; }

  .main { 
    display: block;
    height:100%;
  }  .preview-container { display: none; }

  .content-wrapper {

    height: fit-content;
    grid-template-rows: auto;
    row-gap: var(--halfgap);
    padding-top: var(--halfgap);
    justify-content: start; 

  } .content-wrapper header { margin-bottom:0; }

  #about p, #project p { max-width: 90%;}

  .content-container article {
    height: auto;
    padding-right: 0;
  }

}

@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; }

  h1 { max-width: 100%; }

  .gallery-grid .gallery-img {
    width: calc(50% - var(--gutter));
    max-width: 150px;
  }
}

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

  #about p, #project p { max-width: 100%; }

  .content-container article {
    line-height: var(--lineheight165);
  }
  .project-list { 
    margin-top: var(--smallgap);
    gap: var(--doublegutter);
  }
  .project-link {
    flex-direction: column;
    gap: var(--halfgutter);
  }
  .project-list p { padding-right: 0; }
  .project-year { top:5%; }
}

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

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

  :root {  --h1: clamp(1.9rem, 1.3rem + 3vw, 2.25rem);
  }
  h1 {
    letter-spacing: -.0875rem;
  }
  .project-list li {
    padding: 0;
  }
  .project-link { gap: var(--gutter);}
  #project .grey {
    margin-bottom: var(--smallgap);
  }
  .archive-drawer.open {
    max-height: 100%;
    height: fit-content; 
    overflow-y: visible;
  }
  .gallery-grid .gallery-img {
    width: 100%;
  }
}

