:root {
  color-scheme: dark;
  font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  color: #edf1f6;
  background: #0e151e;
}

* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; min-width: 320px; }
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
button { cursor: pointer; }
:focus-visible { outline: 2px solid #e1bb62; outline-offset: 3px; }

.nav-body { background: radial-gradient(circle at 12% 10%, rgba(32, 80, 77, .1), transparent 32%), radial-gradient(circle at 88% 82%, rgba(36, 55, 77, .1), transparent 38%), #0d141d; }
.nav-shell {
  width: min(100%, 388px);
  min-height: 100vh;
  margin: 0 auto;
  padding: 0 15px 28px;
  background: #151e29;
  box-shadow: 0 0 42px rgba(0, 0, 0, .18);
}
.game-section { opacity: 0; transition: opacity .6s; }
.game-section.is-visible { opacity: 1; }
.nav-header {
  height: 54px;
  margin: 0 -15px 20px;
  padding: 0 15px;
  display: flex;
  align-items: center;
  border-bottom: 1px solid #26303d;
}
.nav-brand { display: inline-flex; align-items: center; gap: 9px; font-size: 14px; }
.nav-brand strong { font-size: 13px; letter-spacing: .01em; }
.globe-icon {
  width: 25px;
  height: 25px;
  display: grid;
  place-items: center;
  border-radius: 5px;
  color: #fff;
  font-size: 21px;
  line-height: 1;
  background: linear-gradient(135deg, #5da49c, #267a6c);
}
.nav-section { margin-bottom: 30px; }
.section-title {
  margin: 0 0 15px;
  display: flex;
  align-items: center;
  gap: 9px;
  color: #b4becb;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: .08em;
}
.section-title::before { content: ""; width: 3px; height: 13px; border-radius: 2px; background: #d3af5d; }
.game-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.route-card {
  min-height: 86px;
  padding: 22px 14px 13px;
  border: 1px solid #2c3b43;
  border-radius: 17px;
  background: radial-gradient(circle at 92% 15%, rgba(35, 125, 94, .13), transparent 56%), linear-gradient(145deg, #1b2831, #1a222c);
  display: flex;
  flex-direction: column;
  position: relative;
  transition: border-color .16s, box-shadow .16s, transform .16s;
}
.route-card:hover { border-color: #2e8a72; box-shadow: 0 7px 18px #050d1780; transform: translateY(-2px); }
.route-card:first-child { border-color: #31554e; }
.route-card strong { margin: 0 0 12px; font-size: 13px; }
.route-badge {
  position: absolute;
  right: 8px;
  top: 8px;
  padding: 3px 7px;
  border-radius: 7px;
  color: #dfffea;
  font-size: 10px;
  font-weight: 800;
  background: #138360;
  box-shadow: 0 0 12px rgba(17, 164, 110, .38);
}
.route-card:first-child .route-badge { background: #ff681d; box-shadow: 0 0 13px rgba(255, 101, 22, .6); }
.route-ping-row { display: flex; align-items: flex-end; gap: 8px; }
.route-status { color: #55a98a; font-size: 11px; font-weight: 700; }
.route-signal { height: 11px; display: flex; align-items: flex-end; gap: 2px; }
.route-signal i { width: 3px; height: 3px; border-radius: 1px; background: #55a98a; }
.route-signal i:nth-child(2) { height: 5px; }
.route-signal i:nth-child(3) { height: 8px; }
.route-signal i:nth-child(4) { height: 11px; }
.route-arrow { position: absolute; bottom: 10px; right: 12px; color: #6d998c; font-size: 20px; }
.loading-card {
  grid-column: 1 / -1;
  padding: 26px 14px;
  border: 1px solid #2c3b43;
  border-radius: 13px;
  color: #8c9aaa;
  font-size: 12px;
  text-align: center;
}
.error-card { color: #e0b67d; }
.links-section { margin-bottom: 20px; }
.link-group { margin-bottom: 19px; }
.link-group h3 { margin: 0 0 10px; color: #8290a2; font-size: 11px; font-weight: 500; }
.link-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.site-link {
  min-height: 74px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: 1px solid #2c3743;
  border-radius: 12px;
  background: #202b36;
  color: #9cacbc;
  font-size: 10px;
}
.site-link:hover { border-color: #618c82; color: #f1f5f7; }
.site-icon {
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border-radius: 6px;
  background: #cf282c;
  color: white;
  font-size: 13px;
  font-weight: 800;
}
.site-link:nth-child(4n+1) .site-icon { background: #3256bc; }
.site-link:nth-child(4n+2) .site-icon { background: #de3928; }
.site-link:nth-child(4n+3) .site-icon { background: #e52f49; }
.search-bar { display: flex; margin: 17px 0 23px; border: 1px solid #344555; border-radius: 12px; overflow: hidden; }
.search-bar input { min-width: 0; flex: 1; height: 42px; padding: 0 13px; border: 0; outline: 0; color: #e4ecf5; background: #1c2937; }
.search-bar button { width: 45px; border: 0; color: #e4c478; background: #2b3541; font-size: 25px; }
.nav-footer { padding: 10px 0 0; border-top: 1px solid #293542; color: #66778a; font-size: 10px; text-align: center; }

.flow-body {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  background-color: #111923;
  background-image: radial-gradient(circle at 12% 10%, rgba(27, 73, 73, .1), transparent 33%), linear-gradient(rgba(187, 200, 209, .015) 1px, transparent 1px), linear-gradient(90deg, rgba(187, 200, 209, .015) 1px, transparent 1px);
  background-size: auto, 40px 40px, 40px 40px;
}
.flow-body:not(.entry-body)::before { content: ""; position: fixed; inset: 0; pointer-events: none; background: radial-gradient(circle at 50% 50%, rgba(47, 95, 91, .1), transparent 40%); animation: verify-backdrop-arrive .9s both; }
.verify-card {
  width: min(100%, 360px);
  padding: 31px 24px 36px;
  border: 1px solid #2b3846;
  border-radius: 25px;
  background: linear-gradient(150deg, #1c2935, #19232e 64%);
  box-shadow: 0 17px 36px rgba(0, 0, 0, .3);
  text-align: center;
  animation: verify-arrive .48s both;
  transition: min-height .4s ease;
}
.verify-card.is-loading { min-height: 310px; }
.verify-card.is-ready { min-height: 370px; }
.verify-card h1 { margin: 0 0 5px; color: #f1f2f4; font-size: 22px; }
.verify-subtitle { margin: 0; color: #91a0b2; font-size: 13px; }
.progress-wrap { margin: 43px 0 0; text-align: left; }
.progress-heading { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 12px; color: #aeb8c5; font-size: 13px; }
.progress-heading strong { color: #d9b95e; font-size: 13px; }
.progress-track { height: 5px; overflow: hidden; border-radius: 5px; background: rgba(255,255,255,.06); }
.progress-fill { width: 8%; height: 100%; border-radius: inherit; background: linear-gradient(90deg,#267c65,#e3bd5f); box-shadow: 0 0 8px rgba(63,186,134,.35); transition: width .35s cubic-bezier(.4,0,.2,1); }
.progress-steps { display: flex; justify-content: space-between; margin-top: 20px; }
.progress-step { width: 25%; display: flex; flex-direction: column; align-items: center; gap: 5px; color: #677582; font-size: 11px; }
.progress-step b { width: 25px; height: 25px; display: grid; place-items: center; border: 1px solid #34404c; border-radius: 50%; color: #74818e; font-size: 11px; font-weight: 500; background: #202c37; transition: color .25s,border-color .25s,background .25s; }
.progress-step small { font-size: 11px; }
.progress-step.is-active { color: #c9d5d4; }
.progress-step.is-active b { border-color: #c7aa5d; color: #e3c373; }
.progress-step.is-done { color: #6fc3a1; }
.progress-step.is-done b { color: #84d6b0; border-color: #3b866f; background: #1d3a37; }
.progress-dots { display: flex; justify-content: center; gap: 5px; margin-top: 26px; }
.progress-dots i { width: 5px; height: 5px; border-radius: 50%; background: #6a7c79; animation: loading-dot 1.4s ease-in-out infinite; }
.progress-dots i:nth-child(2) { animation-delay: .2s; }
.progress-dots i:nth-child(3) { animation-delay: .4s; }
.verify-card.is-ready #verify-content { animation: nav-arrive .35s both; }
.verify-symbols { display: flex; justify-content: space-around; margin: 40px 0 20px; }
.verify-symbols span { display: flex; flex-direction: column; align-items: center; gap: 6px; color: #aab8c8; animation: nav-arrive .38s both; }
.verify-symbols span:nth-child(1) { animation-delay: .22s; }
.verify-symbols span:nth-child(2) { animation-delay: .3s; }
.verify-symbols span:nth-child(3) { animation-delay: .38s; }
.verify-symbols b { width: 40px; height: 40px; display: grid; place-items: center; border: 1px solid #344353; border-radius: 14px; background: #202d39; transition: border-color .3s, background .3s, box-shadow .3s; }
.verify-symbols svg { width: 18px; height: 18px; stroke: #ced9e1; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.verify-symbols small { color: #708194; font-size: 11px; transition: color .3s; }
.slide-instruction { margin: 0 0 17px; color: #b8c3d2; font-size: 14px; animation: nav-arrive .4s .43s both; }
.slide-instruction strong { color: #e5bb63; }
.slider-track { height: 53px; position: relative; border-radius: 28px; border: 1px solid #354350; background: #202b36; touch-action: none; user-select: none; animation: nav-arrive .4s .5s both; }
.slider-progress { width: 46px; height: 100%; border-radius: inherit; background: rgba(28, 124, 94, .17); transition: background .3s; }
.slider-hint { position: absolute; inset: 0; display: grid; place-items: center; color: #8392a6; font-size: 13px; pointer-events: none; transition: opacity .2s; }
.slider-handle { position: absolute; top: 3px; left: 3px; width: 45px; height: 45px; padding: 0; border: 0; border-radius: 50%; color: #2a2b24; background: linear-gradient(135deg, #ffe384, #d6a632); box-shadow: 0 1px 0 #fff6b4 inset, 0 3px 9px #070d16aa; font-size: 27px; touch-action: none; transition: background .3s, box-shadow .3s; }
.verify-message { min-height: 17px; margin: 12px 0 0; color: #68c0a2; font-size: 11px; }
.verify-card.is-verified .verify-symbols b { border-color: #27896d; background: #194337; box-shadow: 0 0 15px rgba(48, 191, 136, .22); }
.verify-card.is-verified .verify-symbols svg { stroke: #75e0ae; }
.verify-card.is-verified .verify-symbols small { color: #70c5a2; }
.verify-card.is-verified .slider-track { border-color: #397d65; box-shadow: 0 0 0 3px rgba(53, 154, 108, .08); }
.verify-card.is-verified .slider-progress { background: rgba(48, 133, 102, .17); }
.verify-card.is-verified .slider-hint { opacity: 0; }
.verify-card.is-verified .slider-handle { color: #e6fff3; background: linear-gradient(135deg, #4caf87, #36876b); box-shadow: 0 0 12px rgba(56, 171, 119, .3); }
.entry-body { overflow: hidden; background-image: radial-gradient(circle at 15% 12%, rgba(29, 76, 73, .1), transparent 35%), radial-gradient(circle at 88% 80%, rgba(37, 63, 77, .09), transparent 39%); }
.entry-stage { width: min(100%, 300px); position: relative; top: min(10vh,100px); text-align: center; transition: opacity .26s, transform .26s, filter .26s; }
.entry-orbit { width: 86px; height: 86px; display: grid; place-items: center; position: relative; margin: 0 auto 25px; border: 1px solid #625734; border-radius: 50%; color: #75b89c; box-shadow: 0 0 0 8px rgba(206, 169, 80, .035), 0 0 0 17px rgba(206, 169, 80, .025), 0 0 30px rgba(211, 169, 70, .12); animation: orbit-arrive .7s cubic-bezier(.2,.75,.23,1) both, orbit-glow 3s ease-in-out .7s infinite; }
.entry-orbit::before { content: ""; position: absolute; inset: -12px; border: 1px solid rgba(213, 171, 77, .24); border-radius: 50%; animation: orbit-turn 12s linear infinite; border-top-color: #dcba66; }
.entry-orbit svg { width: 44px; height: 44px; stroke: currentColor; stroke-width: 1.1; }
.entry-stage p { margin: 0; color: #8f9eb0; font-size: 12px; letter-spacing: .12em; animation: nav-arrive .48s .35s both; }
.entry-button { width: 100%; height: 53px; display: flex; justify-content: center; align-items: center; gap: 10px; margin: 40px auto 0; border: 1px solid rgba(255, 227, 131, .65); border-radius: 30px; background: linear-gradient(135deg, #d2a12d, #f0cb60 55%, #dcaa36); box-shadow: 0 0 21px rgba(204, 153, 37, .34), 0 0 40px rgba(204, 153, 37, .11), 0 1px 0 rgba(255, 244, 192, .75) inset; color: #17202b; font-size: 15px; font-weight: 800; animation: entry-button-arrive .55s .48s backwards; transition: filter .18s, box-shadow .18s, transform .18s; }
.entry-button:hover { filter: brightness(1.07); box-shadow: 0 0 27px rgba(228, 176, 46, .52), 0 0 48px rgba(204, 153, 37, .19); transform: translateY(-2px); }
.entry-button:active { transform: translateY(1px) scale(.99); }
.entry-body.is-leaving .entry-stage { opacity: 0; transform: translateY(-12px) scale(.97); filter: blur(3px); }

@keyframes verify-arrive { from { opacity: 0; transform: translateY(12px) scale(.985); } to { opacity: 1; transform: none; } }
@keyframes verify-backdrop-arrive { from { opacity: 0; transform: scale(1.16); } to { opacity: 1; transform: none; } }
@keyframes loading-dot { 50% { opacity: .34; transform: scale(.65); } }
@keyframes nav-arrive { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes nav-card-arrive { from { opacity: 0; transform: translateY(14px) scale(.975); } to { opacity: 1; transform: none; } }
@keyframes orbit-arrive { from { opacity: 0; transform: scale(.55) rotate(-35deg); filter: blur(7px); } to { opacity: 1; transform: scale(1) rotate(0); filter: none; } }
@keyframes orbit-turn { to { transform: rotate(360deg); } }
@keyframes orbit-glow { 50% { box-shadow: 0 0 0 8px rgba(206, 169, 80, .05), 0 0 0 17px rgba(206, 169, 80, .035), 0 0 38px rgba(211, 169, 70, .25); } }
@keyframes entry-button-arrive { from { opacity: 0; transform: translateY(16px) scale(.975); } to { opacity: 1; transform: none; } }

@media (max-width: 420px) {
  .nav-shell { box-shadow: none; }
  .flow-body { padding: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
}
