/* Gate: the home hero's eye, centred over a single password field. */
.gt {
  position: relative; min-height: 100vh; min-height: 100svh; display: flex; align-items: flex-end; justify-content: center;
  padding: 0 var(--gutter) clamp(36px, 7vh, 84px); overflow: hidden; isolation: isolate;
}
.gt #scene { position: absolute; inset: 0; z-index: -1; pointer-events: none; }
.gt #scene canvas { display: block; width: 100%; height: 100%; }
.gt-in {
  position: relative; width: min(440px, 100%); display: grid; justify-items: center; gap: 14px; text-align: center;
  opacity: 0; transform: translateY(22px); animation: gt-in 1s var(--ease) 0.9s forwards;
}
@keyframes gt-in { to { opacity: 1; transform: none; } }
.gt-in .brand { color: var(--tx); text-decoration: none; font-size: 19px; }
.gt-in .brand img { width: 28px; height: 28px; }
.gt-pill { margin: 2px 0 0; display: inline-flex; align-items: center; gap: 8px; padding: 6px 12px; border-radius: 999px; }
.gt-pill .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--violet); box-shadow: 0 0 10px var(--violet); animation: gt-dot 2.4s var(--ease) infinite; }
@keyframes gt-dot { 50% { opacity: 0.35; } }
.gt-h { margin: 6px 0 2px; font-size: clamp(34px, 5.4vw, 54px); line-height: 0.95; font-weight: 700; letter-spacing: -0.05em; }
.gt-form {
  position: relative; display: grid; grid-template-columns: 1fr auto; gap: 6px; width: 100%; margin-top: 10px; padding: 6px;
  border-radius: 14px; border: 1px solid var(--line); background: rgba(10, 10, 12, 0.72); backdrop-filter: blur(12px);
  transition: border-color 0.25s, box-shadow 0.25s, transform 0.25s;
}
.gt-form:focus-within { border-color: var(--violet-d); box-shadow: 0 0 0 4px rgba(168, 85, 247, 0.14), 0 20px 60px -30px rgba(168, 85, 247, 0.6); }
.gt-form input {
  font: 500 16px var(--mono); letter-spacing: 0.16em; color: var(--tx); background: transparent; border: 0; outline: 0; padding: 0 14px; min-width: 0; height: 46px;
}
.gt-form input::placeholder { color: var(--tx3); letter-spacing: 0.04em; }
.gt-form .b3 { height: 46px; padding: 0 18px; border-radius: 10px; }
.gt-form.busy .b3 { pointer-events: none; opacity: 0.75; }
.gt-form.ok { border-color: var(--violet); box-shadow: 0 0 0 4px rgba(168, 85, 247, 0.22), 0 0 60px -10px rgba(168, 85, 247, 0.8); }
.gt-form.no { animation: gt-shake 0.45s var(--ease); border-color: var(--dn); }
@keyframes gt-shake { 0%, 100% { transform: none; } 20% { transform: translateX(-7px); } 40% { transform: translateX(6px); } 60% { transform: translateX(-4px); } 80% { transform: translateX(2px); } }
/* the same comet that rides the Launch button on the home hero */
.gt .b3.violet::after {
  content: ""; position: absolute; left: 0; top: 0; width: 22px; height: 6px; border-radius: 999px; pointer-events: none;
  background: linear-gradient(90deg, rgba(233, 213, 255, 0), #e9d5ff 60%, #fff); filter: drop-shadow(0 0 4px rgba(233, 213, 255, 0.9));
  offset-path: rect(0 100% 100% 0 round 10px); offset-anchor: 100% 50%; offset-rotate: auto; animation: gt-comet 4.5s linear infinite;
}
@keyframes gt-comet { to { offset-distance: 100%; } }
.gt-err { margin: 0; min-height: 1.2em; font: 500 12px var(--mono); letter-spacing: 0.1em; text-transform: uppercase; color: var(--dn); }
.gt-foot { margin: 2px 0 0; font: 500 11px var(--mono); letter-spacing: 0.14em; text-transform: uppercase; color: var(--tx3); }
@media (max-width: 859px) {
  .gt { padding-bottom: 40px; }
  .gt-h { font-size: clamp(32px, 9vw, 44px); }
  .gt-form { grid-template-columns: 1fr; }
  .gt-form .b3 { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .gt-in { animation: none; opacity: 1; transform: none; }
  .gt-pill .dot, .gt .b3.violet::after { animation: none; }
  .gt .b3.violet::after { display: none; }
}
