/* Universal CSS with CSS Variables for griffinashburn.com */

:root {
  /* Layout variables */
  --container-width: 1000px;
  --upper-aspect-ratio: 74.97%;
  --img-scale-hover: 1.05;
  
  /* Color variables - Light Mode */
  --bg-color: #ffffff;
  --text-color: #333333;
  --toggle-color: #000000;
  --toggle-hover: #999999;
  --link-color: #3ebad6;
  --link-visited: #e675d3;
  --link-hover: #77d1e6;
  --link-active: #aee5f2;
}

:root.dark-mode {
  /* Color variables - Dark Mode */
  --bg-color: #1a1a1a;
  --text-color: #e0e0e0;
  --toggle-color: #ffffff;
  --toggle-hover: #999999;
  --link-color: #5ebce0;
  --link-visited: #f0a0d8;
  --link-hover: #7fe1f0;
  --link-active: #a8f0ff;
}

/* Reset */
* {
  box-sizing: border-box;
}

/* Viewport */
@viewport {
  width: device-width;
  zoom: 1.0;
}

@media screen and (max-width: 375px) {
  body {
    zoom: 1.1;
  }
}

/* Grid System */
[class*="col-"] {
  width: 100%;
}

@media only screen and (min-width: 768px) {
  .col-1 {width: 8.33%;}
  .col-2 {width: 16.66%;}
  .col-3 {width: 25%;}
  .col-4 {width: 33.33%;}
  .col-5 {width: 41.66%;}
  .col-6 {width: 50%;}
  .col-7 {width: 58.33%;}
  .col-8 {width: 66.66%;}
  .col-9 {width: 75%;}
  .col-10 {width: 83.33%;}
  .col-11 {width: 91.66%;}
  .col-12 {width: 100%;}
}

.row::after {
  content: "";
  clear: both;
  display: table;
}

[class*="col-"] {
  float: left;
  padding: 1%;
}

/* Container */
.container {
  max-width: var(--container-width);
}

/* Clearfix for container (rowless layout) */
.container::after {
  content: "";
  clear: both;
  display: table;
}

/* Image Container (for individual project pages) */
.imagecontainer {
  margin-left: 0.5em;
  margin-top: 1em;
  width: 500px;
  object-fit: contain;
  display: inline-block;
}

/* Description (for individual project pages) */
.description {
  margin-left: 0.5em;
  width: 500px;
  padding-left: 0.5em;
}

/* Full Size Link */
.fullsize {
  text-align: right;
  margin-top: 5px;
}

/* Player Container (Spotify, Bandcamp, etc.) */
.player {
  width: 500px;
}

/* Image handling - default */
img {
  max-width: 100%;
  max-height: 100%;
}

/* Upper section - aspect ratio controlled by CSS variable */
.upper {
  overflow: hidden;
  margin: 0 auto;
  position: relative;
  padding-bottom: var(--upper-aspect-ratio);
}

.upper img {
  width: 100%;
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  transition: 0.2s all ease-in-out;
}

.upper:hover img {
  transform: scale(var(--img-scale-hover));
}

/* Video-specific iframe handling (for .upper containers only) */
.upper iframe {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

/* Lower section */
.lower {
  padding-top: 2%;
  padding-bottom: 4%;
  text-align: left;
}

/* Typography */
body {
  font-family: 'Helvetica', sans-serif;
  background-color: var(--bg-color);
  color: var(--text-color);
  transition: background-color 0.3s ease, color 0.3s ease;
}

.title {
  font-weight: bold;
  font-size: 2em;
  padding: 0.2em;
}

.heading {
  font-size: 1.5em;
  font-weight: bold;
  padding: 0.2em;
}

.list {
  margin-left: 0.5em;
  font-size: 1.2em;
}

.bottom {
  font-style: italic;
}

.items {
  margin-left: 1.5em;
}

.italic {
  font-style: italic;
}

.right {
  float: right;
}

/* Links */
a:link {
  color: var(--link-color);
}

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

a:hover {
  color: var(--link-hover);
}

a:active {
  color: var(--link-active);
}

/* Special classes for about page */
@media screen and (max-width: 768px) {
  .hide {
    display: none;
  }
  .small {
    font-size: 0.7em;
    margin-top: -1.5em;
    margin-bottom: -0.7em;
  }
}

.description {
  padding-left: 0.5em;
}

/* Theme Toggle */
.theme-toggle {
  position: absolute;
  top: 1.7em;
  right: 1.5em;
  font-size: 1em;
  cursor: pointer;
  user-select: none;
  color: var(--toggle-color);
  transition: color 0.2s ease;
  z-index: 1000;
}

.theme-toggle:hover {
  color: var(--toggle-hover);
}
