@property --hue {
  syntax: "<angle>";
  inherits: false;
  initial-value: 0deg;
}

:root {
  --hue: 0deg;

  --bg: #ffffff;
  --text: #111111;
  --muted: #666666;
  --accent: #b6b6b6;
  --card-bg: #ffffff;
  --border: #dddddd;
  --shadow: rgba(0,0,0,0.1);

  --accent-dark: hsl(var(--hue), 100%, 60%);
}

@keyframes rainbowHue {
  from {
    --hue: 0deg;
  }
  to {
    --hue: 360deg;
  }
}

html {
  animation: rainbowHue 4s linear infinite;
}

::selection {
color: white;
-webkit-text-stroke: 1px black;
text-shadow: 1px 1px 0 black, -1px -1px 0 black, 1px -1px 0 black, -1px 1px 0 black;
background: transparent;
font-weight:700;
}

body {
  margin: 0;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--bg);
  color: var(--text);
  font-size:70%;
  font-weight:700;
}

.main {
  display:flex;
  max-width:400px;
  margin:40px;
}

.icon img {
  max-width:190px;
}

.info {
  text-align:justify;
  width:500px;
  margin-top:auto;
  margin-bottom:auto;
}

#clock {
font-weight:800;
font-size:15px;
margin:0;
}

.clock {
  position:fixed;
  top:0
}

.name {
  font-size:40px;
  font-weight:900;
  font-style:italic;
  letter-spacing:2px;
  margin:0;
  color:var(--accent)
}

hr {
  margin:4px 0px 4px 0px;
  opacity:0.2;
  border-color:var(--muted)
}

.tabs {
  display:flex;
  justify-content:space-between;
  margin-top:15px;
}

.dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background-color: var(--accent);
  transition: transform 0.25s ease, background-color 0.25s ease, box-shadow 0.25s ease;
}

.dot:hover {
  transform: scale(1.5);
}

/* active state */
.dot.active {
  background-color: white;
  box-shadow:
    0 0 6px var(--accent-dark),
    0 0 12px var(--accent-dark);
}

.tab-content {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  position: absolute;
  transform: translateY(4px);

  transition: opacity 0.25s ease, transform 0.25s ease;
  max-height:276px;
  overflow-y:scroll;
}

.tab-content.active {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  position: relative;
  transform: translateY(0);
}

@media (max-width: 350px) {
  .main {
    flex-direction:column;
    justify-content:center;
  }
}

.gallery {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom:20px;
  margin-top:15px;
}

.gallery-img {
  width: 100%;
  aspect-ratio: 1 / 1;   /* makes every box a square */
  object-fit: contain;   /* shows full image, no cropping */

  cursor: pointer;
}

.gallery-img:hover {
  transform: scale(1.03);
}

/* lightbox overlay */
.lightbox {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);

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

  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease;
}

.lightbox.active {
  opacity: 1;
  pointer-events: auto;
}

.lightbox img {
  max-width: 90%;
  max-height: 90%;
}

.lightbox-inner {
  position: relative;
  display: inline-block;
  max-width: 90vw;
  max-height: 90vh;
}

.lightbox-inner img {
  max-width: 90vw;
  max-height: 90vh;
  display: block;
  object-fit: contain;
}

/* caption floating bottom-right */
.caption {
  position: absolute;
  right: 70px;
  bottom: 15px;

  background: rgba(0,0,0,0.75);
  color: white;
  font-size: 12px;

  padding: 4px 8px;
  border-radius: 4px;

  transform: translate(100%, 100%);
  white-space: nowrap;
}

.blog-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.blog-link {
  text-decoration: none;
  color: var(--text);
  font-size: 12px;
}

.blog-date {
  opacity: 0.2;
  font-size:10px;
  margin:0;
}

.blog-title {
  font-size: 14px;
}

/* hidden posts by default */
.blog-post {
  display: none;
}

/* active post view */
.blog-post.active {
  display: block;
}

/* header layout */
.blog-header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 8px;
}

.blog-left,
.blog-right {
  font-size: 12px;
  font-weight: 700;
}

/* body text */
.blog-body {
  font-size: 11px;
  text-align: justify;
  line-height: 1.4;
}

/* back button */
.blog-back {
  background: none;
  border: none;
  font-size: 12px;
  cursor: pointer;
  margin-bottom: 10px;
  color: var(--text);
}

.blog-left {
  opacity:0.3;
  font-size:9px;
  margin-top:auto;
  margin-bottom:auto
}

.blog-right {
  font-size:14px;
  font-weight:800
}

#socials a {
  text-decoration:none;
  color:var(--accent);
  font-weight:700;
}

#socials a:hover {
  color:var(--accent-dark)
}

.warning-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}

.warning-box {
  background: var(--bg);
  color: var(--text);
  padding: 20px;
  max-width: 300px;
  text-align: center;
  border-radius:10px
}

.warning-box h2 {
  margin: 0 0 10px;
}

.warning-box button {
  margin-top: 10px;
  padding: 6px 12px;
  border: none;
  cursor: pointer;
  background: var(--accent);
  color: white;
}