/* sex.pidoras.blog — yesterweb. no build step, no tailwind, no react. */

/* tiled background: CSS-only "fabric" — diagonal stripes in a faded teal */
html, body {
  margin: 0;
  padding: 0;
  background:
    repeating-linear-gradient(
      45deg,
      #cfe8e6 0 2px,
      #b8d8d4 2px 4px,
      #cfe8e6 4px 22px,
      #a8c8c4 22px 24px
    );
  font-family: "Times New Roman", Times, serif;
  color: #111;
  font-size: 16px;
  line-height: 1.45;
  /* hello-kitty cursor pack. .cur files carry their own hotspots, fall back to OS default if anything goes wrong. */
  cursor: url("img/cursors/Hello_Normal.cur"), auto;
}

/* link-select cursor for anything clickable */
a, button, summary, .swap, .copy, [role="button"] {
  cursor: url("img/cursors/Hello_Link.cur"), pointer;
}

/* text-select cursor for code blocks (they're our main "selectable" content). */
code, pre, .counter {
  cursor: url("img/cursors/Hello_Text.cur"), text;
}

/* disabled / unavailable — applied when status fetch errors out, etc. */
:disabled, .disabled, [aria-disabled="true"] {
  cursor: url("img/cursors/Hello_Unavailable.cur"), not-allowed;
}

/* rainbow mode (konami easter egg) — slow hue rotation on EVERYTHING */
body.rainbow { animation: rainbow 6s linear infinite; }
body.rainbow .frame { animation: rainbow 4s linear infinite reverse; }
@keyframes rainbow {
  0%   { filter: hue-rotate(0deg)   saturate(1.4); }
  100% { filter: hue-rotate(360deg) saturate(1.4); }
}

/* old-school "monitor" framing — centered column on the tiled bg */
.screen {
  max-width: 720px;
  margin: 24px auto 48px;
  padding: 0;
}

.frame {
  width: 100%;
  background: #fffefb;
  border: 4px ridge #7a5cff;
  box-shadow: 6px 6px 0 #00000055;
}

.frame > tbody > tr > td {
  padding: 18px 28px 24px;
}

/* hero — benis.gif */
.hero {
  text-align: center;
  margin: 4px 0 14px;
}
.hero img {
  image-rendering: pixelated;
  border: 2px ridge #ff66cc;
  padding: 4px;
  background: #fff;
}

/* marquee tape — CSS animation rather than <marquee> (Firefox-flaky on the legacy element).
   .tape-track is position:absolute so its content width doesn't propagate up through the
   parent <table.frame>'s auto-layout and explode the layout. .tape has an explicit height
   because an absolutely-positioned child doesn't size its parent. */
