/* ============================================================
   Sakurumii · layout.css
   栅格、背景竖线、页面骨架、hero、卡片（沿用 example.html）
   ============================================================ */

.grid-layout{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gutter)}

#layout{position:relative;z-index:1;background:#000;padding-bottom:40px}
main{position:relative;z-index:1;display:flex;flex-direction:column;gap:120px;padding-top:32px}

/* ---------- 背景竖线 ---------- */
.vrules{position:absolute;inset:0;z-index:0;pointer-events:none;width:100%;max-width:var(--maxw);margin:0 auto;left:0;right:0;padding:0 var(--gutter);display:grid;grid-template-columns:repeat(6,minmax(0,1fr))}
.vrules i{position:relative;display:block}
.vrules i::before{content:"";position:absolute;top:0;bottom:0;left:0;width:1px;background:var(--line-soft);transform:scaleY(0);transform-origin:top;transition:transform 1.6s cubic-bezier(.16,.84,.24,1)}
.vrules i:last-child::after{content:"";position:absolute;top:0;bottom:0;right:0;width:1px;background:var(--line-soft);transform:scaleY(0);transform-origin:top;transition:transform 1.6s cubic-bezier(.16,.84,.24,1) .3s}
.vrules.in i::before,.vrules.in i:last-child::after{transform:scaleY(1)}
.vrules i:nth-child(2)::before{transition-delay:.08s}.vrules i:nth-child(3)::before{transition-delay:.16s}
.vrules i:nth-child(4)::before{transition-delay:.24s}.vrules i:nth-child(5)::before{transition-delay:.32s}
.vrules i:nth-child(6)::before{transition-delay:.4s}

/* ---------- 横线 ---------- */
.rule{border:0;height:1px;width:100%;background:var(--line);transform:scaleX(0);transform-origin:left;transition:transform 1.1s cubic-bezier(.16,.84,.24,1)}
.rule.in{transform:scaleX(1)}
.rule.thin{background:var(--line-soft)}

/* ---------- 带四角边框的容器 ---------- */
.framed{position:relative;border:1px solid var(--line);padding:28px;background:linear-gradient(180deg,rgba(255,255,255,.014),rgba(255,255,255,0))}
.framed.label{padding:9px 14px;width:max-content}
.framed.flush{padding:24px}
.framed .corner{position:absolute;width:5px;height:5px;border:1px solid rgba(230,230,230,.28)}
.framed .corner.tl{top:-1px;left:-1px;border-right:0;border-bottom:0}
.framed .corner.tr{top:-1px;right:-1px;border-left:0;border-bottom:0}
.framed .corner.bl{bottom:-1px;left:-1px;border-right:0;border-top:0}
.framed .corner.br{bottom:-1px;right:-1px;border-left:0;border-top:0}

/* ---------- 链接下划线 ---------- */
.actionable{position:relative;font-weight:600;--underline-height:max(.06em,1px)}
.actionable::before{content:"";position:absolute;left:0;right:0;bottom:calc(var(--underline-height) * -1);height:var(--underline-height);background:currentColor;opacity:0;transition:opacity .15s cubic-bezier(.4,0,.2,1)}
.actionable:hover::before{opacity:1}
.actionable:hover{animation:actionable-blink .3s .06s linear forwards;text-shadow:0 0 30px color-mix(in srgb,currentColor 25%,transparent)}
@keyframes actionable-blink{0%{opacity:1}40%{opacity:.5}60%{opacity:1}80%{opacity:.5}100%{opacity:1}}

/* ---------- 滚动揭示 ---------- */
[data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .7s cubic-bezier(.16,.84,.24,1),transform .7s cubic-bezier(.16,.84,.24,1)}
[data-reveal].in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  [data-reveal]{opacity:1;transform:none;transition:none}
  .rule,.vrules i::before,.vrules i:last-child::after{transform:none}
}

/* ---------- 眉标（通用：hero / 页头 / 区块） ---------- */
.eyebrow{grid-column:1/-1;display:flex;align-items:center;gap:16px;margin-bottom:24px;color:var(--g1);font-family:var(--mono);font-size:13px;letter-spacing:.14em;text-transform:uppercase}
.eyebrow .rule{flex:1;min-width:60px}

/* ---------- 内页页头 ---------- */
.page-head{padding-top:150px}
.page-head .eyebrow{margin-bottom:24px}
.page-head h1{grid-column:1/10;text-wrap:pretty;color:var(--w1)}
.page-head .lede{grid-column:1/9;margin-top:22px}
.page-head .head-media{grid-column:3/12;margin-top:44px}

/* ---------- hero（首页） ---------- */
.hero{padding-top:150px}
.hero article{grid-column:1/8;display:flex;flex-direction:column;gap:20px;color:var(--w1)}
.hero h1{text-wrap:pretty}
.hero .hero-shot{grid-column:8/13;margin-top:16px}
.hero .hero-shot .framed{padding:10px;overflow:hidden}
.hero .hero-shot img{width:100%;height:auto;display:block}
.hero .hero-shot .cap{display:flex;justify-content:space-between;align-items:center;padding:10px 6px 2px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--g1)}

