
@import url('fonts.css');

:root {
    --black: black;
    --white: #C5C5C5;
    --lime: lime;
    --magenta: magenta;
			--threshold: 0%;
}


body::-webkit-scrollbar,
html::-webkit-scrollbar {
  display: none;                  /* Chrome, Safari */
}

body, html {
  overflow-x: hidden;
  scrollbar-width: none; /* hide scrollers on Firefox */
  -ms-overflow-style: none; /* hide scrollers on IE/Edge */
  /* why don't all the browsers just use a universal spec?? */ 
  /* oh that's right, proprietary software... */
}
.mobile-header {
  display: none;
}

h1, h2 {
  font-family: 'TeXGyreHerosCondensed', sans-serif;
  font-weight: bold;
}

pre, code {
  font-family: 'OfficeCodePro', monospace;
}

blockquote {
  font-family: 'JunicodeCondensed', serif;
}

/* Base styles */
body {
    font-family: 'TeXGyreHerosCondensed', sans-serif;
    font-size: 1.2em;
    margin: 0;
    padding: 0;
    background-color: var(--white);
    color: var(--black);
}

.telos-grid {
  display: grid;
  grid-template-columns: 10vw 1fr 15vw;
  gap: 2vw;
  height: 100vh;
  padding: 1vw;
  box-sizing: border-box;
}

.left-column {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100vh;
  padding: 0;
  margin: 0;
  overflow: hidden;
}

.left-column h2 {
  writing-mode: vertical-rl;
  text-orientation: mixed;
  font-size: 6vw;
  transform: scaleY(1.2);
  line-height: 0.8em;
  margin: 0;
}

.telos-wordmark {
  rotate: 270deg;
  height: 16vh;
}

.center-column {
  overflow-y: visible; /* allow it to expand */
  height: auto; 
  display: flex;
  flex-direction: column;
  gap: 3rem;
  padding-right: 2%;
  overflow-x: hidden;
}

/* styling for stuff in the right column */

.right-column {
  padding: 2%;
  padding-right: 3%;
}

.right-column h3 {
  font-size: 3vw;
}

.debug-tools {
  border-top: 2px solid var(--black);
  padding-top: 1rem;
  margin-top: 2rem;
  font-size: 0.7rem;
}

.debug-tools h2 {
  font-size: 0.85rem;
  margin-bottom: 0.8rem;
}

.debug-tools label {
  display: block;
  margin-bottom: 0.2rem;
  cursor: pointer;
}



#page {
    transition: transform 0.2s ease-out;
    transform-origin: bottom; /* default anchor for scaling */
    will-change: transform;
  }

  .bio {
    position: relative;
    padding: 0;
    margin: 0;
    gap: 1rem;
    font-size: 1rem;
    line-height: 1.1rem;
    text-align: justify;
    text-justify: inter-word;
  }
  

  .grid {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 2rem;
    padding: 3rem;
    z-index: 2;
  }

  .grid-item {
    width: 280px;
    height: 280px;
    perspective: 1000px;
  }

  .card {
    width: 100%;
    height: 100%;
    position: relative;
    transform-style: preserve-3d;
    transition: transform 0.6s;
  }

  .grid-item:hover .card {
    transform: rotateY(180deg);
  }

  .front, .back {
    position: absolute;
    width: 100%;
    height: 100%;
    backface-visibility: hidden;
    border: 2px solid var(--black);
  }

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

  .back {
    background-color: var(--black);
    color: var(--white);
    transform: rotateY(180deg);
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 1rem;
    font-size: 0.9rem;
  }

  .footer {
    position: fixed;
    bottom: 0;
    width: 100%;
    text-align: center;
    background: var(--white);
    z-index: 10;
    padding: 2rem 1rem;
  }

/* Typography */
h1, h2 {
    color: var(--black);
    font-family: 'TeXGyreHerosCondensed', sans-serif;
    line-height: .7em;
    font-weight: bold;
}

h1 {
  font-family: 'TeXGyreHerosCondensed', sans-serif; 
  font-size: 5vw;
  display: inline-block;
  transform: scaleY(1);
}

h2 {
  font-family: 'TeXGyreHerosCondensed', sans-serif;
  font-weight: bold;
    font-size: 5vw;
    display: inline-block;
    transform: scaleY(1);
    line-height: .9em;
}

h3 {
  font-family: 'JunicodeCondensed', serif;
  font-size: 2vw;
  display: inline-block;
  transform: scaleY(1);
}

/* Paragraphs */
p {
    color: var(--black);
}


/* Button styles */
button {
    background-color: var(--black);
    color: var(--white);
    border: 2px solid var(--black);
    padding: 10px 20px;
    cursor: pointer;
}

/* Container styles */
.container {
    background-color: var(--white);
    padding: 20px;
}

/* Alert styles */
.alert {
    background-color: var(--black);
    color: var(--white);
}

/* Table styles */
table {
    width: 100%;
}

th {
    border: 3px solid var(--black);
    padding: 0px;
    font-size: 1vw;
    border-radius: 4px;
}

