:root {
  --ge-ink: #050815;
  --ge-panel: #0a1022;
  --ge-panel-2: #0e1830;
  --ge-line: rgba(0, 220, 255, 0.28);
  --ge-line-strong: rgba(0, 240, 255, 0.5);
  --ge-text: #d9e3f4;
  --ge-muted: #8ea0bb;
  --ge-cyan: #00f0ff;
  --ge-amber: #00f0ff;
  --ge-danger: #ff7c71;
  --ge-display: "Orbitron", sans-serif;
  --ge-body: "Exo 2", sans-serif;
}

* { box-sizing: border-box; }

html {
  color-scheme: dark;
  scroll-behavior: smooth;
}

body.ge-public-page {
  margin: 0;
  min-height: 100vh;
  color: var(--ge-text);
  background: transparent;
  font-family: var(--ge-body);
  line-height: 1.65;
  overflow-x: hidden;
}

a { color: var(--ge-cyan); }

a:hover { color: #94fff0; }

a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--ge-amber);
  outline-offset: 4px;
}

.ge-public-shell {
  width: min(1180px, calc(100% - 2rem));
  margin: 0 auto;
  padding: clamp(2rem, 6vw, 5.5rem) 0 5rem;
}

.ge-public-home-shell .ge-public-shell {
  position: relative;
  z-index: 1;
  padding-top: clamp(8.5rem, 14vw, 11rem);
}

.ge-public-breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.55rem;
  margin-bottom: 2rem;
  color: var(--ge-muted);
  font-size: 0.78rem;
  letter-spacing: 0.05em;
}

.ge-public-breadcrumbs a { color: var(--ge-muted); }

.ge-public-hero {
  position: relative;
  max-width: 38rem;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  min-width: 0;
}

.ge-public-hero::before {
  content: none;
}

.ge-public-hero .ge-public-kicker {
  margin-bottom: 1.1rem;
}

.ge-public-hero h1 {
  max-width: none;
  text-wrap: balance;
}

.ge-public-deck {
  margin-bottom: 0;
  overflow-wrap: anywhere;
}

.ge-public-metadata {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 2.5rem;
  margin: 2rem 0 0;
  padding-top: 1rem;
  border-top: 1px solid var(--ge-line);
}

.ge-public-metadata div { display: grid; flex: 1 1 14rem; gap: 0.15rem; min-width: 0; }

.ge-public-metadata dt {
  color: var(--ge-muted);
  font-family: var(--ge-display);
  font-size: 0.58rem;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.ge-public-metadata dd {
  margin: 0;
  color: #dce7f8;
  font-size: 0.84rem;
  overflow-wrap: anywhere;
}

.ge-public-content-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 230px;
  gap: clamp(2rem, 6vw, 5rem);
  align-items: start;
  margin-top: clamp(3rem, 7vw, 6rem);
}

.ge-public-article {
  min-width: 0;
  font-size: 1.02rem;
  overflow-wrap: anywhere;
}

.ge-public-article > :first-child { margin-top: 0; }

.ge-public-article h2,
.ge-public-article h3,
.ge-public-index h2,
.ge-public-cta h2 {
  color: #f5f8ff;
  font-family: var(--ge-display);
  line-height: 1.18;
  scroll-margin-top: 2rem;
}

.ge-public-article h2 {
  margin: 3.5rem 0 1rem;
  padding: 0.8rem 0 0.8rem 1rem;
  border-left: 2px solid var(--ge-cyan);
  border-bottom: 1px solid var(--ge-line);
  font-size: clamp(1.35rem, 3vw, 2rem);
}

.ge-public-article h3 {
  margin: 2.2rem 0 0.7rem;
  color: #dce8ff;
  font-size: 1.05rem;
  letter-spacing: 0.03em;
}

.ge-public-article p { max-width: 76ch; }

.ge-public-article li { margin: 0.45rem 0; }

.ge-public-article code {
  padding: 0.12rem 0.35rem;
  color: #c8fff6;
  border: 1px solid rgba(75, 223, 200, 0.22);
  background: rgba(75, 223, 200, 0.08);
  font-size: 0.88em;
}

.ge-public-article pre {
  overflow-x: auto;
  padding: 1.2rem;
  border: 1px solid var(--ge-line);
  background: #040713;
}

.ge-public-article blockquote {
  margin: 1.8rem 0;
  padding: 0.25rem 1.2rem;
  color: #c8d6ea;
  border-left: 3px solid var(--ge-amber);
  background: rgba(239, 189, 91, 0.06);
}

.ge-guide-unmapped {
  color: var(--ge-muted);
  border-bottom: 1px dotted rgba(142, 160, 187, 0.55);
}

.ge-guide-image-note {
  color: var(--ge-muted);
  font-style: italic;
}

.ge-guide-source-toc {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0 0 2.5rem;
  padding: 1rem;
  border: 1px solid var(--ge-line);
  background: rgba(10, 16, 34, 0.7);
}

