/* G-Nook approved gold/purple entry and verification visual system. */
:root {
  --gn-auth-bg: #05060d;
  --gn-auth-ink: #f7f0ff;
  --gn-auth-muted: #b9b1c8;
  --gn-auth-soft: #85809a;
  --gn-auth-gold: #f4c94d;
  --gn-auth-gold-2: #fff2a8;
  --gn-auth-purple: #8b35ff;
  --gn-auth-purple-2: #c47aff;
  --gn-auth-panel: rgba(10, 9, 22, .86);
  --gn-auth-line: rgba(244, 201, 77, .56);
  --gn-auth-radius: 26px;
  --gn-auth-serif: Georgia, "Times New Roman", serif;
  --gn-auth-ui: "Segoe UI", Arial, sans-serif;
}

* { box-sizing: border-box; }

html, body { min-height: 100%; }

body.gn-auth-body,
body.mfa-body {
  margin: 0;
  color: var(--gn-auth-ink);
  font-family: var(--gn-auth-ui);
  background:
    radial-gradient(circle at 72% 20%, rgba(129, 41, 255, .30), transparent 28%),
    radial-gradient(circle at 22% 76%, rgba(200, 145, 45, .16), transparent 26%),
    #03040b;
}

.gn-auth-body a,
.mfa-body a { color: inherit; }

.gn-auth-shell {
  min-height: 100vh;
  display: grid;
  grid-template-rows: auto 1fr auto;
  background: linear-gradient(180deg, rgba(3, 4, 12, .24), rgba(3, 4, 12, .94));
}

.gn-auth-topbar {
  height: 72px;
  display: flex;
  align-items: center;
  gap: 28px;
  padding: 0 34px;
  position: relative;
  z-index: 3;
}

.gn-auth-topbar:after {
  content: "";
  position: absolute;
  left: 24px;
  right: 24px;
  bottom: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(244, 201, 77, .72), rgba(150, 61, 255, .76), rgba(244, 201, 77, .72), transparent);
}

.gn-auth-logo {
  display: inline-flex;
  align-items: center;
  min-width: 176px;
  text-decoration: none;
}

.gn-auth-logo img {
  width: 174px;
  height: auto;
  object-fit: contain;
}

.gn-auth-nav {
  display: flex;
  gap: 24px;
  align-items: center;
  text-transform: uppercase;
  letter-spacing: .11em;
  font-size: 12px;
  font-weight: 800;
  color: #eee8f8;
}

.gn-auth-nav a {
  text-decoration: none;
  opacity: .9;
}

.gn-auth-nav a:hover { color: var(--gn-auth-gold-2); }

.gn-auth-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 10px;
}

.gn-auth-link,
.gn-auth-button {
  border: 1px solid rgba(255, 255, 255, .22);
  border-radius: 8px;
  min-height: 34px;
  padding: 8px 15px;
  background: rgba(2, 3, 8, .62);
  color: #fff;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: 11px;
  font-weight: 900;
}

.gn-auth-button,
.gn-auth-submit {
  border-color: rgba(186, 111, 255, .74);
  background: linear-gradient(180deg, #9b4cff, #561db7);
  box-shadow: inset 0 1px rgba(255,255,255,.35), 0 0 22px rgba(139, 53, 255, .34);
}

.gn-auth-stage {
  display: grid;
  min-height: calc(100vh - 150px);
  padding: 30px 28px 22px;
}

.gn-auth-stage--portal {
  background:
    linear-gradient(180deg, rgba(5, 8, 20, .08), rgba(5, 8, 20, .76)),
    url("/assets/theme/grand-plaza/portal-grand-plaza-clean-2560.jpg") center top / cover no-repeat;
}

.gn-auth-stage--premium {
  grid-template-columns: minmax(0, 1fr) minmax(360px, 520px);
  gap: 42px;
  align-items: center;
  background:
    linear-gradient(90deg, rgba(5, 7, 16, .58), rgba(5, 7, 16, .26) 42%, rgba(5, 7, 16, .92) 76%),
    url("/assets/theme/grand-plaza/portal-grand-plaza-clean-2560.jpg") center / cover no-repeat;
}

.gn-auth-hero-copy {
  align-self: center;
  max-width: 720px;
  margin-left: 4vw;
  text-shadow: 0 8px 24px rgba(0,0,0,.72);
}

.gn-auth-hero-copy h1 {
  margin: 0 0 12px;
  font: 900 clamp(42px, 5.4vw, 80px) / .98 var(--gn-auth-serif);
  letter-spacing: .02em;
}

.gn-auth-hero-copy p {
  margin: 0 0 26px;
  max-width: 520px;
  color: #f0e8ff;
  font-size: 18px;
  line-height: 1.5;
}

.gn-auth-entry-cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 275px;
  min-height: 72px;
  padding: 15px 32px;
  clip-path: polygon(8% 0, 92% 0, 100% 50%, 92% 100%, 8% 100%, 0 50%);
  border: 2px solid rgba(244, 201, 77, .84);
  color: #ffe995;
  background: linear-gradient(180deg, rgba(91, 34, 124, .94), rgba(49, 17, 69, .98));
  box-shadow: 0 0 36px rgba(139, 53, 255, .44), inset 0 1px rgba(255,255,255,.35);
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
}