.tape {
  position: relative;
  overflow: hidden;
  height: 28px;
  background: linear-gradient(180deg, #fff080 0%, #ffd700 100%);
  color: #5a0000;
  font-weight: bold;
  font-family: "Comic Sans MS", "Comic Sans", "Chalkboard SE", cursive;
  border-top: 2px solid #a06000;
  border-bottom: 2px solid #a06000;
  font-size: 14px;
  letter-spacing: 0.5px;
}
.tape-track {
  position: absolute;
  top: 4px;
  left: 0;
  display: flex;
  white-space: nowrap;
  animation: tape-scroll 36s linear infinite;
  will-change: transform;
}
.tape-content {
  flex-shrink: 0;
  padding-right: 2em;
}
@keyframes tape-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
/* deliberately NOT honouring prefers-reduced-motion here — the ticker is gentle
   horizontal scroll, low distraction; static text loses too much of the vibe. */

/* server status widget under the marquee */
.status {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  background: #fff;
  border: 2px ridge #888;
  margin: 8px 0;
  padding: 6px 10px;
  font-family: "Courier New", monospace;
  font-size: 13px;
}
.status .dot {
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #888;
  box-shadow: 0 0 0 1px #444 inset, 0 0 4px rgba(0,0,0,0.3) inset;
  flex-shrink: 0;
}
.status[data-state="online"]  .dot { background: #00d040; box-shadow: 0 0 0 1px #006020 inset, 0 0 6px #00ff60; }
.status[data-state="offline"] .dot { background: #d00020; box-shadow: 0 0 0 1px #600010 inset, 0 0 6px #ff0040; }
.status[data-state="loading"] .dot { background: #d0c000; box-shadow: 0 0 0 1px #604000 inset; animation: blink 0.9s steps(2, start) infinite; }
.status .label { flex: 1; min-width: 200px; }
.status .ip { display: inline-flex; align-items: center; gap: 4px; }
.status .ip code {
  background: #ffffcc;
  padding: 1px 6px;
  border: 1px solid #b0b070;
}
.copy {
  background: #e0e0e0;
  border: 2px outset #ccc;
  font-family: "Courier New", monospace;
  font-size: 12px;
  padding: 1px 6px;
  cursor: pointer;
  color: #008;
}
.copy:hover { background: #f0f0c0; }
.copy:active { border-style: inset; }
.copy.ok { background: #c0ffc0; color: #006000; border-color: #008000; }

/* big main title */
.title {
  font-family: "Comic Sans MS", cursive;
  font-size: 34px;
  text-align: center;
  margin: 16px 0 6px;
  color: #c80064;
  text-shadow:
    2px 2px 0 #ffe000,
    4px 4px 0 #00000022;
}

.title .blink {
  color: #0040ff;
  animation: blink 1.1s steps(2, start) infinite;
}
@keyframes blink {
  to { visibility: hidden; }
}

.sub {
  text-align: center;
  font-size: 14px;
  color: #333;
  margin: 0 24px 14px;
}

.rule {
  border: none;
  border-top: 2px groove #b89cff;
  margin: 18px 0;
}

/* the three steps */
.step {
  font-family: "Comic Sans MS", cursive;
  font-size: 22px;
  margin: 12px 0 6px;
  color: #006030;
  background: linear-gradient(90deg, #d0ffd0, #fffacd 60%, transparent);
  padding: 4px 8px;
  border-left: 6px solid #00a050;
}

.why {
  margin: 4px 8px 12px;
  font-size: 14px;
  color: #222;
}

.bigbtn {
  text-align: center;
  margin: 8px 0 14px;
}

/* the swap-buttons (pinecone, mrpack) */
.swap {
  display: inline-block;
  background: #fff;
  padding: 8px;
  border: 3px outset #ccc;
  text-decoration: none;
  cursor: pointer;
  transition: transform 0.06s;
}
.swap:hover {
  border-color: #ff66cc;
  background: #fff0f8;
}
.swap:active {
  border-style: inset;
  transform: translate(1px, 1px);
}
.swap.clicked {
  border-color: #00c000;
  background: #f0fff0;
}
.swap img {
  image-rendering: pixelated;
  display: block;
}

.bigbtn code {
  font-size: 13px;
  background: #ffffcc;
  padding: 1px 4px;
  border: 1px solid #b0b070;
}

.alt {
  font-size: 13px;
  color: #555;
}

/* step 3: ordered list of instructions */
.play {
  background: #fffacd;
  border: 2px ridge #d4af37;
  padding: 8px 8px 8px 36px;
  margin: 8px 8px;
  font-size: 14px;
}
.play li {
  margin: 4px 0;
}
.play code, .why code {
  background: #ffffcc;
  border: 1px solid #b0b070;
  padding: 0 3px;
  font-size: 13px;
}

/* faq */
.faq {
  background: #f0f8ff;
  border: 2px ridge #6080ff;
  padding: 8px 12px;
  font-size: 14px;
}
.faq summary {
  cursor: pointer;
  font-family: "Comic Sans MS", cursive;
  font-weight: bold;
  color: #0030a0;
  font-size: 16px;
}
.faq dl {
  margin: 8px 0 0;
}
.faq dt {
  font-weight: bold;
  margin-top: 8px;
  color: #003070;
}
.faq dd {
  margin: 2px 0 6px 16px;
  color: #222;
}

/* badge wall */
.badgewall {
  text-align: center;
  background: #1a1a1a;
  padding: 12px 8px;
  border: 3px inset #888;
}
.bwhead {
  color: #ffe000;
  font-family: "Comic Sans MS", cursive;
  font-size: 14px;
  margin: 0 0 8px;
  text-shadow: 1px 1px 0 #000;
}
.badgewall img {
  margin: 2px;
  image-rendering: pixelated;
  vertical-align: middle;
}

/* footer */
.foot {
  text-align: center;
  font-size: 12px;
  color: #444;
  font-family: "Times New Roman", Times, serif;
  margin: 16px 0 0;
}
.foot p {
  margin: 6px 0;
}
.counter {
  font-family: "Courier New", monospace;
  font-weight: bold;
  font-size: 14px;
  background: #000;
  color: #00ff40;
  display: inline-block;
  padding: 2px 8px;
  border: 2px inset #888;
}
.counter .under {
  font-family: "Times New Roman", serif;
  font-weight: normal;
  font-size: 11px;
  color: #888;
  background: transparent;
  padding-left: 6px;
}
#counterlast {
  color: #ff4040;
  animation: blink 0.8s steps(2, start) infinite;
}
.src a {
  color: #6020c0;
}
.konami {
  font-family: "Courier New", monospace;
  color: #888;
  font-size: 11px;
  margin-top: 12px !important;
}
.konami code {
  font-size: 11px;
  color: #666;
}

/* a few global polish bits */
a { color: #1010c0; }
a:visited { color: #802080; }
code { font-family: "Courier New", monospace; }

/* mobile-ish: don't try too hard; this is a desktop-era page */
@media (max-width: 720px) {
  .screen { margin: 0; padding: 8px; }
  .frame > tbody > tr > td { padding: 12px; }
  .title { font-size: 24px; }
  .hero img { max-width: 100%; height: auto; }
}
