/* geocities.geoismyhero.com — fake frameset, bevelled tables, ~2000 vibes */

:root {
  --nav-w: 170px;
  /* Fallback under bg-tile-orig.gif (period circuit board tile). */
  --page-bg: #e8d0d0;
  --content-bg: #c0c0c0;
  --nav-bg: #000080;
  --link: #0000ee;
  --link-visited: #551a8b;
  --hot: #ff00ff;
  --text: #000000;
  --panel: #ffffff;
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
  background-color: var(--page-bg);
  background-image: url("gifs/bg-tile-orig.gif");
  background-repeat: repeat;
  color: var(--text);
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 14px;
  line-height: 1.35;
}

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

/*
 * Fake frameset. On desktop the left nav is position:fixed so it stays put
 * while the content column scrolls — same feel as a real <frameset> cols="…".
 */
.frameset {
  display: block;
  width: 100%;
  max-width: 100%;
  min-height: 100vh;
  position: relative;
}

.frame-nav,
.frame-content {
  min-width: 0; /* allow shrink below min-content (marquee etc.) */
  max-width: 100%;
  vertical-align: top;
}

.frame-nav {
  width: var(--nav-w);
  background: var(--nav-bg);
  color: #ffff00;
  border-right: 4px outset #808080;
  padding: 8px 6px 24px;
}

/* Desktop / tablet: pinned sidebar frame (does not scroll with content) */
@media (min-width: 601px) {
  .frame-nav {
    position: fixed;
    left: 0;
    top: 0;
    bottom: 0;
    z-index: 20;
    overflow-x: hidden;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }

  .frame-content {
    display: block;
    margin-left: var(--nav-w);
    min-height: 100vh;
  }
}

.frame-content {
  /* Period tile on the content column; .panel stays solid white for readable copy. */
  background-color: var(--content-bg);
  background-image: url("gifs/bg-tile-orig.gif");
  background-repeat: repeat;
  padding: 10px 12px 28px;
  border-left: 2px inset #808080;
  overflow-x: hidden;
  overflow-wrap: anywhere;
  word-wrap: break-word;
}

.nav-title {
  font-family: Times, "Times New Roman", serif;
  font-size: 18px;
  color: #ffff00;
  text-align: center;
  margin: 4px 0 10px;
  text-shadow: 1px 1px 0 #000;
}

.nav-star {
  display: inline-block;
  vertical-align: middle;
}

.sidebar-nav {
  list-style: none;
  margin: 0;
  padding: 0;
}

.sidebar-nav li {
  margin: 0 0 6px;
}

.sidebar-nav a {
  display: block;
  color: #00ffff;
  text-decoration: none;
  font-weight: bold;
  padding: 4px 6px;
  border: 2px outset #c0c0c0;
  background: #0000a0;
}

.sidebar-nav a:hover,
.sidebar-nav a:focus {
  border-style: inset;
  color: #ffff00;
  background: #0000cc;
}

.sidebar-nav a.current {
  border-style: inset;
  color: #ffff00;
  background: #000060;
}

.nav-jump {
  display: none;
  width: 100%;
  margin: 8px 0;
  font-family: Times, "Times New Roman", serif;
  font-size: 14px;
  padding: 4px;
}

/* Content panels */
.panel {
  background: var(--panel);
  border: 3px outset #dfdfdf;
  padding: 10px 12px;
  margin: 0 0 12px;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-wrap: break-word;
}

.panel-inset {
  background: #e8e8e8;
  border: 3px inset #808080;
  padding: 8px;
  margin: 8px 0;
  max-width: 100%;
}

h1, h2, h3 {
  font-family: Times, "Times New Roman", serif;
  margin: 0 0 8px;
  overflow-wrap: anywhere;
  word-wrap: break-word;
}

h1 {
  font-size: 28px;
  color: #000080;
}

h2 {
  font-size: 20px;
  color: #800080;
  border-bottom: 2px solid #800080;
  padding-bottom: 2px;
}

h3 {
  font-size: 16px;
  color: #000080;
}

.welcome-blink {
  color: #ff0000;
  font-weight: bold;
  overflow-wrap: anywhere;
}

/* Marquee: out-of-flow track so long text never stretches the frameset cell */
.marquee-wrap {
  position: relative;
  overflow: hidden;
  max-width: 100%;
  width: 100%;
  height: 1.6em;
  background: #000080;
  color: #ffff00;
  border: 2px inset #808080;
  padding: 4px 0;
  margin: 0 0 10px;
  font-family: Times, "Times New Roman", serif;
  white-space: nowrap;
}

.marquee-inner {
  position: absolute;
  top: 4px;
  left: 0;
  display: inline-block;
  white-space: nowrap;
  will-change: transform;
  animation: geo-marquee 18s linear infinite;
}

@keyframes geo-marquee {
  /* left:100% is relative to wrap; translateX(-100%) is relative to self */
  0% { left: 100%; transform: translateX(0); }
  100% { left: 0; transform: translateX(-100%); }
}

.blink {
  animation: geo-blink 1s step-end infinite;
}

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

.hr-gif {
  display: block;
  width: 100%;
  max-width: 100%;
  height: auto;
  margin: 10px 0;
  border: 0;
}

.table-scroll {
  width: 100%;
  max-width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  margin: 8px 0;
}

table.geo {
  width: 100%;
  max-width: 100%;
  table-layout: fixed;
  border-collapse: separate;
  border-spacing: 2px;
  background: #808080;
  font-family: Times, "Times New Roman", serif;
  font-size: 13px;
}