.gn-auth-entry-cta strong {
  display: block;
  font: 900 20px / 1 var(--gn-auth-serif);
  letter-spacing: .08em;
}

.gn-auth-entry-cta small {
  display: block;
  margin-top: 4px;
  color: #fff2c2;
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .08em;
}

.gn-auth-card {
  width: min(100%, 476px);
  margin: 0 auto;
  padding: 31px 32px;
  border: 1px solid rgba(244, 201, 77, .42);
  border-radius: var(--gn-auth-radius);
  background: linear-gradient(180deg, rgba(14, 11, 30, .92), rgba(8, 7, 18, .96));
  box-shadow: 0 28px 90px rgba(0,0,0,.62), 0 0 48px rgba(139, 53, 255, .22);
  position: relative;
}

.gn-auth-card--wide { width: min(100%, 840px); }

.gn-auth-card h1,
.gn-auth-card h2 {
  margin: 0 0 12px;
  font: 900 28px / 1.1 var(--gn-auth-serif);
}

.gn-auth-card p {
  color: var(--gn-auth-muted);
  line-height: 1.55;
}

.gn-auth-kicker {
  margin: 0 0 10px;
  color: var(--gn-auth-gold);
  font-size: 11px;
  font-weight: 900;
  letter-spacing: .18em;
  text-transform: uppercase;
}

.gn-auth-form { display: grid; gap: 14px; }

.gn-auth-field { display: grid; gap: 7px; }

.gn-auth-field span,
.gn-auth-label {
  color: #ded7e9;
  font-size: 12px;
  font-weight: 800;
}

.gn-auth-input,
.gn-auth-select {
  width: 100%;
  min-height: 48px;
  border: 1px solid rgba(255,255,255,.15);
  border-radius: 9px;
  padding: 12px 14px;
  color: #fff;
  background: rgba(4, 5, 14, .82);
  outline: none;
}

.gn-auth-input:focus,
.gn-auth-select:focus {
  border-color: var(--gn-auth-purple-2);
  box-shadow: 0 0 0 3px rgba(139, 53, 255, .28);
}

.gn-auth-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.gn-auth-check {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: var(--gn-auth-muted);
  font-size: 12px;
}

.gn-auth-subtle-link {
  color: var(--gn-auth-purple-2);
  font-size: 12px;
}

.gn-auth-submit {
  width: 100%;
  min-height: 50px;
  border-radius: 9px;
  color: #fff;
  border: 1px solid rgba(205, 147, 255, .8);
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: .08em;
}

