.contact-chapter{overflow:hidden;background:radial-gradient(ellipse at 78% 66%,#8c6c3020,transparent 49%);padding-bottom:35px}
.contact-layout{display:grid;grid-template-columns:.85fr 1.2fr;gap:5%;align-items:center;min-height:460px}
.contact-copy h2{font-size:clamp(32px,3.6vw,53px);line-height:1.45;letter-spacing:-1px;font-weight:550;margin:0 0 22px}.contact-copy h2 span{color:var(--gold)}
.contact-copy>p{font-size:14px;line-height:2;color:#989e97;margin:0 0 28px;max-width:340px}.contact-copy>.contact-sign{font-size:10px;letter-spacing:2px;color:#7c817b;margin-top:28px}
.contact-links{display:flex;gap:12px;flex-wrap:wrap}.contact-card{display:flex;flex-direction:column;align-items:flex-start;gap:7px;min-width:154px;padding:15px 18px;border:1px solid #b9985b3b;border-radius:6px;background:#191b1b85;color:#e2d9c7;text-align:left;transition:background .2s,border-color .2s}.contact-card:hover{background:#30291e85;border-color:#b9985b88}.contact-card b{font-size:14px;font-weight:500;letter-spacing:.8px;user-select:text}.contact-card small{color:#bfa36a;font-size:10px}
.typewriter-scene{min-width:0;position:relative;margin:0;container-type:inline-size}.typewriter-stage{position:relative;width:100%;aspect-ratio:760/580;isolation:isolate;--paper-feed:0px;--carriage-x:0px}
.typewriter-stage:before{content:"";position:absolute;left:6%;right:3%;bottom:6%;height:14%;border-radius:50%;background:#000b;filter:blur(17px);z-index:-1}.typewriter-stage:after{content:"";position:absolute;left:3%;right:0;bottom:5%;height:1px;background:linear-gradient(90deg,transparent,#79634155,transparent);z-index:-1}
.typewriter-paper{position:absolute;left:30.5%;top:3.5%;width:41%;height:52%;padding:4% 4% 2%;overflow:hidden;color:#383529;background:repeating-linear-gradient(0deg,#fff0 0 2px,#b19c7407 2px 3px),linear-gradient(115deg,#e9dfc9,#fbf5e9 30%,#f1e9d6 85%,#c2b290);border:1px solid #efe7d166;box-shadow:3px 4px 14px #0005,inset -4px 0 8px #9d87571a;transform:translateY(calc(var(--paper-feed)*-1));transition:transform .15s;z-index:1}
.typewriter-paper:before{content:"";position:absolute;left:5%;right:5%;top:9%;border-top:1px solid #88744255}.paper-heading{display:flex;justify-content:space-between;align-items:center;font-family:monospace;font-size:clamp(6px,1.4cqw,10px);letter-spacing:.08em;color:#93856b;padding-bottom:4%;margin-bottom:3%;border-bottom:1px solid #9583693b}.paper-heading b{font-weight:500}.paper-heading span{font-size:.85em}
.paper-copy{font-family:"SFMono-Regular","Courier New","PingFang SC",monospace;font-size:clamp(8px,2cqw,15px);line-height:1.6;letter-spacing:.02em;white-space:pre-wrap;min-height:12em;color:#4c483b;text-shadow:.3px .3px 0 #80776033}.paper-copy:after{content:"▏";display:inline;color:#8a692c;animation:paper-cursor .85s step-end infinite}.is-complete .paper-copy:after{opacity:0;animation:none}
.typewriter-machine{display:block;width:100%;height:100%;position:absolute;inset:0;z-index:2;pointer-events:none;filter:drop-shadow(0 17px 13px #0004)}
.tw-carriage{transform:translateX(calc(var(--carriage-x)*-1));transition:transform .06s}.tw-key{transition:transform .07s,filter .07s}.tw-key.is-struck{transform:translateY(3px);filter:brightness(1.7)}.tw-impact .tw-striker{animation:type-strike .08s ease-out}.tw-return .tw-lever{animation:carriage-return .25s ease-out;transform-origin:110px 303px}
.typewriter-caption{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:-1% 5% 0;padding-top:17px;border-top:1px solid #9c805235;font-size:10px;color:#777e75;min-height:50px}.typewriter-caption>span{line-height:1.7}.typewriter-caption>button{border:0;background:none;min-height:38px;padding:5px 0;color:#c3a56d;font-size:11px;white-space:nowrap}
.contact-chapter .chapter-bottom{margin-top:25px}.contact-chapter .chapter-bottom>span{font-family:monospace;letter-spacing:1.4px}
@keyframes type-strike{50%{transform:translateY(-8px)}}@keyframes carriage-return{50%{transform:rotate(-5deg)}}@keyframes paper-cursor{50%{opacity:0}}
@media(max-width:1050px){.contact-layout{grid-template-columns:.9fr 1.15fr;gap:3%;min-height:410px}.contact-copy h2{font-size:34px}.contact-copy>p{font-size:13px}.contact-links{gap:9px}.contact-card{min-width:140px;padding:13px}.contact-card b{font-size:12px}}
@media(max-width:760px){.contact-layout{grid-template-columns:1fr;gap:26px;min-height:0}.contact-copy h2{font-size:34px;margin-bottom:16px}.contact-copy>p{max-width:none}.contact-card{flex:1;min-width:135px;padding:14px}.contact-copy>.contact-sign{display:none}.typewriter-scene{max-width:600px;width:100%;margin:auto}.paper-copy{font-size:2.1cqw}.contact-chapter{padding-bottom:32px}.typewriter-caption{font-size:9px}.typewriter-caption>button{font-size:10px}}
@media(prefers-reduced-motion:reduce){.typewriter-paper,.tw-carriage,.tw-key{transition:none}.paper-copy:after,.tw-impact .tw-striker,.tw-return .tw-lever{animation:none}.paper-copy:after{display:none}}

/* The photographic machine includes its own real paper texture and shadows. */
.typewriter-stage{aspect-ratio:4/3}
.typewriter-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;filter:drop-shadow(0 18px 17px #0007);clip-path:inset(2.8% 0 0);z-index:1}
.typewriter-paper{left:31.6%;top:4.6%;width:37.5%;height:26%;padding:1.2% 2.4% 0;background:none;border:0;box-shadow:none;z-index:3;transform:none;transition:none;overflow:hidden}
.typewriter-paper:before{display:none}.paper-heading{font-size:clamp(5px,1.15cqw,9px);padding-bottom:2%;margin-bottom:3%;letter-spacing:.04em;border-color:#82745344}.paper-heading>span{display:none}
.paper-copy{font-size:clamp(7px,1.85cqw,14px);line-height:1.6;letter-spacing:0;min-height:0;color:#48443b;text-shadow:.3px 0 #3e392866}
.typewriter-key-overlays{position:absolute;inset:0;z-index:2;pointer-events:none}.key-photo{display:block;position:absolute;background-image:url('./assets/typewriter-realistic-v2.png');background-repeat:no-repeat;opacity:0;mask-image:radial-gradient(ellipse closest-side,#000 83%,transparent);transition:opacity .07s,transform .07s}
.tw-key.key-photo.is-struck{opacity:1;transform:translateY(1.4px);filter:brightness(1.08)}
.typewriter-strike{position:absolute;left:49.1%;top:35.4%;width:1.2%;height:3%;border-radius:2px;background:linear-gradient(90deg,#504a3e,#c0af89,#61523a);opacity:0;z-index:2;pointer-events:none;transform-origin:bottom}
.tw-impact .typewriter-strike{animation:photo-type-strike .09s ease-out}
.tw-return .typewriter-photo{animation:photo-carriage-return .18s ease-out}
@keyframes photo-type-strike{45%{opacity:.85;transform:translateY(-3px) rotateX(-15deg)}}
@keyframes photo-carriage-return{50%{transform:translateX(-1.2px)}}
@media(max-width:760px){.paper-copy{font-size:1.85cqw}.paper-heading{font-size:1.2cqw}.typewriter-caption{margin-top:2%}}
@media(prefers-reduced-motion:reduce){.tw-return .typewriter-photo,.tw-impact .typewriter-strike{animation:none}.key-photo{transition:none}}

/* Feed the sheet behind the fixed platen; one step equals one printed line. */
.typewriter-stage{aspect-ratio:1448/1210;--paper-stretch:1}
.typewriter-assembly{position:absolute;left:0;bottom:0;width:100%;aspect-ratio:4/3}
.typewriter-sheet{position:absolute;inset:0;z-index:1;pointer-events:none}
.typewriter-sheet-photo{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;max-width:none;clip-path:polygon(31.5% 2.8%,68.6% 2.8%,69.5% 28.2%,30.5% 28.2%);transform:scaleY(var(--paper-stretch));transform-origin:50% 28.2%;transition:transform .28s cubic-bezier(.25,.8,.25,1);filter:drop-shadow(2px 3px 3px #0004)}
.typewriter-photo{z-index:3;clip-path:polygon(0 20%,30.5% 20%,30.5% 28.2%,69.5% 28.2%,69.5% 20%,100% 20%,100% 100%,0 100%)}
.typewriter-sheet>.paper-heading{position:absolute;left:34%;top:6%;width:32%;margin:0;padding:0 0 2%;font-size:1.15cqw;transform:translateY(calc(var(--paper-feed)*-1));transition:transform .28s cubic-bezier(.25,.8,.25,1)}
.typewriter-sheet>.paper-heading{font-size:clamp(8px,1.45cqw,11px);letter-spacing:.015em;color:#65563f}.typewriter-sheet>.paper-heading b{font-weight:600}
.typewriter-paper{left:34%;top:23.2%;width:32%;height:auto;padding:0;overflow:visible;transform:translateY(calc(var(--paper-feed)*-1));transition:transform .28s cubic-bezier(.25,.8,.25,1);will-change:transform}
.typewriter-key-overlays{z-index:4}.typewriter-strike{z-index:4}
.typewriter-caption{margin-top:2%}
@media(prefers-reduced-motion:reduce){.typewriter-sheet-photo,.typewriter-sheet>.paper-heading,.typewriter-paper{transition:none}}

.contact-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-width:365px;gap:12px}
.contact-links .contact-card{min-width:0}.contact-links .douyin-contact{grid-column:1/-1;flex-direction:row;align-items:center;justify-content:space-between}
.contact-account{display:inline-flex;align-items:center;gap:10px}.douyin-logo{display:block;width:24px;height:24px;border-radius:5px}.douyin-contact small{white-space:nowrap}
.paper-copy{white-space:normal}.paper-copy:after{display:none}.printed-line{display:block;white-space:pre;min-height:1lh}
.is-typing .printed-line:last-child:after{content:'▏';color:#8a692c;animation:paper-cursor .85s step-end infinite}
.is-feeding .typewriter-sheet-photo,.is-feeding .paper-heading,.is-feeding .typewriter-paper{transition-duration:.6s;transition-timing-function:cubic-bezier(.4,0,.2,1)}
@media(max-width:760px){.contact-links{max-width:none}.contact-links .contact-card{padding:13px 15px}.douyin-logo{width:22px;height:22px}}
@media(prefers-reduced-motion:reduce){.is-typing .printed-line:last-child:after{display:none}.is-feeding .typewriter-sheet-photo,.is-feeding .paper-heading,.is-feeding .typewriter-paper{transition:none}}