table.geo th,
table.geo td {
  border: 2px outset #dfdfdf;
  padding: 6px 8px;
  vertical-align: top;
  word-wrap: break-word;
  overflow-wrap: anywhere;
  min-width: 0;
}

/* Default white only when no HTML bgcolor — otherwise bgcolor (#e0e0e0/#c0c0c0 stripes) wins. */
table.geo td:not([bgcolor]) {
  background: #ffffff;
}

table.geo th {
  background: #000080;
  color: #ffff00;
  text-align: left;
}

table.geo td.desc {
  font-family: Verdana, Arial, Helvetica, sans-serif;
}

.thumb {
  display: inline-block;
  border: 3px outset #dfdfdf;
  background: #c0c0c0;
  padding: 2px;
  max-width: 100%;
}

.thumb img {
  display: block;
  max-width: 160px;
  width: 100%;
  height: auto;
  image-rendering: auto;
}

.footer-tropes {
  margin-top: 16px;
  text-align: center;
  font-size: 12px;
  font-family: Times, "Times New Roman", serif;
  max-width: 100%;
  overflow-wrap: anywhere;
}

.webring {
  display: inline-block;
  max-width: 100%;
  background: #ffffcc;
  border: 2px outset #dfdfdf;
  padding: 4px 10px;
  margin: 6px 0;
}

.webring a {
  text-decoration: none;
  font-weight: bold;
}

/* One badge: "visitors:" + plain text digits on a single non-wrapping line */
.visitors-badge {
  display: inline-flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: flex-start;
  white-space: nowrap;
  vertical-align: middle;
  margin: 6px 4px;
  padding: 2px 6px;
  height: 28px;
  background: #000;
  border: 1px solid #00ff00;
  color: #00ff00;
  font-family: "Courier New", Courier, monospace;
  font-size: 12px;
  line-height: 24px;
  max-width: 100%;
  box-sizing: border-box;
}

.visitors-badge .visitors-label {
  flex: 0 0 auto;
  margin-right: 4px;
  white-space: nowrap;
  line-height: 24px;
  height: 24px;
  display: inline-block;
}

.visitors-badge .hit-digits {
  display: inline;
  flex: 0 0 auto;
  height: 24px;
  letter-spacing: 0.05em;
  font-variant-numeric: tabular-nums;
}

.badge-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 6px 8px;
  margin: 8px auto;
  max-width: 100%;
}

.badge-row img {
  vertical-align: middle;
  margin: 0;
  flex: 0 0 auto;
  max-width: 100%;
  height: auto;
  image-rendering: auto;
}

.webring-banner {
  margin: 8px auto;
  max-width: 100%;
  text-align: center;
  font-family: Times, "Times New Roman", serif;
}

.webring-banner .webring-title-text {
  font-weight: bold;
  font-size: 16px;
  margin: 0 auto 4px;
  color: #000080;
}

.webring-btns {
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 4px 10px;
  vertical-align: middle;
  margin: 2px 0;
  font-family: Verdana, Arial, Helvetica, sans-serif;
  font-size: 13px;
}

.webring-btns a {
  display: inline-block;
  font-weight: bold;
}

.uc-box {
  text-align: center;
  padding: 16px 8px;
  background: #ffff00;
  border: 4px outset #dfdfdf;
  color: #000;
  font-weight: bold;
  max-width: 100%;
}

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

/* Home / Film: authentic under-construction orig GIF, centered, no sorry copy */
.uc-inline {
  text-align: center;
  margin: 12px auto;
}

.uc-inline img {
  display: inline-block;
  max-width: 100%;
  height: auto;
  image-rendering: auto;
}

.note {
  font-size: 12px;
  color: #333;
}

.center { text-align: center; }

/* Guestbook form fields must not blow out phone widths */
#guestbook-form input[type="text"],
#guestbook-form textarea {
  max-width: 100%;
  width: 100%;
  box-sizing: border-box;
}

/* Phone: stack frames; nav scrolls with the page (no fixed frame) */
@media (max-width: 600px) {
  .frameset,
  .frame-nav,
  .frame-content {
    display: block;
    width: 100%;
    max-width: 100%;
  }

  .frame-nav {
    position: static;
    width: 100%;
    border-right: 0;
    border-bottom: 4px outset #808080;
    padding-bottom: 10px;
    overflow: visible;
  }

  .frame-content {
    margin-left: 0;
  }

  .sidebar-nav {
    display: none;
  }

  .nav-jump {
    display: block;
  }

  /* hide column headers — stacked ths read as empty navy bars */
  table.geo thead {
    display: none;
  }

  table.geo,
  table.geo tbody,
  table.geo tr,
  table.geo th,
  table.geo td {
    display: block;
    width: 100%;
    max-width: 100%;
  }

  table.geo td,
  table.geo tbody th {
    margin-top: 2px;
  }

  .thumb img {
    max-width: min(160px, 100%);
  }

  h1 { font-size: 22px; }
}

/* prefers-reduced-motion: freeze animations; CSS swaps GIF→static via [data-anim] */
@media (prefers-reduced-motion: reduce) {
  .marquee-inner {
    animation: none;
    position: static;
    display: block;
    white-space: normal;
    left: auto;
    transform: none;
    padding: 0 8px;
  }

  .marquee-wrap {
    height: auto;
    white-space: normal;
  }

  .blink {
    animation: none;
  }
}
