/* ==========================================================================
   FTCD studio · 玄门
   铺开的三栏/四栏网格 · 纯白正文 + 朱砂/石青/桃夭三色点 · 轻动画
   无外链、无图片、无第三方依赖
   ========================================================================== */

:root {
  --bg: #0a0a0b;
  --ink: #f4f1ec;
  --ink-2: #a6a29b;
  --ink-3: #6f6b65;
  --line: rgba(255, 255, 255, .12);
  --line-2: rgba(255, 255, 255, .06);

  --zhu: #e8382d;
  --qing: #45a9bf;
  --tao: #ef7f92;

  --serif: "Songti SC", "Source Han Serif SC", "Noto Serif SC", "SimSun", Georgia, serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB",
    "Microsoft YaHei", "Noto Sans SC", sans-serif;
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

  --t-xs: clamp(0.6875rem, 0.672rem + 0.078vi, 0.7188rem);
  --t-sm: clamp(0.7813rem, 0.766rem + 0.078vi, 0.8125rem);
  --t-base: clamp(0.9375rem, 0.916rem + 0.11vi, 0.9688rem);
  --t-md: clamp(1.0313rem, 0.995rem + 0.18vi, 1.0938rem);
  --t-lg: clamp(1.25rem, 1.15rem + 0.5vi, 1.5rem);
  --t-xl: clamp(2.125rem, 1.5rem + 3.1vi, 3.625rem);

  --max: 1180px;
  --ease: cubic-bezier(.22, .61, .36, 1);
}

[data-c="zhu"] { --c: var(--zhu); --cg: rgba(232, 56, 45, .16); }
[data-c="qing"] { --c: var(--qing); --cg: rgba(69, 169, 191, .16); }
[data-c="tao"] { --c: var(--tao); --cg: rgba(239, 127, 146, .16); }
[data-c="bai"] { --c: #f4f1ec; --cg: rgba(255, 255, 255, .12); }

* { box-sizing: border-box; }

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--sans);
  font-size: var(--t-base);
  line-height: 1.8;
  -webkit-font-smoothing: antialiased;
}

/* 背景：三团缓慢漂移的色雾（只有 transform，不重绘；fixed 层不会产生横向滚动条） */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(42vw 34vw at 16% 8%, rgba(232, 56, 45, .13), transparent 62%),
    radial-gradient(38vw 32vw at 86% 22%, rgba(69, 169, 191, .12), transparent 64%),
    radial-gradient(34vw 30vw at 58% 94%, rgba(239, 127, 146, .09), transparent 66%);
  animation: drift 44s ease-in-out infinite alternate;
}

@keyframes drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to { transform: translate3d(0, -3.5%, 0) scale(1.09); }
}

main { position: relative; z-index: 1; }

a { color: inherit; text-decoration: none; }

h1, h2, h3 { margin: 0; font-weight: 400; }

p { margin: 0; }

::selection { background: var(--zhu); color: #fff; }

:focus-visible { outline: 1px solid var(--zhu); outline-offset: 3px; }

.wrap {
  width: 100%;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 32px;
}

/* 顶部阅读进度 */
.bar {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 2px;
  z-index: 40;
}

.bar i {
  display: block;
  height: 100%;
  width: 0;
  background: linear-gradient(90deg, var(--zhu), var(--tao), var(--qing));
}

/* ---------------------------------------------------------------- 导航 */
.nav {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(10, 10, 11, .9);
  border-bottom: 1px solid var(--line);
}

.nav-in {
  position: relative;
  display: flex;
  align-items: center;
  gap: 30px;
  width: 100%;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 32px;
  height: 64px;
}

.brand {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-family: var(--serif);
  font-size: var(--t-md);
  letter-spacing: .14em;
}

.brand em {
  font-family: var(--mono);
  font-style: normal;
  font-size: 9.5px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ink-3);
}

.links {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

.links a {
  position: relative;
  display: flex;
  align-items: baseline;
  gap: 7px;
  padding: 6px 10px;
  font-size: var(--t-sm);
  letter-spacing: .06em;
  color: var(--ink-2);
  transition: color .2s var(--ease);
}

.links a em {
  font-family: var(--mono);
  font-style: normal;
  font-size: 8.5px;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-3);
  transition: color .2s var(--ease);
}

.links a::after {
  content: "";
  position: absolute;
  left: 10px; right: 10px; bottom: 1px;
  height: 1px;
  background: var(--zhu);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--ease);
}

.links a:hover { color: var(--ink); }
.links a:hover em { color: var(--zhu); }
.links a:hover::after { transform: scaleX(1); }

.clock {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .1em;
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
}

