/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   leonardoro.com  ::  LEONARDORO BBS  ::  shared theme
   ANSI / DOS bulletin-board aesthetic
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */

:root{
  --dos-blue:#0000aa;      /* classic ANSI background blue */
  --dos-blue-dk:#00007f;
  --gray:#aaaaaa;          /* low-intensity white (default text) */
  --white:#ffffff;         /* high-intensity white */
  --cyan:#55ffff;          /* high cyan */
  --cyan-dk:#00aaaa;
  --magenta:#ff55ff;       /* high magenta */
  --yellow:#ffff55;        /* high yellow */
  --green:#55ff55;         /* high green */
  --red:#ff5555;           /* high red */
  --border:#55ffff;
}

*{ box-sizing:border-box; }

html{ background:#000; }
body{
  margin:0;
  background:var(--dos-blue);
  color:var(--gray);
  font-family:"IBM Plex Mono","DejaVu Sans Mono","Consolas","Courier New",monospace;
  font-size:15px;
  line-height:1.35;
}

/* subtle CRT curvature/scanline vibe */
body::before{
  content:"";
  position:fixed; inset:0; z-index:9999; pointer-events:none;
  background:repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px,
    rgba(0,0,0,0.14) 3px, rgba(0,0,0,0) 4px);
}

.screen{
  max-width:660px;   /* ~80 columns feel */
  margin:0 auto;
  padding:18px 16px 40px;
  min-height:100vh;
}

a{ color:var(--cyan); text-decoration:none; }
a:hover{ background:var(--cyan); color:var(--dos-blue); }
a:visited{ color:var(--magenta); }

/* ---- ANSI-style boxes (double-line border) ---- */
.box{
  border:3px double var(--border);
  padding:10px 14px;
  margin:0 0 14px;
  background:var(--dos-blue-dk);
}
.box.single{ border-style:solid; border-width:2px; }
.box.deny{ border-color:var(--red); background:#3a0000; text-align:center; padding:22px 16px; }
.box.deny pre{ margin:0; white-space:pre; overflow-x:auto; color:var(--red); font-size:12px; line-height:1.1; }

/* ---- the login / masthead banner ---- */
pre.ansi{
  margin:0;
  white-space:pre;
  overflow-x:auto;
  line-height:1.05;
  font-size:12px;
}
pre.ansi .c{ color:var(--cyan); }
pre.ansi .m{ color:var(--magenta); }
pre.ansi .y{ color:var(--yellow); }
pre.ansi .w{ color:var(--white); }

.center{ text-align:center; }
.white{ color:var(--white); }
.cyan{ color:var(--cyan); }
.magenta{ color:var(--magenta); }
.yellow{ color:var(--yellow); }
.green{ color:var(--green); }
.red{ color:var(--red); }

/* ---- status/node line ---- */
.statusline{
  background:var(--cyan-dk);
  color:var(--dos-blue);
  font-weight:bold;
  padding:2px 8px;
  margin:0 0 12px;
  display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap;
}

/* ---- BBS main menu (numbered options) ---- */
.menu{ margin:6px 0; }
.menu a{
  display:block;
  color:var(--gray);
  padding:3px 4px;
}
.menu a:hover{ background:var(--cyan); color:var(--dos-blue); }
.menu a .key{ color:var(--yellow); font-weight:bold; }
.menu a .key .br{ color:var(--white); }
.menu a[aria-current="page"]{ color:var(--white); }
.menu a[aria-current="page"] .key{ color:var(--green); }

/* horizontal quick-nav bar */
.navbar{ margin:0 0 12px; color:var(--gray); font-size:13px; }
.navbar a{ color:var(--cyan); }
.navbar a[aria-current="page"]{ color:var(--yellow); font-weight:bold; }
.navbar .sep{ color:var(--cyan-dk); }

/* ---- section heading ---- */
h1.dir{
  margin:0 0 2px; color:var(--yellow); font-size:18px; font-weight:bold;
}
.subtitle{ color:var(--cyan); font-size:13px; margin:0 0 12px; }

/* ---- message-base / file listing rows ---- */
.rows{ margin:8px 0; }
.entry{
  border-bottom:1px solid var(--cyan-dk);
  padding:8px 2px;
}
.entry:first-child{ border-top:1px solid var(--cyan-dk); }
.entry .name{ color:var(--white); font-weight:bold; }
.entry .name::before{ content:"\25BA "; color:var(--magenta); }
.entry .meta{ color:var(--cyan-dk); font-size:12px; }
.entry .desc{ color:var(--gray); margin:3px 0 0; }

.tag{
  color:var(--dos-blue); background:var(--yellow);
  font-size:11px; font-weight:bold;
  padding:0 5px; margin-right:5px;
}

/* ---- plain file/link list ---- */
ul.filelist{ list-style:none; padding:0; margin:10px 0; }
ul.filelist li{ padding:4px 0; color:var(--gray); }
ul.filelist li .idx{ color:var(--yellow); font-weight:bold; }

/* ---- prompt line ---- */
.prompt{ color:var(--gray); margin:16px 0 4px; }
.prompt .q{ color:var(--white); }
.cursor::after{
  content:"\2588"; color:var(--white);
  animation:blink 1s steps(1) infinite; margin-left:1px;
}
@keyframes blink{ 50%{ opacity:0; } }

/* ---- footer ---- */
footer{
  margin-top:22px; border-top:2px solid var(--cyan-dk);
  padding-top:8px; color:var(--cyan-dk); font-size:12px;
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px;
}
footer a{ color:var(--cyan); }

.hint{ color:var(--cyan-dk); font-size:12px; }