.gn-auth-submit--gold {
  color: #201000;
  border-color: #fff2a8;
  background: linear-gradient(180deg, #fff4a8, #f0bd35 55%, #a86a0a);
  text-shadow: 0 1px rgba(255,255,255,.58);
}

.gn-auth-divider {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 12px;
  color: var(--gn-auth-soft);
  font-size: 11px;
  margin: 2px 0;
}

.gn-auth-divider:before,
.gn-auth-divider:after {
  content: "";
  height: 1px;
  background: rgba(255,255,255,.12);
}

.gn-auth-socials {
  display: flex;
  gap: 10px;
  justify-content: center;
}

.gn-auth-socials span,
.gn-auth-feature i {
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 10px;
  background: rgba(12, 13, 28, .84);
  color: var(--gn-auth-gold);
  font-weight: 900;
}

.gn-auth-features {
  display: grid;
  gap: 14px;
  margin-top: 30px;
  max-width: 460px;
}

.gn-auth-feature {
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 14px;
  align-items: center;
}

.gn-auth-feature strong { display: block; color: #fff; }
.gn-auth-feature small { color: var(--gn-auth-muted); }

.gn-auth-mini-dock,
.gn-auth-bottom-dock {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  align-items: stretch;
  padding: 16px 28px 24px;
}

.gn-auth-mini-dock a,
.gn-auth-bottom-dock a {
  display: grid;
  place-items: center;
  gap: 4px;
  min-height: 70px;
  text-align: center;
  text-decoration: none;
  border: 1px solid rgba(139, 53, 255, .42);
  border-radius: 12px;
  background: rgba(12, 13, 28, .76);
  box-shadow: inset 0 1px rgba(255,255,255,.12);
}

.gn-auth-mini-dock strong,
.gn-auth-bottom-dock strong {
  color: #fff;
  text-transform: uppercase;
  font-size: 12px;
}

.gn-auth-mini-dock small,
.gn-auth-bottom-dock small {
  color: var(--gn-auth-muted);
  font-size: 11px;
}

.gn-auth-alert {
  border-radius: 11px;
  padding: 12px 14px;
  color: #ffe7ed;
  background: rgba(84, 10, 27, .78);
  border: 1px solid rgba(255, 94, 124, .48);
}

.gn-auth-alert--ok {
  color: #dfffea;
  background: rgba(9, 62, 35, .72);
  border-color: rgba(82, 235, 139, .46);
}

.gn-auth-footer {
  color: #d1bd7d;
  text-align: center;
  padding: 12px 22px 20px;
  font: 700 13px var(--gn-auth-serif);
  letter-spacing: .16em;
  text-transform: uppercase;
}

.gn-mfa-shell {
  min-height: 100vh;
  display: grid;
  place-items: center;
  padding: 34px 18px;
  background:
    radial-gradient(circle at 10% 50%, rgba(120, 34, 174, .24), transparent 32%),
    radial-gradient(circle at 88% 44%, rgba(78, 19, 132, .48), transparent 28%),
    #040511;
}

.gn-mfa-frame {
  width: min(1355px, 100%);
  min-height: 820px;
  display: grid;
  grid-template-columns: 610px minmax(0, 1fr);
  border: 2px solid rgba(220, 151, 34, .78);
  border-radius: 32px;
  overflow: hidden;
  background: #0b0b1c;
  box-shadow: 0 42px 130px rgba(0,0,0,.66), 0 0 70px rgba(139, 53, 255, .22);
  position: relative;
}

.gn-mfa-art {
  position: relative;
  min-height: 760px;
  background:
    linear-gradient(180deg, rgba(10, 8, 22, .72) 0 29%, rgba(10, 8, 22, .08) 30% 77%, rgba(10, 8, 22, .58)),
    url("/assets/theme/grand-plaza/portal-grand-plaza-clean-2560.jpg") center bottom / cover no-repeat;
  border-right: 1px solid rgba(139, 53, 255, .42);
}

.gn-mfa-art-copy {
  position: absolute;
  left: 40px;
  right: 40px;
  bottom: 38px;
  padding: 26px;
  border: 1px solid var(--gn-auth-line);
  border-radius: 18px;
  background: rgba(15, 10, 32, .86);
}

.gn-mfa-art-copy p {
  margin: 0 0 8px;
  color: #d7c4f4;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .22em;
  text-transform: uppercase;
}

.gn-mfa-art-copy h1 {
  margin: 0 0 13px;
  font: 900 34px / .98 var(--gn-auth-serif);
}

.gn-mfa-art-copy span {
  display: block;
  color: var(--gn-auth-muted);
  line-height: 1.45;
}

.gn-mfa-panel {
  display: grid;
  align-content: center;
  padding: 44px 82px;
  background: linear-gradient(180deg, rgba(11, 11, 32, .98), rgba(8, 8, 24, .98));
}

.gn-mfa-logo {
  width: 280px;
  margin: 0 auto 18px;
}

.gn-mfa-progress {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-bottom: 28px;
  color: #a8a1b8;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.gn-mfa-progress i {
  width: 66px;
  height: 6px;
  border-radius: 999px;
  background: linear-gradient(90deg, #e9c444 0 47%, #9a35f8 48% 100%);
  box-shadow: 0 0 12px rgba(139, 53, 255, .46);
}

.gn-mfa-heading { text-align: center; }

.gn-mfa-heading p {
  margin: 0 0 14px;
  color: var(--gn-auth-gold);
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .22em;
  text-transform: uppercase;
}

.gn-mfa-heading h2 {
  margin: 0 0 14px;
  font: 900 45px / 1.05 var(--gn-auth-serif);
}

.gn-mfa-heading span {
  display: block;
  max-width: 610px;
  margin: 0 auto;
  color: var(--gn-auth-muted);
  font-size: 17px;
  line-height: 1.45;
}

.gn-mfa-heading strong { color: #ffeb8c; }

.gn-mfa-message {
  margin: 24px auto 26px;
  max-width: 580px;
  padding: 15px 18px;
  border-radius: 13px;
  text-align: center;
  font-weight: 900;
  color: #dffff0;
  background: rgba(8, 54, 37, .72);
  border: 1px solid rgba(77, 230, 139, .58);
}

.gn-mfa-message--error {
  color: #ffe4ec;
  background: rgba(70, 10, 25, .74);
  border-color: rgba(255, 91, 127, .56);
}

.gn-mfa-message--success {
  color: #dffff0;
  background: rgba(8, 54, 37, .72);
  border-color: rgba(77, 230, 139, .58);
}

.gn-mfa-form fieldset {
  border: 0;
  padding: 0;
  margin: 0;
}

.gn-mfa-form legend {
  text-align: center;
  width: 100%;
  margin-bottom: 12px;
  color: #ddd7eb;
  font-size: 13px;
  font-weight: 900;
}

.gn-mfa-code {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 12px;
  max-width: 510px;
  margin: 0 auto;
}

.gn-mfa-code input {
  height: 82px;
  text-align: center;
  font-size: 36px;
  font-weight: 900;
  color: #fff;
  border: 1px solid rgba(244, 201, 77, .72);
  border-radius: 13px;
  background: rgba(9, 9, 28, .92);
  outline: none;
}

.gn-mfa-code input:focus {
  border-color: #fff2a8;
  box-shadow: 0 0 0 3px rgba(139, 53, 255, .38), 0 0 24px rgba(244, 201, 77, .22);
}

.gn-mfa-expiry {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin: 18px 0 28px;
  color: var(--gn-auth-soft);
}

.gn-mfa-expiry strong { color: var(--gn-auth-gold); }

.gn-mfa-verify {
  width: 100%;
  max-width: 580px;
  min-height: 63px;
  display: block;
  margin: 0 auto;
  border-radius: 14px;
  border: 1px solid #fff0a0;
  color: #190e04;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
  background: linear-gradient(180deg, #fff7b9 0%, #f0bf39 53%, #a86a08 100%);
  box-shadow: inset 0 2px rgba(255,255,255,.62), 0 16px 36px rgba(169, 107, 8, .30);
}

.gn-mfa-secondary {
  max-width: 580px;
  margin: 21px auto 0;
  display: flex;
  justify-content: space-between;
  gap: 14px;
  color: #d1b3ff;
}

.gn-mfa-secondary form { margin: 0; }

.gn-mfa-secondary button {
  border: 0;
  background: transparent;
  color: #cdb5ff;
  font-weight: 800;
}

.gn-mfa-secondary form:last-child button { color: var(--gn-auth-gold); }

.gn-mfa-attempts {
  max-width: 580px;
  margin: 20px auto 0;
  color: var(--gn-auth-soft);
  font-size: 12px;
  text-align: center;
}

.gn-mfa-security-points {
  max-width: 580px;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
  margin: 32px auto 0;
  padding-top: 22px;
  border-top: 1px solid rgba(255,255,255,.13);
}

.gn-mfa-security-points div {
  min-height: 86px;
  padding: 14px 10px;
  text-align: center;
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 12px;
  background: rgba(7, 8, 22, .7);
}

.gn-mfa-security-points strong {
  display: block;
  color: var(--gn-auth-gold);
  font-size: 12px;
}

.gn-mfa-security-points small {
  display: block;
  margin-top: 6px;
  color: var(--gn-auth-soft);
  font-size: 11px;
  line-height: 1.35;
}

@media (max-width: 1080px) {
  .gn-auth-stage--premium { grid-template-columns: 1fr; }
  .gn-auth-hero-copy { margin: 20px auto 0; text-align: center; }
  .gn-mfa-frame { grid-template-columns: 1fr; }
  .gn-mfa-art { min-height: 390px; border-right: 0; border-bottom: 1px solid rgba(139, 53, 255, .42); }
  .gn-mfa-panel { padding: 36px 22px; }
}

@media (max-width: 720px) {
  .gn-auth-topbar { height: auto; flex-wrap: wrap; padding: 16px; gap: 14px; }
  .gn-auth-nav { order: 3; width: 100%; justify-content: center; flex-wrap: wrap; gap: 14px; }
  .gn-auth-stage { padding: 18px 14px; }
  .gn-auth-stage--premium { gap: 20px; }
  .gn-auth-card { padding: 24px 20px; }
  .gn-auth-mini-dock, .gn-auth-bottom-dock { grid-template-columns: 1fr 1fr; padding: 14px; }
  .gn-mfa-frame { border-radius: 20px; }
  .gn-mfa-heading h2 { font-size: 32px; }
  .gn-mfa-code { gap: 7px; }
  .gn-mfa-code input { height: 58px; font-size: 26px; border-radius: 10px; }
  .gn-mfa-security-points { grid-template-columns: 1fr; }
}