.menu-btn {
  display: none;
  width: 34px; height: 34px;
  margin-left: auto;
  padding: 0;
  border: 0;
  background: none;
  cursor: pointer;
}

.menu-btn span {
  display: block;
  width: 17px; height: 1px;
  margin: 4px auto;
  background: var(--ink);
  transition: transform .24s var(--ease);
}

.menu-btn[aria-expanded="true"] span:first-child { transform: translateY(2.5px) rotate(45deg); }
.menu-btn[aria-expanded="true"] span:last-child { transform: translateY(-2.5px) rotate(-45deg); }

/* ---------------------------------------------------------------- 开场 */
.hero { padding: 104px 0 96px; }

.hero-in {
  display: grid;
  grid-template-columns: minmax(0, 1.32fr) minmax(0, .68fr);
  gap: 64px;
  align-items: center;
}

.kicker {
  font-family: var(--mono);
  font-size: var(--t-xs);
  letter-spacing: .22em;
  color: var(--ink-3);
}

.kicker i { font-style: normal; color: var(--zhu); }

.h1 {
  margin: 20px 0 0;
  font-family: var(--serif);
  font-size: var(--t-xl);
  line-height: 1.16;
  letter-spacing: .01em;
}

.h1 span { display: block; }

.h1 span:last-child { color: var(--ink); }

.lede {
  margin: 24px 0 0;
  max-width: 32em;
  font-size: var(--t-base);
  line-height: 1.95;
  color: var(--ink-2);
}

.hero-cta {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin: 34px 0 0;
}

.btn {
  display: inline-block;
  padding: 11px 24px;
  font-size: var(--t-sm);
  letter-spacing: .14em;
  color: var(--ink);
  border: 1px solid var(--line);
  transition: background .22s var(--ease), border-color .22s var(--ease), transform .22s var(--ease);
}

.btn:hover { border-color: rgba(255, 255, 255, .32); transform: translateY(-2px); }

.btn-main {
  background: var(--zhu);
  border-color: var(--zhu);
  color: #fff;
}

.btn-main:hover {
  background: #f04a3f;
  border-color: #f04a3f;
}

/* 右侧索引面板 */
.hero-side {
  border: 1px solid var(--line);
  background: rgba(255, 255, 255, .018);
}

.side-nav a {
  display: grid;
  grid-template-columns: 2.2rem 1fr auto;
  align-items: baseline;
  gap: 10px;
  padding: 13px 18px;
  border-bottom: 1px solid var(--line-2);
  transition: background .22s var(--ease), padding-left .22s var(--ease);
}

.side-nav a b {
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 400;
  letter-spacing: .1em;
  color: var(--zhu);
}

.side-nav a span { font-size: var(--t-base); letter-spacing: .1em; }

.side-nav a i {
  font-family: var(--mono);
  font-style: normal;
  font-size: 8.5px;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--ink-3);
  transition: color .22s var(--ease);
}

.side-nav a:hover {
  background: rgba(255, 255, 255, .035);
  padding-left: 24px;
}

.side-nav a:hover i { color: var(--zhu); }

.side-meta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 16px;
  margin: 0;
  padding: 18px;
}

.side-meta div { min-width: 0; }

.side-meta dt {
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: .22em;
  color: var(--ink-3);
}

.side-meta dd {
  margin: 3px 0 0;
  font-size: var(--t-sm);
  letter-spacing: .04em;
  color: var(--ink-2);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ---------------------------------------------------------------- 分节 */
.sec {
  padding: 76px 0;
  border-top: 1px solid var(--line);
}

.sec-head {
  display: flex;
  align-items: baseline;
  gap: 14px;
}

.idx {
  font-family: var(--mono);
  font-size: var(--t-sm);
  letter-spacing: .1em;
  color: var(--zhu);
}

.sec-head h2 {
  font-family: var(--serif);
  font-size: var(--t-lg);
  letter-spacing: .14em;
}

.note {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--ink-3);
}

.sec-lede {
  margin: 12px 0 0;
  font-size: var(--t-sm);
  line-height: 1.85;
  color: var(--ink-2);
}

/* 通用四栏网格 */
.grid4 {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  margin-top: 34px;
}

/* ------------------------------------------------------------ 壹 · 门 */
.f-card {
  position: relative;
  padding: 22px 20px 24px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, var(--cg), transparent 58%);
  transition: transform .3s var(--ease), border-color .3s var(--ease);
}

.f-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 1px;
  background: linear-gradient(90deg, var(--c), transparent 68%);
}

.f-card:hover {
  transform: translateY(-4px);
  border-color: rgba(255, 255, 255, .24);
}

.f-card b {
  display: block;
  font-family: var(--serif);
  font-size: 30px;
  line-height: 1;
  font-weight: 400;
  color: var(--c);
}

