/* ==========================================================================
   Old Servers — splash ("coming soon")
   Shared by rencrafters + prisonia. Per-server palette lives in theme.css.
   No frameworks, no build step. Type scales with vmin so the composition
   holds from a phone to a 4K window.
   ========================================================================== */

/* ---- Monocraft, SIL OFL 1.1 (self-hosted, see assets/fonts/OFL-Monocraft.txt) */
@font-face{
  font-family:"Monocraft";
  src:url("../fonts/monocraft.ttf") format("truetype");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"Monocraft";
  src:url("../fonts/monocraft-bold.ttf") format("truetype");
  font-weight:700;
  font-style:normal;
  font-display:swap;
}

/* ---- palette defaults (theme.css overrides) ------------------------------ */
:root{
  --bg-0:#070b08;
  --bg-1:#0d1510;
  --ink:#e9f3e5;
  --ink-dim:rgba(233,243,229,.60);
  --ink-faint:rgba(233,243,229,.38);
  --accent:#7ec850;
  --accent-bright:#a6e86f;
  --accent-soft:rgba(126,200,80,.14);
  --accent-line:rgba(126,200,80,.28);
  --glow:rgba(126,200,80,.30);
  --shadow-block:#1b2917;
  --art:none;
  --art-opacity:0;

  --font-pixel:"Monocraft","Press Start 2P",ui-monospace,monospace;
  --font-ui:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}

/* ---- reset --------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100svh;
  display:grid;
  grid-template-rows:1fr auto;
  background:
    radial-gradient(120% 80% at 50% 8%, var(--bg-1) 0%, var(--bg-0) 58%, #000 100%);
  color:var(--ink);
  font-family:var(--font-ui);
  overflow:hidden;
  -webkit-font-smoothing:antialiased;
}

/* the archived 2017 art, when a site has it, sits behind everything */
body::before{
  content:"";
  position:fixed;
  inset:-3vmax;
  background-image:var(--art);
  background-size:cover;
  background-position:center 30%;
  opacity:var(--art-opacity);
  filter:saturate(.9) contrast(1.05);
  z-index:0;
  pointer-events:none;
}
/* faint block grid — reads as "minecraft" without being loud */
body::after{
  content:"";
  position:fixed;
  inset:0;
  z-index:1;
  pointer-events:none;
  background-image:
    linear-gradient(to right, rgba(255,255,255,.03) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,255,255,.03) 1px, transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(85% 70% at 50% 40%, #000 0%, transparent 100%);
  -webkit-mask-image:radial-gradient(85% 70% at 50% 40%, #000 0%, transparent 100%);
}

#particles{
  position:fixed;
  inset:0;
  width:100%;
  height:100%;
  z-index:2;
  pointer-events:none;
  display:block;
}

.vignette{
  position:fixed;
  inset:0;
  z-index:3;
  pointer-events:none;
  background:radial-gradient(88% 80% at 50% 44%,
    transparent 0%,
    rgba(0,0,0,.12) 62%,
    rgba(0,0,0,.58) 100%);
}

/* ---- stage --------------------------------------------------------------- */
.stage{
  position:relative;
  z-index:4;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  padding:4vmin 5vmin 6vmin;
  text-align:center;
}

.logo{
  display:block;
  width:42vmin;
  max-width:78vw;
  height:auto;
  margin:0 0 5.5vmin;
  filter:drop-shadow(0 1.4vmin 4vmin rgba(0,0,0,.8));
}
.logo[hidden]{display:none}
/* when the recovered 2017 wordmark is present, it replaces the text eyebrow */
body.has-logo .eyebrow{display:none}

/* text-free brand anchor for a site with no recovered wordmark */
.emblem{
  width:22vmin;
  max-width:132px;
  margin:0 0 3.4vmin;
  filter:drop-shadow(0 0 4vmin var(--glow)) drop-shadow(0 1vmin 3vmin rgba(0,0,0,.8));
}
.emblem svg{display:block;width:100%;height:auto}

.eyebrow{
  margin:0 0 3vmin;
  font-family:var(--font-pixel);
  font-size:clamp(.62rem,1.5vmin,.95rem);
  letter-spacing:.42em;
  text-indent:.42em;
  text-transform:uppercase;
  color:var(--accent);
  opacity:.9;
  text-shadow:0 0 22px var(--glow);
}

/* ---- COMING SOON --------------------------------------------------------- */
.coming{
  margin:0;
  display:flex;
  flex-wrap:wrap;
  align-items:baseline;
  justify-content:center;
  gap:0 .36em;
  font-family:var(--font-pixel);
  font-weight:400;
  font-size:clamp(2.2rem,10.5vmin,12rem);
  line-height:1.02;
  letter-spacing:.015em;
  color:var(--ink);
  text-shadow:
    0.4vmin 0.4vmin 0 var(--shadow-block),
    0.95vmin 0.95vmin 0 rgba(0,0,0,.45),
    0 0 6vmin var(--glow);
  animation:bob 3.4s cubic-bezier(.45,0,.55,1) infinite;
  will-change:transform;
}
.coming .w{display:inline-block}

@keyframes bob{
  0%,100%{transform:translate3d(0,0,0)}
  50%    {transform:translate3d(0,-1.6vmin,0)}
}

/* ---- copy ---------------------------------------------------------------- */
.intro{
  margin:4vmin 0 0;
  max-width:36ch;
  font-size:clamp(1rem,2.2vmin,1.6rem);
  line-height:1.7;
  color:var(--ink-dim);
  text-wrap:balance;
}

/* ---- ip pill ------------------------------------------------------------- */
.ip-row{margin-top:5vmin}

.ip{
  appearance:none;
  display:inline-flex;
  align-items:center;
  gap:.7em;
  padding:1.1vmin 2.2vmin 1.1vmin 1.7vmin;
  min-height:44px;
  border:1px solid var(--accent-line);
  border-radius:999px;
  background:linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.015));
  backdrop-filter:blur(6px);
  color:var(--ink);
  font-family:var(--font-pixel);
  font-size:clamp(.78rem,2vmin,1.35rem);
  letter-spacing:.06em;
  cursor:pointer;
  transition:border-color .18s ease, box-shadow .18s ease, transform .12s ease;
  box-shadow:0 0 0 0 var(--glow), inset 0 1px 0 rgba(255,255,255,.05);
}
.ip:hover,.ip:focus-visible{
  border-color:var(--accent);
  box-shadow:0 0 3vmin -0.6vmin var(--glow), inset 0 1px 0 rgba(255,255,255,.08);
  outline:none;
}
.ip:active{transform:translateY(1px) scale(.995)}

