/* ============================================================
   AUBREY'S CORNER
   2010 neocities collage layout, classic Xbox green palette.
   flat: no rounded corners, no gradients.
   all dimensions are named tokens — no magic numbers inline.
   ============================================================ */

@font-face {
  font-family: "Chakra";

  src: url("../fonts/ChakraPetch-400.woff2") format("woff2");

  font-weight: 400;

  font-display: swap;
}

@font-face {
  font-family: "Chakra";

  src: url("../fonts/ChakraPetch-500.woff2") format("woff2");

  font-weight: 500;

  font-display: swap;
}

@font-face {
  font-family: "Chakra";

  src: url("../fonts/ChakraPetch-700.woff2") format("woff2");

  font-weight: 700;

  font-display: swap;
}

:root {
  /* palette — classic Xbox lime green on black */
  --green: #84c72b;
  --green-br: #b6f24e;
  --green-dk: #3f6d12;
  --text: #9fd155;
  --bg: #000000;
  /* type scale */
  --fs-body: 0.75rem;
  --fs-small: 0.625rem;
  --fs-tiny: 0.5625rem;
  --fs-h: 0.95rem;
  --fs-h-sm: 0.75rem;
  /* layout */
  --wrap-width: 56rem;
  --reading-width: 34rem;
  --sidebar-width: 15rem;
  --pics-width: 6.5rem;
  --gap: 0.35rem;
  --box-pad: 0.4rem;
  --border-w: 1px;
  /* box heights */
  --banner-height: 8.5rem;
  --navlink-height: 14rem;
  /* drawings grid */
  --gallery-cols: 3;
  /* films grid — min poster width */
  --film-w: 6.5rem;
  /* the classic 88x31 web button */
  --btn-width: 5.5rem;
  --btn-height: 1.9375rem;
}

* {
  box-sizing: border-box;
}

html {
  scrollbar-color: var(--green) #0c1704;
}

body {
  margin: 0;
  padding: var(--gap);
  background: var(--bg);
  color: var(--text);
  font-family: "Chakra", "Courier New", monospace;
  font-size: var(--fs-body);
  line-height: 1.4;
  display: flex;
  justify-content: center;
}

img {
  display: block;
  max-width: 100%;
}

a {
  color: var(--green-br);
  text-decoration: none;
}

a:hover {
  text-decoration: underline;
}

::-moz-selection {
  color: var(--bg);
  background: var(--green);
}

::selection {
  color: var(--bg);
  background: var(--green);
}

::-webkit-scrollbar {
  width: 0.5rem;
  height: 0.5rem;
}

::-webkit-scrollbar-track {
  background: #0c1704;
}

::-webkit-scrollbar-thumb {
  background: var(--green-dk);
}

::-webkit-scrollbar-thumb:hover {
  background: var(--green);
}

/* ---------- layout primitives (mirrors the reference) ---------- */

.wrap {
  width: var(--wrap-width);
  max-width: 100%;
  display: flex;
  flex-direction: column;
}

.wrap--reading {
  width: var(--reading-width);
}

.row {
  display: flex;
  align-items: flex-start;
  flex-wrap: wrap;
}

.row--tight {
  flex-wrap: nowrap;
}

.col {
  display: flex;
  flex-direction: column;
}

/* two-column main area */

.main-col {
  flex: 1;
  min-width: 0;
}

.side-col {
  width: var(--sidebar-width);
  max-width: 100%;
}

.grow {
  flex: 1;
  min-width: 0;
}

/* ---------- the black bordered box ---------- */

.box {
  background: var(--bg);
  border: var(--border-w) solid var(--green);
  margin: var(--gap);
  padding: var(--box-pad);
  overflow: hidden;
}

.box--dashed {
  border-style: dashed;
}

.box--flush {
  padding: 0;
}

.box--scroll {
  overflow-y: scroll;
}

.box img {
  max-width: 100%;
}

/* ---------- typography ---------- */

.center {
  text-align: center;
}