.f-card i {
  display: block;
  margin-top: 10px;
  font-family: var(--mono);
  font-style: normal;
  font-size: 8.5px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ink-3);
}

.f-card h3 {
  margin: 12px 0 0;
  font-size: var(--t-md);
  letter-spacing: .12em;
}

.f-card p {
  margin: 8px 0 0;
  font-size: var(--t-sm);
  line-height: 1.8;
  color: var(--ink-2);
}

/* ---------------------------------------------------------- 贰 · 造物 */
.cols3 {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 40px;
  margin-top: 34px;
}

.gcol { min-width: 0; }

.gh {
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0 0 6px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--line);
  font-family: var(--mono);
  font-size: 9.5px;
  font-weight: 400;
  letter-spacing: .3em;
  color: var(--c);
}

.gh::before {
  content: "";
  width: 5px; height: 5px;
  background: var(--c);
  transform: rotate(45deg);
  flex: none;
}

.gh i {
  margin-left: auto;
  font-style: normal;
  letter-spacing: .1em;
  color: var(--ink-3);
}

.row {
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr) auto 1rem;
  grid-template-areas:
    "no name tag go"
    ".  desc desc desc";
  gap: 2px 10px;
  padding: 11px 9px;
  margin: 0 -9px;
  border-bottom: 1px solid var(--line-2);
  transition: background .22s var(--ease);
}

.row .no {
  grid-area: no;
  font-family: var(--mono);
  font-size: 10px;
  color: var(--ink-3);
  font-variant-numeric: tabular-nums;
}

.row .name {
  grid-area: name;
  font-size: var(--t-base);
  letter-spacing: .04em;
  transition: color .2s var(--ease);
}

.row .tag {
  grid-area: tag;
  font-family: var(--mono);
  font-size: 9px;
  letter-spacing: .14em;
  color: var(--ink-3);
  transition: color .2s var(--ease);
}

.row .desc {
  grid-area: desc;
  font-size: var(--t-sm);
  line-height: 1.7;
  color: var(--ink-2);
  transition: color .2s var(--ease);
}

.row .go,
.r-card .go {
  font-family: var(--mono);
  font-size: 11px;
  color: var(--ink-3);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity .2s var(--ease), transform .2s var(--ease), color .2s var(--ease);
}

.row .go { grid-area: go; }

.row:hover { background: rgba(255, 255, 255, .028); }
.row:hover .name { color: var(--c); }
.row:hover .tag { color: var(--c); }
.row:hover .desc { color: var(--ink); }
.row:hover .go { opacity: 1; transform: translateX(0); color: var(--c); }

/* ---------------------------------------------------------- 叁 · 双人 */
.pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
  margin-top: 34px;
}

.person {
  padding: 26px 26px 24px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, rgba(255, 255, 255, .022), transparent 60%);
  transition: transform .3s var(--ease), border-color .3s var(--ease);
}

.person:hover {
  transform: translateY(-3px);
  border-color: rgba(255, 255, 255, .22);
}

.p-head {
  display: flex;
  align-items: center;
  gap: 11px;
}

.seal {
  display: grid;
  place-items: center;
  width: 22px; height: 22px;
  background: var(--zhu);
  color: #fff;
  font-family: var(--serif);
  font-size: 11.5px;
  line-height: 1;
  flex: none;
}

[data-c="tao"] .seal { background: var(--tao); }

.person h3 {
  font-family: var(--serif);
  font-size: var(--t-lg);
  letter-spacing: .08em;
}

.person h3 a {
  color: inherit;
  border-bottom: 1px solid transparent;
  transition: color .2s var(--ease), border-color .2s var(--ease);
}

.person h3 a:hover {
  color: var(--c, var(--zhu));
  border-bottom-color: var(--c, var(--zhu));
}

.person h3 a:focus-visible { outline-offset: 4px; }

.role {
  margin-left: auto;
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: .26em;
  color: var(--ink-3);
}

.p-desc {
  margin: 14px 0 0;
  font-size: var(--t-sm);
  line-height: 1.85;
  color: var(--ink-2);
  max-width: 26em;
}

.p-link {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  margin-top: 16px;
  padding-bottom: 2px;
  font-size: var(--t-sm);
  color: var(--ink-2);
  border-bottom: 1px solid var(--line);
  transition: color .22s var(--ease), border-color .22s var(--ease);
}

.p-link i {
  font-style: normal;
  font-family: var(--mono);
  font-size: 10px;
  transition: transform .22s var(--ease);
}

.p-link:hover { color: var(--ink); border-color: var(--zhu); }
.p-link:hover i { transform: translate(2px, -2px); color: var(--zhu); }