td {
    border: 3px solid var(--black);
    padding: 10px;
    font-size: 2vw;
    border-radius: 4px;
}

th:nth-child(1),
td:nth-child(1) {
    width: 20%;
}

th:nth-child(2),
td:nth-child(2) {
    width: 20%;
}

th:nth-child(3),
td:nth-child(3) {
    width: 20%;
}


th:nth-child(4),
td:nth-child(4) {
    width: auto; /* 2024-05-20 -- Changed from 40% to auto for flexibility */
}

th:nth-child(5),
td:nth-child(5) {
    width: 10%;
}

.project-title {
    font-size: 2.5vw;
    transform: scaleY(3);
    line-height: 2vw;
    display: inline-block;
    text-decoration: none;
}
.project-title a {
    text-decoration: none; /* links in headers have no underline */
}

tr:hover {
    background-color: var(--lime);
}


/* Accordion Group Styles */
.accordion-group {
  border-bottom: 10px solid var(--black);
  padding-bottom: .5rem;
}

.accordion-group h2 {
  margin-bottom: -10rem;
}

.accordion-subgroup > h3 {
  font-weight: bold;
  cursor: pointer;
  margin-bottom: -20rem;
  margin-top: -.5rem;
}

.accordion-content {
  padding-top: -10;
  max-height: 100;
  transition: max-height 0.4s ease;
}

.accordion.open .accordion-content,
.accordion-group.open > .accordion-content,
.accordion-subgroup.open > .accordion-content {
  max-height: 10000px;
  margin-top: 1rem;
}

/* Horizontal Gallery */
.recent-gallery {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0rem;
  width: 100%;
}

.recent-gallery .media-card {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.media-card img,
.media-card video {
  width: 100%;
  height: 100%;
  object-fit:cover;
  transition: transform 0.3s ease;
}

.media-card:hover img,
.media-card:hover video {
  transform: scale(1.0);
}

.media-card .meta {
  position: absolute;
  bottom: 0.5rem;
  left: 0.5rem;
  color: var(--white);
  font-size: 0.7rem;
  background-color: rgba(0, 0, 0, 0.6);
  padding: 0.25rem 0.5rem;
  border-radius: 3px;
  opacity: 0;
  transition: opacity 0.2s ease;
}

.media-card:hover .meta {
  opacity: 1;
}


/* Three-column text block */
.three-column-text {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
  font-size: 1rem;
  line-height: 1.1rem;
  text-align: justify;
  text-justify: inter-word;
}

/* Practice block styling */
.practice-block {
  margin-top: 1rem;
  font-size: 1rem;
  font-weight: bold;
  border-left: 4px solid var(--black);
  padding-left: 1rem;
}


/* Image styles */
td .image-cell {
    border: 2px solid var(--black);
}

.image-cell {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    width: 100%;
    height: 100%;
    padding: 10px;
}

.image-container {
    flex: 1 1 100%; /* Default to full width */
    max-width: 100%;
}

.image-container img {
    width: 100%;
    height: auto;
    max-width: none;
    border-radius: 4px;
    transition: filter 0.1s ease-in-out, mix-blend-mode 0.1s ease-in-out;
    object-fit: scale-down;
    filter: grayscale(100%) contrast(200%) brightness(50%);
    mix-blend-mode: darken; /* Use darken by default */
}

.image-container iframe {
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 9;
    border-radius: 4px;
  }

/* Hover effect to reset the image to full color (without blend mode) */
.image-container img:hover {
    filter: none; /* Remove threshold effect */
    mix-blend-mode: normal; /* Remove blend mode on hover */
}
.image-container img:hover {
    filter: brightness(100%) grayscale(0) contrast(100%);
}

/* Adjust layout based on orientation */
.image-container.portrait {
    flex: 1 1 calc(50% - 10px); /* Two columns for portrait images */
}

.image-container.landscape {
    flex: 1 1 100%; /* One column for landscape images */
}

/* Optional media query for smaller screens */
@media (max-width: 768px) {
    .image-container img {
        filter: none !important;
        mix-blend-mode: normal !important;}
    .image-container.portrait,
    .image-container.landscape {
        flex: 1 1 100%; /* Stack images on small screens */
    }
    
}

/* Link styles */
a {
    color: var(--black);
    font-weight: bold;
}

h1 a, h2 a {
    text-decoration: none; /* Ensure links in headers have no underline */
}

p a {
    text-decoration: underline; /* Underline links within paragraphs */
}

a:hover,
a:active {
    color: var(--magenta);
}

a:visited {
    color: var(--black);
}


.header-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    margin-bottom: 20px;
}

/* Custom cursor styles */
.custom-cursor {
    position: fixed;
    width: 75px;
    height: 75px;
    background-color: var(--magenta);
    border-radius: 50%;
    pointer-events: none;
    transition: transform 0.1s ease;
    z-index: 99999;
    mix-blend-mode: difference;
}

.custom-cursor:hover {
    transform: scale(1.5);
}

