:root{font-family:"Jushan Sans","Microsoft YaHei",sans-serif;color:#f0f0df;background:#12251c;font-synthesis:none;color-scheme:dark;scroll-behavior:smooth}
*{box-sizing:border-box}
body{margin:0}
a{color:inherit;text-decoration:none;text-underline-offset:5px}
button,input{font:inherit}
button,a,input{-webkit-tap-highlight-color:transparent}
:focus-visible{outline:2px solid #f0f0df;outline-offset:6px}
::selection{background:#d0d7a7;color:#12251c}
.skip-link{position:fixed;z-index:20;top:-100px;left:20px;padding:12px 20px;background:#12251c}
.skip-link:focus{top:15px}
.experience{position:relative;min-height:640px;height:100svh;overflow:hidden;isolation:isolate;background:#12251c}
.scene{position:absolute;inset:-4px;overflow:hidden;transform:translate3d(var(--shake-x,0px),var(--shake-y,0px),0)}
.environment,.foreground{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;pointer-events:none}
.environment img,.foreground img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.environment{z-index:0}
.foreground{z-index:2}
.terrain{position:absolute;inset:0;z-index:1}
.terrain canvas{display:block;width:100%;height:100%}
.rock-labels{position:absolute;inset:0;z-index:4;display:block;pointer-events:none}
.rock-label{position:absolute;left:50%;top:60%;opacity:0;transform:translate(-50%,-50%);white-space:nowrap;font-family:"Jushan Serif",serif;font-size:clamp(24px,2.6vw,38px);letter-spacing:.06em;font-weight:600;text-shadow:0 2px 8px #07180e,0 3px 18px #07180e;pointer-events:auto;padding:12px 18px;min-height:44px}
.rock-label:hover{text-decoration:underline}
.readability{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(180deg,rgba(5,18,12,.48),transparent 20%,transparent 55%,rgba(5,18,12,.3) 70%,rgba(5,18,12,.88))}
.site-header{position:absolute;left:5%;right:5%;top:34px;z-index:5;display:flex;align-items:center;justify-content:space-between}
.brand{display:flex;gap:13px;align-items:center;text-shadow:0 2px 14px #0b1b13}
.brand-mark{font-family:"Jushan Serif",serif;font-size:31px;font-weight:700;letter-spacing:.04em}
.brand>span:last-child{font-size:12px;letter-spacing:.14em}
nav{display:flex;gap:35px;font-size:13px}
nav a{padding:8px 0;text-shadow:0 2px 12px #07170f}
nav a:hover{text-decoration:underline}
.arrival{position:absolute;z-index:4;left:7%;bottom:155px;opacity:var(--arrival,0);transform:translateY(calc((1 - var(--arrival,0)) * 16px));pointer-events:none}
.arrival a{pointer-events:auto}
h1{font-family:"Jushan Serif",serif;font-size:clamp(66px,6.7vw,96px);font-weight:650;line-height:1.18;letter-spacing:.03em;margin:0 0 17px}
.arrival>p{margin:0 0 26px;font-size:clamp(16px,1.5vw,21px);letter-spacing:.1em}
.arrival>a{display:inline-flex;align-items:center;gap:30px;padding:12px 0;border-bottom:1px solid #d4ddbc;font-size:13px}
.arrival a:hover{color:#d1e0a7}
.scene-status{position:absolute;bottom:155px;left:7%;z-index:4;margin:0;font-family:"Jushan Serif",serif;font-size:17px;letter-spacing:.12em;opacity:calc(1 - var(--arrival,0))}
.playback{position:absolute;z-index:5;left:7%;right:7%;bottom:30px;display:flex;align-items:center;justify-content:space-between;gap:40px}
.playback-actions{display:flex;align-items:center;gap:8px}
button{background:transparent;border:1px solid transparent;color:inherit;cursor:pointer;padding:11px 14px;min-height:44px;white-space:nowrap;font-size:12px}
button:hover{border-color:#889d81;background:rgba(10,29,17,.5)}
#finish{border-color:#697d60}
.timeline{display:flex;align-items:center;gap:20px;max-width:480px;width:44%}
input[type=range]{width:100%;min-width:40px;height:44px;margin:0;accent-color:#d4ddbc;cursor:pointer}
output{white-space:nowrap;color:#d1d8c6;font-size:11px;font-variant-numeric:tabular-nums}
.fallback-message{position:absolute;bottom:135px;left:7%;max-width:80%;font-size:14px;z-index:6;color:#f0f0df}
.services{padding:110px 7% 0;background:#12251c}
.services-intro{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:75px}
h2{font-family:"Jushan Serif",serif;font-size:clamp(35px,4vw,60px);line-height:1.4;font-weight:500;letter-spacing:-.02em;margin:0}
.services-intro>p{font-size:14px;line-height:2.1;color:#bdcbb7;margin:0 0 9px}
.service-list{display:grid;grid-template-columns:repeat(3,1fr);gap:6%;padding-bottom:95px}
.service-list article{border-top:1px solid #405344;padding-top:26px}
h3{font-size:22px;font-weight:500;margin:0 0 18px}
.service-list p{font-size:14px;line-height:1.95;color:#bdcbb7;max-width:26em}
footer{padding:28px 0 35px;border-top:1px solid #405344;display:flex;justify-content:space-between;gap:25px;font-size:12px;color:#bdcbb7}
footer a:hover{text-decoration:underline}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
html{scrollbar-color:#6e8166 #12251c}
@media(max-width:700px){
 .experience{min-height:620px}
 .terrain{top:90px;bottom:-90px}
 .rock-labels{top:90px;bottom:-90px}.rock-label{font-size:22px;padding:10px}
 .site-header{top:24px;left:24px;right:24px}.brand-mark{font-size:26px}.brand>span:last-child{display:none}
 nav{font-size:12px;gap:20px}.arrival{left:25px;bottom:138px}.arrival h1{font-size:32px;line-height:1.2;margin-bottom:8px}.arrival>p{display:none}.arrival>a{font-size:11px;padding:8px 0}
 .scene-status{left:25px;bottom:190px;font-size:15px;letter-spacing:.08em}
 .playback{left:20px;right:20px;bottom:22px;display:block}.playback-actions{justify-content:space-between;margin-bottom:12px}
 .timeline{max-width:none;width:100%;gap:20px}button{padding:10px 13px;font-size:12px}
 .services{padding:65px 25px 0}.services-intro{display:block;margin-bottom:45px}.services-intro>p{margin-top:25px}
 h2{font-size:34px}.service-list{display:block;padding-bottom:30px}.service-list article{margin-top:30px;padding-top:22px}.service-list p{max-width:100%;margin-bottom:25px}
 footer{display:block;line-height:1.9}footer a{display:block;margin-top:15px}
 .fallback-message{bottom:145px}
}
@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}.scene{transform:none}.arrival{transform:none}}
