:root{
  --bg:#0e0e10;
  --bg2:#131316;
  --dim:#0d3b22;
  --mid:#1f9e5a;
  --hot:#4dffa0;
  --pale:#c9ffe4;
  --grey:#8a8a92;
  --px:"Press Start 2P",monospace;
  --mono:"JetBrains Mono",Consolas,monospace;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  background:var(--bg);color:var(--pale);
  font-family:var(--mono);font-size:15px;line-height:1.65;
  overflow-x:hidden;
}
img{image-rendering:pixelated}
a{color:var(--hot)}

/* scanlines */
#scanlines{
  position:fixed;inset:0;pointer-events:none;z-index:90;
  background:repeating-linear-gradient(0deg,rgba(0,0,0,.25) 0 1px,transparent 1px 4px);
  opacity:.45;
}

/* boot overlay */
#boot{
  position:fixed;inset:0;background:var(--bg);z-index:200;
  display:flex;flex-direction:column;justify-content:center;padding:8vh 10vw;
  transition:opacity .4s;
}
#boot.done{opacity:0;pointer-events:none}
#bootlog{font-family:var(--mono);color:var(--hot);font-size:15px;line-height:1.9;white-space:pre-wrap}
#bootskip{margin-top:4vh;color:var(--dim);font-family:var(--px);font-size:9px;animation:blink 1.2s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* top bar */
#topbar{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 24px;background:rgba(14,14,16,.92);
  border-bottom:2px solid var(--dim);backdrop-filter:blur(4px);
}
.wordmark{
  font-family:var(--px);font-size:12px;color:var(--hot);text-decoration:none;
  text-shadow:0 0 8px rgba(77,255,160,.5);
}
#topbar nav{display:flex;gap:12px}
.btn{
  font-family:var(--px);font-size:10px;text-decoration:none;cursor:pointer;
  padding:12px 18px;border:2px solid var(--mid);color:var(--hot);
  background:transparent;letter-spacing:1px;
}
.btn:hover{border-color:var(--hot);text-shadow:0 0 8px rgba(77,255,160,.7)}
.btn-solid{background:var(--hot);color:var(--bg);border-color:var(--hot)}
.btn-solid:hover{background:var(--pale);text-shadow:none}
.btn.big{font-size:12px;padding:16px 26px}

main{padding-top:64px}
section{max-width:1180px;margin:0 auto;padding:72px 24px}
h2{
  font-family:var(--px);font-size:16px;color:var(--mid);
  margin-bottom:36px;letter-spacing:1px;
}
h2::after{content:"";display:block;height:3px;width:120px;background:var(--dim);margin-top:14px}

/* hero */
#hero{
  display:flex;gap:48px;align-items:center;min-height:78vh;flex-wrap:wrap;
}
.hero-text{flex:1 1 380px}
h1{
  font-family:var(--px);font-size:clamp(28px,5vw,52px);line-height:1.35;
  color:var(--pale);text-shadow:0 0 18px rgba(77,255,160,.35);
}
.rule{height:4px;width:220px;background:var(--mid);margin:26px 0}
.tag{color:var(--mid);font-size:16px;margin-bottom:34px;letter-spacing:.5px}
.hero-wall{
  flex:1 1 420px;display:grid;grid-template-columns:repeat(4,1fr);gap:10px;
}
.hero-wall img{width:100%;aspect-ratio:1;border:1px solid #1c1c20}

/* gate */
.term{border:2px solid var(--dim);background:var(--bg2)}
.term-head{
  display:flex;justify-content:space-between;padding:10px 14px;
  border-bottom:2px solid var(--dim);font-family:var(--px);font-size:8px;
  color:var(--mid);
}
#term-status{color:#a01226}
.term-body{
  min-height:230px;max-height:380px;overflow-y:auto;padding:16px;
  font-size:14px;white-space:pre-wrap;color:var(--hot);
}
.term-body .err{color:#ff2d4a}
.term-body .dim{color:var(--mid)}
.term-input{
  display:flex;align-items:center;gap:8px;padding:12px 16px;
  border-top:2px solid var(--dim);
}
.ps1{color:var(--mid)}
#termin{
  flex:1;background:transparent;border:none;outline:none;color:var(--hot);
  font-family:var(--mono);font-size:15px;caret-color:transparent;
}
.cursor{width:9px;height:18px;background:var(--hot);animation:blink 1s steps(1) infinite}
.gate-note{margin-top:22px;color:var(--grey);font-size:13px;max-width:640px}

/* plates */
.filters{margin-bottom:26px}
.chiprow{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.chip{
  font-family:var(--mono);font-size:12px;padding:5px 12px;cursor:pointer;
  border:1px solid var(--dim);color:var(--grey);background:transparent;
}
.chip.on{border-color:var(--hot);color:var(--hot)}
.grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px;
}
.cell{position:relative;cursor:pointer;border:1px solid #1c1c20}
.cell img{width:100%;aspect-ratio:1;display:block}
.cell:hover{border-color:var(--mid)}
.cell .lbl{
  position:absolute;left:0;right:0;bottom:0;padding:3px 6px;
  background:rgba(14,14,16,.85);font-size:10px;color:var(--mid);
  opacity:0;transition:opacity .15s;
}
.cell:hover .lbl{opacity:1}

/* system */
.panels{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}
.panel{border:2px solid var(--dim);padding:26px;background:var(--bg2)}
.panel h3{font-family:var(--px);font-size:11px;color:var(--hot);margin-bottom:16px}
.panel p{color:var(--grey);font-size:14px}

/* rules */
.rules-list div{
  display:flex;justify-content:space-between;align-items:baseline;
  padding:20px 4px;border-bottom:2px solid var(--dim);
}
.rules-list span{font-family:var(--px);font-size:11px;color:var(--mid)}
.rules-list b{font-family:var(--px);font-size:15px;color:var(--pale)}

footer{
  border-top:2px solid var(--dim);padding:30px 24px;text-align:center;
  color:var(--grey);font-size:12px;
}
footer .sep{margin:0 12px;color:var(--dim)}
footer a{text-decoration:none}

/* modal */
#modal{
  position:fixed;inset:0;z-index:150;background:rgba(0,0,0,.82);
  display:flex;align-items:center;justify-content:center;
}
#modal[hidden]{display:none}
.modal-box{
  background:var(--bg2);border:2px solid var(--mid);padding:22px;
  display:flex;flex-direction:column;gap:14px;align-items:center;
}
#modal-img{width:384px;height:384px}
.modal-meta{font-size:13px;color:var(--mid);text-align:center;white-space:pre-line}

@media(max-width:700px){
  .wordmark{font-size:9px}
  .btn{font-size:8px;padding:10px 12px}
  #modal-img{width:280px;height:280px}
  #hero{min-height:auto}
}