svg {
    display: block;
    margin-top: 20px;
}

.stretchy-text {
    font-size: 4vw;
    font-weight: bold;
    fill: var(--black);
    transform: scaleY(3);
    transform-origin: bottom;
    transition: transform 0.3s ease-out;
}

/* nav stuffs */
.horizontal-menu {
    margin-top: -2vw;
}
.horizontal-menu .col {
    width: 50%;
  }
  

.horizontal-menu ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
    display: inline-block;
}

.horizontal-menu li {
    display: inline-block;
    margin: 0 6vw;
}

.horizontal-menu a {
    text-decoration: none;
    color: var(--black);
    font-size: 1.2em;
    transition: color 0.3s ease;
}


.horizontal-menu a:hover {
    color: var(--magenta);
}

.two-col {
    display: flex;
    width: 80%;
    gap: 25%;
    margin: 0 auto;
  }
  
  .col {
    width: 50%;
  }
  
  .col h2 {
    text-align: center;
    font-weight: bold;
    margin-bottom: 0.5em;
    font-size: 1.2em;
  }

  .col p {
    font-size: .7vw;
  }
  
  .col.left {
    text-align: right;
  }
  
  .col.right {
    text-align: left;
  }
  

/* --- Accordion behavior --- */

.accordion-toggle {
  cursor: pointer;
}

.accordion-content {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.4s ease;
}

.accordion.open .accordion-content {
  max-height: 10000px;
  margin-top: 1rem;
}

.accordion hr {
  margin: 0.25rem 0 0.5rem;
}

.accordion-body {
  font-size: 0.9rem;
  line-height: 1.3;
}

.accordion-body img {
  width: 100%;
  margin-top: 1rem;
  border: 2px solid var(--black);
  border-radius: 4px;
}


.scrolling-textbar1 {
  overflow: hidden;
  background: var(--black);
  color: var(--white);
  font-family: sans-serif;
  font-size: 1.2rem;
  padding: -0.5rem 0;
  position: fixed;
  top: 0;
  z-index: 9999;
  white-space: nowrap;
}

.scrolling-content {
  display: inline-block;
  animation: scroll-left 60s linear infinite;
  white-space: nowrap;
}

.scrolling-content span {
  display: inline-block;
  padding-right: 0rem;
}

@keyframes scroll-left {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(-100%);
  }
}
.glyph-word {
  display: contents;
}

.glyph-char {
  display: inline;
  transition: transform 0.3s ease, color 0.3s ease;
  will-change: transform;
}

.glyph-char.glyph-active {
  transform: scale(1.4) rotate(-5deg);
  color: var(--magenta);
}




/*~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+*+~*+~*+~*+~*/
/*=================D3 styling for homepage==============*/

#inquiry-tree svg {
  width: 100%;
  height: 100vh;
  display: block;
}

#inquiry-tree .node circle {
  fill: var(--black);
}

#inquiry-tree .node text {
  font-size: .5rem;
  fill: var(--black);
}

#inquiry-tree .link {
  fill: none;
  stroke-opacity: 0.6;
  stroke-width: 1.2px;
}

#inquiry-tree svg text {
  fill: black;
}
/*~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+~*+*+~*+~*+~*+~*/


/* Mobile Responsiveness */

@media (max-width: 1024px) {
  .mobile-header {
    margin: 0 auto; 
    display: flex;
    justify-content: center;
    align-items: center;
    }
    
    .mobile-header img {
      max-width: 100%;
    height: auto;
    }

  .three-column-text {
    grid-template-columns: repeat(2, 1fr);
  }
  .telos-grid {
    grid-template-columns: 1fr 20%;
  }
  .left-column {
    display: none;
  }
  .recent-gallery {
    grid-template-columns: 1fr;
  }
  
  h1 {
    font-size: 9vw;
  }
  
  h2 {
    font-size: 6vw;
  }
  
  h3 {
    font-size: 4vw;
  }
}

@media (max-width: 768px) {
  .mobile-header {
  margin: 0 auto; 
  display: flex;
  justify-content: center;
  align-items: center;
  }
  
p {
  font-size: .8rem;
}

  .mobile-header img {
    max-width: 100%;
  height: auto;
  }

  .telos-grid {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
  }
  .left-column {
    display: none;
  }

  .center-column,
  .right-column {
    overflow: visible !important;
    height: auto !important;
    max-height: none !important;
  }
  
  .center-column {
    padding: 3%;
    width: 90vw;
  }
  .three-column-text {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .three-column-text > p:nth-child(3) {
    grid-column: 2;
    grid-row: 2;
  }
  .two-col {
    flex-direction: column;
    width: 90vw;
    gap: 1rem;
  }
  h1 {
    font-size: 12vw;
  }

  h2 {
    font-size: 12vw;
  }
  
  h3 {
    font-size: 6vw;
  }

  .right-column h3 {
    font-size: 4vw;
  }


  p, .col p {
    font-size: .85rem;
  }

  .telos-wordmark {
    rotate: 0deg !important;
  }
}