/* 06 contact + giant footer */
.qr-pair { display:grid; grid-template-columns:1fr; gap:22px; max-width:1060px; margin:40px auto 0; align-items:start; }
.qr-card { display:grid; gap:12px; padding:24px; text-align:center; border:1px solid var(--line); border-radius:14px; background:var(--card); transition:border-color 260ms var(--ease-out),transform 260ms var(--ease-out); }
.qr-card:hover { border-color:rgba(255,176,46,.4); transform:translateY(-3px); }
.qr-card img { width:min(100%,240px); margin:0 auto; border-radius:12px; }
.qr-card strong { font-size:.95rem; }

/* 两张联系卡：堆叠，悬浮摊开 */
.qr-stack { display:grid; grid-template-columns:1fr 1fr; gap:22px; justify-self:center; width:min(100%,620px); }
.qr-stack .qr-card { width:100%; background:#121110; transition:transform 420ms var(--ease-out),border-color 260ms var(--ease-out); }
.qr-stack .stack-a { transform:rotate(-1.6deg); }
.qr-stack .stack-b { transform:rotate(1.6deg); }
.qr-stack .qr-card:hover { transform:rotate(0) translateY(-4px); border-color:rgba(255,176,46,.5); }
.qr-link { display:block; color:inherit; text-decoration:none; cursor:pointer; }
.copy-button:hover { color:var(--gold); border-color:var(--gold-deep); }
/* 07 finale + 帘幕结尾（移植 πOS 双层揭示） */
.finale-screen { display:flex; align-items:center; justify-content:center; min-height:72vh; }
.finale { text-align:center; margin:clamp(70px,13vh,130px) auto; padding:0 24px; }
.finale-q { font-family:var(--serif); font-size:clamp(28px,3.6vw,50px); line-height:1.5; margin:0; }
.finale .cta-row { margin-top:clamp(28px,4.5vh,44px); justify-content:center; }

.footer-reveal-spacer { position:relative; z-index:2; height:clamp(300px,42vh,430px); pointer-events:none; background:transparent; }

#fixed-footer { position:fixed; bottom:0; left:0; width:100vw; height:clamp(300px,42vh,430px); z-index:1; background:#050505; display:flex; align-items:center; justify-content:center; overflow:hidden; border-top:1px solid rgba(255,176,46,.18); }
#ripple-canvas { position:absolute; inset:0; width:100%; height:100%; z-index:1; pointer-events:none; }
.giant-logo-banner { position:relative; z-index:2; width:100%; max-width:1400px; margin:0 auto; padding:0 24px; pointer-events:none; text-align:center; user-select:none; }
.giant-logo-banner .stagger-char { display:inline-block; font-family:var(--mono); font-weight:700; font-size:clamp(8rem,24vw,23rem); line-height:.86; letter-spacing:-.04em; background:linear-gradient(180deg,var(--gold) 0%,rgba(255,176,46,.06) 88%); -webkit-background-clip:text; background-clip:text; color:transparent; filter:drop-shadow(0 0 60px rgba(255,176,46,.18)); }
.stagger-char { opacity:0; transform:translateY(65px) scale(.82); transition:opacity .85s cubic-bezier(.16,1,.3,1),transform .85s cubic-bezier(.16,1,.3,1); will-change:opacity,transform; }
.char-b { transition-delay:.10s; }
.char-2 { transition-delay:.18s; }
.char-0a { transition-delay:.26s; }
.char-0b { transition-delay:.34s; }
#fixed-footer.in-view .stagger-char { opacity:1; transform:translateY(0) scale(1); }
@media (prefers-reduced-motion:reduce) { .stagger-char { transition:none; opacity:1; transform:none; } }

.site-foot { position:relative; z-index:2; background:var(--bg); display:flex; justify-content:space-between; width:100%; padding:22px clamp(24px,5vw,72px) 26px; border-top:1px solid var(--line); font-family:var(--mono); font-size:.72rem; letter-spacing:.12em; color:var(--faint); }
.site-foot a { color:var(--muted); text-decoration:none; }
.site-foot a:hover { color:var(--gold); }
@media (max-width:980px) { .qr-pair { grid-template-columns:1fr; } }
@media (max-width:640px) { .qr-stack { grid-template-columns:1fr; width:min(100%,300px); } .qr-stack .stack-a,.qr-stack .stack-b { transform:none; } }