.recruit {
  margin: 30px 0 0;
  font-size: var(--t-sm);
  color: var(--ink-3);
}

/* ---------------------------------------------------------- 肆 · 相通 */
.r-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 20px 20px 18px;
  border: 1px solid var(--line);
  background: linear-gradient(180deg, var(--cg), transparent 62%);
  transition: transform .3s var(--ease), border-color .3s var(--ease);
}

.r-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0;
  width: 100%; height: 1px;
  background: linear-gradient(90deg, var(--c), transparent 68%);
}

.r-card:hover {
  transform: translateY(-4px);
  border-color: rgba(255, 255, 255, .24);
}

.r-card .k {
  font-family: var(--mono);
  font-size: 9.5px;
  letter-spacing: .26em;
  text-transform: uppercase;
  color: var(--c);
}

.r-card .v {
  font-size: var(--t-base);
  letter-spacing: .05em;
  transition: color .2s var(--ease);
}

.r-card .go {
  position: absolute;
  top: 16px; right: 16px;
}

.r-card:hover .v { color: var(--ink); }
.r-card:hover .go { opacity: 1; transform: translateX(0); color: var(--c); }

/* -------------------------------------------------------------- 页脚 */
.footer {
  padding: 30px 0 44px;
  border-top: 1px solid var(--line);
}

.f-in {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px 28px;
}

.f-top {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: .2em;
  color: var(--ink-2);
}

.f-mid {
  font-size: 11.5px;
  letter-spacing: .06em;
  color: var(--ink-3);
}

.f-bot {
  font-size: 11.5px;
  color: var(--ink-3);
}

.f-bot a {
  color: var(--ink-2);
  border-bottom: 1px solid var(--line);
  transition: color .2s var(--ease), border-color .2s var(--ease);
}

.f-bot a:hover {
  color: var(--ink);
  border-bottom-color: var(--zhu);
}

/* 备案号：单独占一行，压在版权行下面 */
.f-icp {
  flex-basis: 100%;
  font-size: 11px;
  letter-spacing: .04em;
  color: var(--ink-3);
}

.f-icp a {
  color: var(--ink-3);
  border-bottom: 1px solid var(--line);
  transition: color .2s var(--ease), border-color .2s var(--ease);
}

.f-icp a:hover {
  color: var(--ink-2);
  border-bottom-color: var(--zhu);
}

/* -------------------------------------------------------------- 动画 */
@keyframes rise {
  from { opacity: 0; transform: translateY(18px); }
  to { opacity: 1; transform: none; }
}

.anim {
  animation: rise .85s var(--ease) both;
  animation-delay: calc(var(--d, 0) * 110ms + 60ms);
}

.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
  transition-delay: calc(var(--i, 0) * 80ms);
}

.reveal.in {
  opacity: 1;
  transform: none;
}

/* -------------------------------------------------------------- 响应式 */
@media (max-width: 1080px) {
  .hero-in { gap: 40px; }
  .cols3 { gap: 28px; }
  .grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .reach.grid4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .wrap, .nav-in { padding: 0 24px; }

  .hero { padding: 74px 0 62px; }
  .hero-in { grid-template-columns: 1fr; gap: 34px; }
  .hero-side { max-width: 460px; }

  .sec { padding: 56px 0; }
  .cols3 { grid-template-columns: 1fr; gap: 30px; }
  .pair { grid-template-columns: 1fr; gap: 12px; }
  .clock { display: none; }
}

@media (max-width: 760px) {
  .menu-btn { display: block; }
  .links { display: none; }

  .links.open {
    position: absolute;
    top: 64px;
    left: 0; right: 0;
    display: block;
    margin: 0;
    padding: 4px 0;
    background: #0a0a0b;
    box-shadow: 0 24px 48px rgba(0, 0, 0, .55);
    border-bottom: 1px solid var(--line);
  }

  .links.open a {
    padding: 13px 24px;
    border-top: 1px solid var(--line-2);
    font-size: var(--t-base);
  }

  .links.open a::after { display: none; }

  .grid4, .reach.grid4 { grid-template-columns: 1fr; gap: 10px; }
  .hero { padding: 56px 0 48px; }
  .hero-side { display: none; }
  .sec { padding: 44px 0; }
  .sec-lede { margin-top: 10px; }
  .f-card { padding: 18px 18px 20px; }
  .row { padding: 10px 8px; margin: 0 -8px; }
  .footer { padding: 26px 0 36px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  body::before { animation: none; }
  .anim { animation: none; opacity: 1; transform: none; }
  .reveal { opacity: 1; transform: none; transition: none; }
  .f-card, .r-card, .person, .btn, .row, .side-nav a { transition: none; }
}