/* ---------- 统计条 ---------- */
.stat-row{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.stat{display:flex;flex-direction:column;gap:6px;padding:22px 20px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.014),rgba(255,255,255,0))}
.stat b{font-family:var(--head);font-weight:600;font-size:2.375rem;line-height:1;letter-spacing:-.03em;color:var(--w1)}
.stat b em{font-style:normal;color:var(--o)}
.stat span{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--g1)}

/* ---------- 区块标题 ---------- */
.sec-head{grid-column:1/-1;display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:8px}
.sec-head h2{color:var(--w1)}
.sec-head .sub{max-width:34rem;color:var(--w2)}

/* ---------- 通用卡片栅格 ---------- */
.cardgrid{grid-column:1/-1;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.card{position:relative;grid-column:span 4;display:block;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.014),rgba(255,255,255,0));transition:border-color .25s ease,transform .25s ease}
.card:hover{border-color:rgba(255,255,255,.22)}
.card .shot{position:relative;overflow:hidden;aspect-ratio:16/9;background:#0a0a0a;border-bottom:1px solid var(--line)}
.card .shot img{width:100%;height:100%;object-fit:cover;transition:opacity .3s,transform .6s ease}
.card:hover .shot img{opacity:.86;transform:scale(1.03)}
.card .shot::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(0,0,0,0) 60%,rgba(0,0,0,.35));opacity:.9}
.card .meta{padding:20px 22px 22px;display:flex;flex-direction:column;gap:12px}
.card .meta h3{color:var(--w1);text-wrap:pretty}
.card .meta .desc{color:var(--w2);font-size:.875rem;line-height:1.375rem;font-weight:500;letter-spacing:0;text-wrap:pretty}
.card .meta .cats{color:var(--g1);font-family:var(--mono);font-size:11px;line-height:16px;letter-spacing:.08em;text-transform:uppercase}
.card .go{display:inline-flex;align-items:center;gap:8px;color:var(--w1)}

/* ---------- 能力区（capabilities） ---------- */
.caps h2{grid-column:1/-1;color:var(--g1)}
.caps .big{grid-column:1/-1;color:var(--w2);margin-top:8px}
.caps .cols{grid-column:1/-1;margin-top:32px;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.caps .cap{grid-column:span 3;display:flex;flex-direction:column;gap:14px;color:var(--w1);padding:22px 20px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.014),rgba(255,255,255,0))}
.caps .cap p{color:var(--w2);font-weight:500;text-wrap:pretty}
.caps .tags{display:flex;flex-wrap:wrap;gap:4px}
.caps .tags span{display:block;width:fit-content;max-width:100%;overflow:hidden;text-overflow:ellipsis;background:var(--g2);padding:0 6px;color:var(--w1);white-space:nowrap;font-size:12px;line-height:22px}

/* ---------- 联系区 ---------- */
.contact-box{grid-column:1/-1;padding:44px 40px;position:relative;overflow:hidden}
.contact-box h2{color:var(--w1);margin-bottom:16px}
.contact-box .lead{color:var(--w2);font-weight:500;max-width:40rem;text-wrap:pretty}
.contact-box .mail{margin-top:28px;display:flex;align-items:center;color:var(--w1);white-space:nowrap;overflow-wrap:anywhere}

/* ---------- 建造中徽标 / 施工提示 ---------- */
.badge-wip{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--g1);border:1px solid rgba(230,230,230,.22);padding:5px 11px;border-radius:2px;background:rgba(255,255,255,.02);white-space:nowrap}
.badge-wip::before{content:"";width:5px;height:5px;border-radius:50%;background:var(--g1)}
.badge-wip.on::before{background:var(--o);box-shadow:0 0 8px rgba(255,77,0,.7)}
.wip-banner{grid-column:1/-1;display:flex;align-items:center;gap:14px;padding:15px 18px;border:1px solid rgba(230,230,230,.12);background:rgba(255,255,255,.015);color:var(--w2);font-weight:500;flex-wrap:wrap}
.wip-banner b{color:var(--w1)}

/* ---------- 响应式 ---------- */
@media (max-width:1023px){
  main{gap:72px}
  .page-head{padding-top:110px}
  .page-head h1{grid-column:1/-1}
  .page-head .lede{grid-column:1/-1}
  .page-head .head-media{grid-column:1/-1}
  .hero{padding-top:110px}
  .hero article{grid-column:1/-1}
  .hero .hero-shot{grid-column:1/-1}
  .vrules{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card{grid-column:span 6}
  .caps .cap{grid-column:span 6}
  .framed{padding:18px}
  .framed.label{padding:8px 12px}
  .contact-box{padding:24px 18px}
  .contact-box .mail{flex-wrap:wrap;gap:2px}
  .contact-box .mail a{display:inline-block;padding:10px 2px}
  .hero .hero-shot .cap{font-size:11px}
}
@media (max-width:639px){
  .card{grid-column:1/-1}
  .caps .cap{grid-column:1/-1}
  .stat-row{grid-template-columns:1fr 1fr}
  .stat b{font-size:1.75rem}
}