.ge-guide-source-toc a {
  padding: 0.35rem 0.55rem;
  color: #c2d0e4;
  border: 1px solid rgba(126, 156, 206, 0.18);
  font-size: 0.78rem;
  line-height: 1.35;
  text-decoration: none;
}

.ge-guide-source-toc a:hover { color: var(--ge-cyan); }

.ge-public-table-wrap {
  max-width: 100%;
  margin: 1.5rem 0 2rem;
  overflow-x: auto;
  border: 1px solid var(--ge-line);
}

.ge-public-table-wrap table {
  width: 100%;
  border-collapse: collapse;
  background: rgba(8, 14, 30, 0.82);
  font-size: 0.9rem;
}

.ge-public-table-wrap th,
.ge-public-table-wrap td {
  min-width: 8rem;
  padding: 0.7rem 0.8rem;
  overflow-wrap: normal;
  text-align: left;
  vertical-align: top;
  border-right: 1px solid var(--ge-line);
  border-bottom: 1px solid var(--ge-line);
}

.ge-public-table-wrap th {
  color: var(--ge-amber);
  font-family: var(--ge-display);
  font-size: 0.66rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.ge-public-rail {
  position: sticky;
  top: 1.5rem;
  display: grid;
  padding: 1.1rem 0;
  border-top: 1px solid var(--ge-amber);
  border-bottom: 1px solid var(--ge-line);
}

.ge-public-rail-label {
  margin: 0 0 0.65rem;
  color: var(--ge-muted);
  font-family: var(--ge-display);
  font-size: 0.58rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
}

.ge-public-rail a {
  padding: 0.52rem 0;
  color: #c0cce0;
  border-top: 1px solid rgba(126, 156, 206, 0.12);
  font-size: 0.88rem;
  text-decoration: none;
}

.ge-public-rail a:hover { color: var(--ge-cyan); }

.ge-public-cta {
  margin-top: clamp(4rem, 10vw, 8rem);
  padding: clamp(1.5rem, 4vw, 3rem);
  border: 1px solid var(--ge-line);
  background: linear-gradient(120deg, rgba(75, 223, 200, 0.08), rgba(14, 24, 48, 0.65));
}

.ge-public-cta h2 {
  max-width: 16ch;
  margin: 0 0 1.5rem;
  font-size: clamp(1.55rem, 4vw, 2.8rem);
}

.ge-public-cta > div {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 1.5rem;
}

.ge-public-button {
  display: inline-flex;
  padding: 0.85rem 1.15rem;
  color: #03100e;
  background: var(--ge-cyan);
  font-family: var(--ge-display);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-decoration: none;
  text-transform: uppercase;
}

.ge-public-button:hover { color: #03100e; background: #8bffed; }

.ge-public-text-link { font-weight: 700; }

.ge-public-footer { margin-top: clamp(1rem, 4vw, 3rem); }

.ge-public-index-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1px;
  margin-top: clamp(3rem, 7vw, 6rem);
  border: 1px solid var(--ge-line);
  background: var(--ge-line);
}

.ge-public-index-card {
  position: relative;
  min-height: 220px;
  padding: clamp(1.3rem, 3vw, 2.2rem);
  color: var(--ge-text);
  background: rgba(8, 14, 30, 0.96);
  text-decoration: none;
  transition: background 160ms ease, transform 160ms ease;
}

.ge-public-index-card:hover {
  z-index: 1;
  color: var(--ge-text);
  background: #101d36;
  transform: translateY(-3px);
}

.ge-public-index-card span {
  color: var(--ge-amber);
  font-family: var(--ge-display);
  font-size: 0.58rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.ge-public-index-card h2 {
  margin: 1.8rem 0 0.7rem;
  font-size: clamp(1.15rem, 3vw, 1.7rem);
}

.ge-public-index-card p { margin: 0; color: var(--ge-muted); }

.ge-rules-toc {
  display: flex;
  flex-wrap: wrap;
  gap: 0.55rem;
  margin: 0 0 2rem;
  padding: 1rem;
  border: 1px solid var(--ge-line);
  background: rgba(10, 16, 34, 0.7);
}

.ge-rules-toc a {
  padding: 0.35rem 0.55rem;
  color: #c2d0e4;
  border: 1px solid rgba(126, 156, 206, 0.18);
  font-size: 0.8rem;
  text-decoration: none;
}

.ge-rules-note,
.ge-rules-warning {
  margin: 1.1rem 0;
  padding: 1rem 1.1rem;
  border-left: 3px solid var(--ge-cyan);
  background: rgba(75, 223, 200, 0.07);
}

.ge-rules-warning {
  border-left-color: var(--ge-amber);
  background: rgba(239, 189, 91, 0.07);
}

@media (max-width: 820px) {
  .ge-public-content-grid { grid-template-columns: 1fr; }
  .ge-public-rail { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1rem; }
  .ge-public-rail-label { grid-column: 1 / -1; }
}

@media (max-width: 560px) {
  .ge-public-shell { width: min(calc(100% - 1.2rem), 1180px); }
  .ge-public-index-grid { grid-template-columns: 1fr; }
  .ge-public-rail { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: 0.01ms !important; }
}