.ip-dot{
  width:.55em;height:.55em;
  border-radius:50%;
  background:var(--accent);
  box-shadow:0 0 1vmin 0.1vmin var(--glow);
  flex:none;
  animation:pulse 2.6s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:.5}50%{opacity:1}}

.ip-text{white-space:nowrap}
.ip-copy{display:inline-flex;color:var(--ink-faint);transition:color .18s}
.ip:hover .ip-copy{color:var(--accent)}
.ip-done{display:none;color:var(--accent-bright);letter-spacing:.18em}
.ip.is-copied .ip-copy{display:none}
.ip.is-copied .ip-done{display:inline}
.ip.is-copied{border-color:var(--accent)}

/* ---- meta + footer ------------------------------------------------------- */
.meta{
  margin:5vmin 0 0;
  font-family:var(--font-pixel);
  font-size:clamp(.6rem,1.4vmin,.85rem);
  letter-spacing:.26em;
  text-indent:.26em;
  text-transform:uppercase;
  color:var(--ink-faint);
}

.foot{
  position:relative;
  z-index:4;
  padding:0 1.5rem 3vmin;
  text-align:center;
  font-size:clamp(.66rem,1.4vmin,.85rem);
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--ink-faint);
}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* ---- narrow screens ------------------------------------------------------ */
@media (max-width:560px){
  .coming{
    flex-direction:column;
    gap:.06em;
    font-size:clamp(2.6rem,16vw,5rem);
    text-shadow:
      2px 2px 0 var(--shadow-block),
      5px 5px 0 rgba(0,0,0,.45),
      0 0 28px var(--glow);
  }
  .logo{width:72vw;max-width:72vw;margin-bottom:7vw}
  .emblem{width:34vw;max-width:150px;margin-bottom:7vw}
  .eyebrow{letter-spacing:.3em;text-indent:.3em}
  .intro{max-width:26ch;font-size:1rem;margin-top:7vw}
  .ip-row{margin-top:8vw}
  .ip{font-size:.8rem;letter-spacing:.03em;padding:.85rem 1.2rem}
  .meta{margin-top:8vw;font-size:.62rem}
  .stage{padding:10vw 6vw 14vw}
}

/* ---- motion / contrast preferences -------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .coming{animation:none}
  .ip-dot{animation:none}
  #particles{display:none}
}
@media (prefers-contrast:more){
  .intro{color:var(--ink)}
  .meta,.foot{color:var(--ink-dim)}
}
