/* =========================================================================
   TIM KLEMENT — Coming Soon
   Design tokens
   ========================================================================= */
:root{
  --bg:            #0A0D12;
  --bg-panel:      #10141C;
  --line:          #1E2733;
  --line-soft:     rgba(77, 168, 255, 0.10);
  --text:          #E8ECF1;
  --text-muted:    #7C8798;
  --accent-amber:  #FFB020;
  --accent-blue:   #4DA8FF;
  --accent-blue-dim: rgba(77, 168, 255, 0.35);

  --font-display: "Space Grotesk", "Inter", system-ui, sans-serif;
  --font-body:    "Inter", system-ui, sans-serif;
  --font-mono:    "JetBrains Mono", ui-monospace, SFMono-Regular, monospace;

  --radius: 10px;
  --container: 1180px;
}

*, *::before, *::after{ box-sizing:border-box; }
html,body{ height:100%; }
html{ scroll-behavior:smooth; }

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-body);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img,svg{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
button{ font:inherit; }

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

.skip-link{
  position:absolute; left:-999px; top:0; z-index:200;
  background:var(--accent-amber); color:#111; padding:.75rem 1.25rem;
  border-radius:0 0 8px 0; font-family:var(--font-mono); font-size:.85rem;
}
.skip-link:focus{ left:0; }

:focus-visible{
  outline:2px solid var(--accent-amber);
  outline-offset:3px;
  border-radius:4px;
}

/* =========================================================================
   LOADER
   ========================================================================= */
.loader{
  position:fixed; top:0; right:0; bottom:0; left:0; inset:0; z-index:999;
  width:100%; height:100%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:1.5rem;
  background:radial-gradient(ellipse at center, #0D1119 0%, #05070A 100%);
  transition:opacity .6s ease, visibility .6s ease;
}
.loader.is-hidden{
  opacity:0; visibility:hidden; pointer-events:none;
}

.loader-mark{ overflow:visible; }
.loader-frame{
  fill:none; stroke:var(--line); stroke-width:1.5;
}
.loader-glyph{
  fill:none; stroke:var(--accent-amber); stroke-width:4; stroke-linecap:round;
  stroke-dasharray:80; stroke-dashoffset:80;
  animation:draw-glyph 1.6s ease forwards infinite;
}
.loader-glyph--k1{ animation-delay:.15s; }
.loader-glyph--k2{ animation-delay:.3s; }
.loader-glyph--k3{ animation-delay:.45s; stroke:var(--accent-blue); }

@keyframes draw-glyph{
  0%{ stroke-dashoffset:80; }
  40%,60%{ stroke-dashoffset:0; }
  100%{ stroke-dashoffset:-80; }
}

.loader-bar{
  width:200px; height:3px; border-radius:99px;
  background:var(--line); overflow:hidden;
}
.loader-bar-fill{
  display:block; height:100%; width:0%;
  background:linear-gradient(90deg, var(--accent-blue), var(--accent-amber));
  transition:width .25s ease;
}
.loader-text{
  margin:0; font-family:var(--font-mono); font-size:.8rem;
  letter-spacing:.08em; color:var(--text-muted); text-transform:uppercase;
}

@media (prefers-reduced-motion: reduce){
  .loader-glyph{ animation:none; stroke-dashoffset:0; }
}

/* =========================================================================
   BLUEPRINT BACKDROP
   ========================================================================= */
.backdrop{
  position:fixed; top:0; right:0; bottom:0; left:0; inset:0; z-index:0; overflow:hidden;
  width:100%; height:100%;
}
.grid-lines{
  position:absolute; top:-2px; right:-2px; bottom:-2px; left:-2px; inset:-2px;
  background-image:
    linear-gradient(var(--line-soft) 1px, transparent 1px),
    linear-gradient(90deg, var(--line-soft) 1px, transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 80% 70% at 50% 30%, #000 40%, transparent 90%);
  mask-image:radial-gradient(ellipse 80% 70% at 50% 30%, #000 40%, transparent 90%);
}
.glow{
  position:absolute; border-radius:50%; filter:blur(120px); opacity:.28;
}
.glow--a{
  width:520px; height:520px; background:var(--accent-blue);
  top:-160px; right:-120px;
}
.glow--b{
  width:420px; height:420px; background:var(--accent-amber);
  bottom:-140px; left:-100px; opacity:.14;
}

/* =========================================================================
   HEADER
   ========================================================================= */
.site-header{
  position:relative; z-index:10;
  display:flex; align-items:center; justify-content:space-between;
  max-width:var(--container); margin:0 auto;
  padding:1.75rem clamp(1.25rem, 4vw, 2.5rem) 0;
}
.brand-mark{
  font-family:var(--font-mono); font-weight:500; font-size:.95rem;
  letter-spacing:.15em;
  border:1px solid var(--line); border-radius:6px;
  padding:.4rem .65rem;
  color:var(--text-muted);
}
.lang-switch a{
  display:inline-flex; align-items:center; gap:.4rem;
  font-family:var(--font-mono); font-size:.8rem; letter-spacing:.08em;
  border:1px solid var(--line); border-radius:99px;
  padding:.45rem .9rem;
  color:var(--text-muted);
  transition:border-color .2s ease, color .2s ease, background .2s ease;
}
.lang-switch a:hover{
  color:var(--text); border-color:var(--accent-blue-dim);
  background:rgba(77,168,255,.06);
}

/* =========================================================================
   HERO
   ========================================================================= */
.hero{
  position:relative; z-index:10;
  min-height:100svh;
  display:flex; align-items:center;
  padding:2rem clamp(1.25rem, 4vw, 2.5rem) 3rem;
}
.hero-inner{
  max-width:var(--container); margin:0 auto; width:100%;
  display:grid; grid-template-columns:1.15fr .85fr;
  gap:clamp(2rem, 6vw, 5rem);
  align-items:center;
}

.eyebrow{
  display:inline-flex; align-items:center; gap:.55rem;
  margin:0 0 1.5rem;
  font-family:var(--font-mono); font-size:.78rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--accent-amber);
}
.eyebrow-dot{
  width:7px; height:7px; border-radius:50%;
  background:var(--accent-amber);
  box-shadow:0 0 0 4px rgba(255,176,32,.15);
  animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{
  0%,100%{ transform:scale(1); opacity:1; }
  50%{ transform:scale(1.25); opacity:.6; }
}

.headline{
  margin:0 0 1.1rem;
  font-family:var(--font-display);
  font-weight:700;
  font-size:clamp(3rem, 8vw, 5.5rem);
  line-height:.95;
  letter-spacing:-.02em;
}
.headline-line{ display:block; }
.headline-line--accent{
  background:linear-gradient(120deg, var(--accent-blue) 10%, var(--accent-amber) 90%);
  -webkit-background-clip:text; background-clip:text; color:transparent;
}

.role{
  margin:0 0 1.5rem;
  font-family:var(--font-display); font-weight:500;
  font-size:clamp(1.05rem, 2vw, 1.3rem);
  color:var(--text);
}

.lead{
  margin:0 0 2.25rem;
  max-width:46ch;
  font-size:1.02rem; line-height:1.65;
  color:var(--text-muted);
}

/* ---- form ---- */
.subscribe{ max-width:460px; }
.subscribe-row{
  display:flex; gap:.6rem;
}
.subscribe-input{
  flex:1; min-width:0;
  background:var(--bg-panel);
  border:1px solid var(--line);
  border-radius:8px;
  padding:.9rem 1rem;
  color:var(--text);
  font-family:var(--font-body);
  font-size:.95rem;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.subscribe-input::placeholder{ color:#4C5666; }
.subscribe-input:focus{
  outline:none; border-color:var(--accent-blue);
  box-shadow:0 0 0 3px rgba(77,168,255,.15);
}
.subscribe-btn{
  flex-shrink:0;
  display:inline-flex; align-items:center; justify-content:center;
  background:var(--accent-amber);
  color:#161200;
  border:none; border-radius:8px;
  padding:.9rem 1.4rem;
  font-weight:600; font-size:.95rem;
  cursor:pointer;
  transition:transform .15s ease, box-shadow .15s ease, background .15s ease;
}
.subscribe-btn:hover{
  background:#FFC24D;
  transform:translateY(-1px);
  box-shadow:0 6px 20px rgba(255,176,32,.25);
}
.subscribe-btn:active{ transform:translateY(0); }
.subscribe-btn:disabled{ opacity:.6; cursor:progress; transform:none; }

.hp-field{
  position:absolute !important; left:-9999px !important;
  width:1px; height:1px; opacity:0;
}

.form-msg{
  min-height:1.4em; margin:.85rem 0 0;
  font-size:.88rem;
}
.form-msg[data-state="ok"]{ color:#5FE0A0; }
.form-msg[data-state="error"]{ color:#FF7A7A; }

.privacy-note{
  margin:.6rem 0 0;
  font-size:.78rem; color:#59616E;
}

/* ---- progress ---- */
.progress{ margin-top:2.75rem; max-width:320px; }
.progress-labels{
  display:flex; justify-content:space-between;
  font-family:var(--font-mono); font-size:.72rem; letter-spacing:.06em;
  color:var(--text-muted); margin-bottom:.5rem; text-transform:uppercase;
}
.progress-track{
  height:4px; border-radius:99px; background:var(--line); overflow:hidden;
}
.progress-fill{
  display:block; height:100%; border-radius:99px;
  background:linear-gradient(90deg, var(--accent-blue), var(--accent-amber));
}

/* =========================================================================
   3D SEAL / COIN
   ========================================================================= */
.scene{
  position:relative;
  display:flex; align-items:center; justify-content:center;
  min-height:340px;
}
.scene-perspective{
  perspective:1000px;
  width:260px; height:260px;
}
.coin{
  position:relative;
  width:100%; height:100%;
  transform-style:preserve-3d;
  transform:rotateX(-8deg) rotateY(0deg);
  animation:spin-coin 16s linear infinite;
  will-change:transform;
}
@keyframes spin-coin{
  from{ transform:rotateX(-8deg) rotateY(0deg); }
  to{ transform:rotateX(-8deg) rotateY(360deg); }
}

.coin-face{
  position:absolute; top:0; right:0; bottom:0; left:0; inset:0;
  border-radius:50%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:.4rem;
  backface-visibility:hidden;
  border:1px solid rgba(77,168,255,.35);
  background:
    radial-gradient(circle at 32% 28%, rgba(77,168,255,.18), transparent 55%),
    linear-gradient(155deg, #131A24 0%, #0B0F16 70%);
  box-shadow:
    inset 0 0 0 1px rgba(255,255,255,.03),
    inset 0 20px 40px rgba(0,0,0,.5);
}
.coin-face--front{ transform:translateZ(22px); }
.coin-face--back{ transform:rotateY(180deg) translateZ(22px); }

.coin-tk{
  font-family:var(--font-display); font-weight:700;
  font-size:3.4rem; letter-spacing:.02em;
  background:linear-gradient(120deg, var(--accent-blue), #BFE0FF 60%, var(--accent-amber));
  -webkit-background-clip:text; background-clip:text; color:transparent;
}
.coin-tagline{
  font-family:var(--font-mono); font-size:.62rem; letter-spacing:.22em;
  color:var(--accent-amber); text-transform:uppercase;
}
.coin-code{
  font-family:var(--font-mono); font-weight:500; font-size:2.2rem;
  color:var(--accent-blue);
}

.coin-edge{
  position:absolute; top:0; right:0; bottom:0; left:0; inset:0; transform-style:preserve-3d;
}
.coin-edge span{
  position:absolute; top:50%; left:50%;
  width:1px; height:44px;
  transform-origin:center;
  display:flex; align-items:center; justify-content:center;
}
.coin-edge span em{
  display:block; font-style:normal;
  font-family:var(--font-mono); font-size:9px; letter-spacing:.05em;
  color:var(--text-muted);
  transform:rotate(90deg);
  white-space:nowrap;
}

/* subtle ambient float for the whole scene */
.scene-perspective{ animation:float-scene 6s ease-in-out infinite; }
@keyframes float-scene{
  0%,100%{ transform:translateY(0); }
  50%{ transform:translateY(-10px); }
}

@media (prefers-reduced-motion: reduce){
  .coin{ animation:none; }
  .scene-perspective{ animation:none; }
  .eyebrow-dot{ animation:none; }
}

/* =========================================================================
   FOOTER
   ========================================================================= */
.site-footer{
  position:relative; z-index:10;
  max-width:var(--container); margin:0 auto;
  padding:0 clamp(1.25rem, 4vw, 2.5rem) 2.5rem;
  display:flex; flex-wrap:wrap; gap:1rem;
  align-items:center; justify-content:space-between;
  font-size:.82rem; color:#4C5666;
}
.footer-social{
  display:flex; gap:.6rem;
}
.footer-social a{
  display:inline-flex; align-items:center; justify-content:center;
  width:34px; height:34px; border-radius:8px;
  border:1px solid var(--line);
  font-family:var(--font-mono); font-size:.72rem;
  color:var(--text-muted);
  transition:border-color .2s ease, color .2s ease;
}
.footer-social a:hover{
  color:var(--accent-blue); border-color:var(--accent-blue-dim);
}

/* =========================================================================
   RESPONSIVE
   ========================================================================= */
@media (max-width: 980px){
  .hero-inner{
    grid-template-columns:1fr;
    text-align:left;
  }
  .scene{ order:-1; min-height:220px; }
  .scene-perspective{ width:190px; height:190px; }
  .coin-tk{ font-size:2.5rem; }
}

@media (max-width: 560px){
  .site-header{ padding-top:1.25rem; }
  .headline{ font-size:clamp(2.5rem, 13vw, 3.4rem); }
  .subscribe-row{ flex-direction:column; }
  .subscribe-btn{ width:100%; }
  .site-footer{ flex-direction:column; align-items:flex-start; }
}

@media (max-width: 360px){
  .coin-tagline{ display:none; }
}