.h {
  color: var(--green-br);
  font-size: var(--fs-h);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.h-sm {
  color: var(--green-br);
  font-size: var(--fs-h-sm);
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.h-block {
  padding: var(--box-pad);
}

.small {
  font-size: var(--fs-small);
}

.tiny {
  font-size: var(--fs-tiny);
  color: var(--green-dk);
}

.dim {
  color: var(--green-dk);
}

.date {
  color: var(--green);
  font-size: var(--fs-small);
  letter-spacing: 0.08em;
}

b {
  color: var(--green-br);
}

p {
  margin: 0.35em 0;
}

.rule {
  border: none;
  border-top: var(--border-w) dashed var(--green-dk);
  margin: 0.4em 0;
}

/* ---------- banner + side pics ---------- */

.banner {
  height: var(--banner-height);
}

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

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

.thumb img {
  width: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

/* decorative poster — shown whole */

.poster img {
  width: 100%;
}

/* ---------- status marquee ---------- */

.status-label {
  width: 5rem;
}

.marquee {
  overflow: hidden;
  white-space: nowrap;
}

.marquee > span {
  display: inline-block;
  padding-left: 100%;
  animation: marquee 18s linear infinite;
  color: var(--green);
  font-size: var(--fs-small);
}

@keyframes marquee {
  from {
    transform: translateX(0);
  }

  to {
    transform: translateX(-100%);
  }
}

.online {
  color: var(--green-br);
  font-weight: 700;
}

.blink {
  animation: blink 1.4s steps(1) infinite;
}

@keyframes blink {
  50% {
    opacity: 0;
  }
}

/* ---------- links list ---------- */

.links a {
  display: block;
  padding: 0.15em 0;
}

.links a::before {
  content: "> ";
  color: var(--green-dk);
}

/* ---------- button collection ---------- */

.btns88 {
  display: flex;
  flex-wrap: wrap;
  gap: var(--gap);
  justify-content: center;
}

.btns88 img {
  width: var(--btn-width);
  height: var(--btn-height);
  -o-object-fit: cover;
     object-fit: cover;
  border: var(--border-w) solid var(--green-dk);
}

.my-button {
  margin: 0 auto;
  border: var(--border-w) solid var(--green-dk);
}

/* ---------- drawings gallery (grid) ---------- */

.gallery-grid {
  display: grid;
  grid-template-columns: repeat(var(--gallery-cols), 1fr);
  gap: var(--gap);
}

.gallery-grid img {
  width: 100%;
  aspect-ratio: 1;
  -o-object-fit: cover;
     object-fit: cover;
  border: var(--border-w) solid var(--green-dk);
  cursor: pointer;
}

.gallery-grid img:hover {
  border-color: var(--green-br);
}

/* ---------- films grid ---------- */

.films {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(var(--film-w), 1fr));
  gap: var(--gap);
}

.film {
  display: block;
  color: var(--text);
}

.film img,
.film .film-noposter {
  width: 100%;
  aspect-ratio: 2 / 3;
  border: var(--border-w) solid var(--green-dk);
}

.film img {
  -o-object-fit: cover;
     object-fit: cover;
}

.film:hover img,
.film:hover .film-noposter {
  border-color: var(--green-br);
}

.film .film-noposter {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  border-style: dashed;
  padding: var(--box-pad);
  font-size: var(--fs-small);
  line-height: 1.2;
  color: var(--text);
}

.film .film-info {
  margin-top: 0.15em;
  line-height: 1.2;
}

.film .stars {
  color: var(--green-br);
  font-size: var(--fs-small);
}

.film .film-meta {
  font-size: var(--fs-tiny);
  color: var(--green-dk);
}

/* ---------- iframes ---------- */

iframe {
  display: block;
  border: 0;
  background: var(--bg);
  width: 100%;
}

.navlink iframe {
  height: var(--navlink-height);
}

/* ---------- lightbox ---------- */

#lightbox {
  position: fixed;
  inset: 0;
  z-index: 999;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.88);
  cursor: pointer;
}

#lightbox.open {
  display: flex;
}

#lightbox img {
  max-width: 90vw;
  max-height: 90vh;
  border: var(--border-w) solid var(--green);
}

/* ---------- responsive ---------- */

@media (max-width: 44rem) {
  .stack-mobile {
    flex-direction: column;
  }

  .side-col {
    width: 100%;
  }
}
