:root {
  --night: #111218; --night-2: #1a1c24; --paper: #f4f1e8; --ink: #17181d;
  --muted: #898c96; --line: #353842; --signal: #baff29; --coral: #ff7048;
  --yellow: #ffd83d; --blue: #70b7ff; --display: "Arial Black", "Pretendard Variable", sans-serif;
  --body: "Pretendard Variable", Pretendard, "Noto Sans KR", sans-serif;
  color: var(--paper); background: var(--night); font-family: var(--body);
}
* { box-sizing: border-box; }
html { background: var(--night); }
body { min-width: 320px; margin: 0; background: var(--night); }
a { color: inherit; text-decoration: none; }
.shell { width: min(1240px, calc(100% - 48px)); margin-inline: auto; }
.skip-link { position: fixed; z-index: 1000; top: 8px; left: 8px; padding: 11px 15px; color: var(--night); background: var(--signal); font-weight: 900; transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }
:where(a, button):focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }
.site-header { position: sticky; z-index: 30; top: 0; border-bottom: 1px solid var(--line); background: rgb(17 18 24 / .96); backdrop-filter: blur(14px); }
.header-inner { min-height: 66px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 28px; }
.brand { min-height: 44px; display: inline-flex; align-items: center; gap: 11px; font: 900 18px var(--display); }
.brand-mark { width: 30px; height: 30px; display: grid; place-items: center; color: var(--night); background: var(--yellow); font-size: 9px; transform: rotate(-5deg); }
.site-header nav { min-width: 0; display: flex; justify-content: center; gap: 4px; overflow-x: auto; scrollbar-width: none; }
.site-header nav a { flex: 0 0 auto; min-height: 38px; display: inline-flex; align-items: center; padding: 0 11px; color: #a7a9b1; font-size: 11px; font-weight: 750; }
.site-header nav a:hover, .site-header nav a[aria-current="page"] { color: var(--night); background: var(--signal); }
.open-count { display: inline-flex; align-items: center; gap: 8px; color: #a7a9b1; font-size: 10px; font-weight: 800; white-space: nowrap; }
.open-count i { width: 7px; height: 7px; border-radius: 50%; background: var(--signal); box-shadow: 0 0 0 5px rgb(186 255 41 / .1); }
.gateway-hero { position: relative; overflow: hidden; border-bottom: 1px solid var(--line); }
.gateway-hero::after { position: absolute; inset: 0; z-index: 0; opacity: .26; pointer-events: none; background-image: linear-gradient(#343640 1px, transparent 1px), linear-gradient(90deg, #343640 1px, transparent 1px); background-size: 62px 62px; mask-image: linear-gradient(90deg, transparent, #000); content: ""; }
.gateway-grid { position: relative; z-index: 1; min-height: min(760px, calc(100svh - 66px)); display: grid; grid-template-columns: minmax(0, 1.04fr) minmax(360px, .96fr); align-items: center; gap: clamp(42px, 7vw, 100px); padding-block: clamp(72px, 9vw, 118px); }
.gateway-copy, .gateway-visual { min-width: 0; }
.eyebrow { margin: 0; color: var(--coral); font: 900 10px/1.3 "IBM Plex Mono", monospace; letter-spacing: .15em; }
.gateway-copy h1 { margin: 16px 0 0; font: 900 clamp(58px, 9vw, 118px)/.82 var(--display); letter-spacing: -.065em; overflow-wrap: anywhere; }
.gateway-copy h2 { max-width: 760px; margin: 34px 0 0; font: 900 clamp(25px, 3vw, 43px)/1.08 var(--display); letter-spacing: -.035em; }
.gateway-lead { max-width: 64ch; margin: 22px 0 0; color: #bec0c7; font-size: clamp(15px, 1.5vw, 18px); line-height: 1.75; }
.gateway-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; margin-top: 34px; }
.gateway-actions a { min-height: 54px; display: inline-flex; align-items: center; justify-content: space-between; gap: 32px; padding: 0 19px; font-size: 13px; font-weight: 900; }
.gateway-actions .launch { min-width: 230px; color: var(--night); background: var(--signal); }
.gateway-actions .launch span { font-size: 20px; transition: transform .2s cubic-bezier(.22,1,.36,1); }
.gateway-actions .launch:hover span { transform: translate(3px,-3px); }
.gateway-actions .back { min-height: 44px; padding-inline: 0; color: #a7a9b1; text-decoration: underline; text-underline-offset: 5px; }
.language-note { max-width: 62ch; margin: 25px 0 0; padding-top: 16px; border-top: 1px solid var(--line); color: #898c96; font-size: 11px; line-height: 1.7; overflow-wrap: anywhere; }
.language-note b { margin-right: 7px; color: var(--yellow); font: 800 9px "IBM Plex Mono", monospace; letter-spacing: .1em; }
.gateway-visual { position: relative; aspect-ratio: 1 / .78; display: grid; place-items: center; border: 1px solid #4b4e59; background: var(--night-2); box-shadow: 18px 18px 0 #292b34; transform: rotate(1.5deg); }
.gateway-visual::before { position: absolute; inset: 14px; border: 1px solid #353842; content: ""; }
.gateway-visual.has-image { overflow: hidden; background: #23252d; }
.gateway-visual.has-image::after { position: absolute; inset: auto 0 0; height: 32%; background: linear-gradient(transparent, rgb(17 18 24 / .92)); content: ""; }
.gateway-visual img { width: 100%; height: 100%; object-fit: cover; filter: saturate(.82) contrast(1.08); }
.gateway-clock span { color: var(--signal); font: 900 clamp(58px, 8vw, 112px)/1 "IBM Plex Mono", monospace; letter-spacing: -.08em; }
.gateway-clock i { position: absolute; right: 28px; bottom: 25px; color: #81848e; font: 700 10px "IBM Plex Mono", monospace; letter-spacing: .14em; }
.gateway-type { grid-template-columns: auto auto; align-content: center; gap: 8px; }
.gateway-type span { color: #737681; font: 900 36px var(--display); }
.gateway-type strong { grid-column: 1 / -1; padding: 15px 19px; color: var(--night); background: var(--yellow); font: 900 44px var(--display); transform: rotate(-4deg); }
.gateway-spec { color: var(--ink); background: var(--paper); }
.gateway-spec > .shell { display: grid; grid-template-columns: .72fr 1.28fr; gap: clamp(40px, 7vw, 100px); padding-block: clamp(60px, 8vw, 100px); }
.gateway-spec dl { display: grid; align-self: start; margin: 0; border-top: 5px solid var(--ink); }
.gateway-spec dl div { min-width: 0; display: grid; grid-template-columns: 100px minmax(0, 1fr); gap: 16px; padding: 17px 0; border-bottom: 1px solid #c9c6bc; }
.gateway-spec dt { color: #73746f; font: 800 9px "IBM Plex Mono", monospace; letter-spacing: .12em; }
.gateway-spec dd { margin: 0; font-size: 14px; font-weight: 850; overflow-wrap: anywhere; }
.gateway-how .eyebrow { color: var(--coral); }
.gateway-how ol { margin: 18px 0 0; padding: 0; border-top: 1px solid var(--ink); list-style: none; }
.gateway-how li { min-width: 0; display: grid; grid-template-columns: 52px minmax(0,1fr); align-items: center; gap: 16px; min-height: 74px; border-bottom: 1px solid #c9c6bc; }
.gateway-how li span { color: var(--coral); font: 900 11px "IBM Plex Mono", monospace; }
.gateway-how li b { font-size: clamp(16px, 2vw, 22px); line-height: 1.3; overflow-wrap: anywhere; }
footer { border-top: 1px solid var(--line); color: #8f929c; }
footer > div { min-height: 112px; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 28px; font-size: 11px; }
footer strong { color: var(--paper); font: 900 13px var(--display); }
footer nav { display: flex; flex-wrap: wrap; justify-content: end; gap: 16px; }
footer a:hover { color: var(--signal); }
.gateway-queue-zero { --signal: #baff29; }.gateway-oclock { --signal: #e9c77b; }.gateway-lumia { --signal: #ff7048; }.gateway-typeland { --signal: #ffd83d; }.gateway-tenmath { --signal: #70b7ff; }
@media (max-width: 820px) {
  .gateway-grid { min-height: 0; grid-template-columns: 1fr; padding-block: 64px 82px; }
  .gateway-visual { width: min(100%, 620px); }
  .gateway-spec > .shell { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .shell { width: min(100% - 28px, 1240px); }
  .header-inner { min-height: 58px; grid-template-columns: 1fr auto; }
  .gateway-copy h1 { font-size: clamp(48px, 17vw, 76px); }
  .gateway-visual { box-shadow: 9px 9px 0 #292b34; }
  .gateway-actions .launch { width: 100%; }
  .gateway-spec dl div { grid-template-columns: 82px minmax(0,1fr); }
  footer > div { grid-template-columns: 1fr; gap: 10px; padding-block: 28px; }
  footer nav { justify-content: start; }
}
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; transition-duration: .01ms !important; } }
