/* Text stays outside the camera transform. Each clearing has its own composition. */
.scene--entrance .scene-copy { width:min(650px,70vw); margin:0; justify-self:start; margin-left:12vw; }
.scene--entrance h1 { font-weight:500; letter-spacing:.2em; font-size:clamp(90px,10vw,152px); }
.scene--entrance h1 span { font-size:clamp(17px,1.6vw,24px); letter-spacing:.13em; line-height:1.9; max-width:26em; margin-top:24px; }
.scene--entrance .kicker { border-left:1px solid #d8c98e; padding-left:15px; }
.scene--entrance .lede { margin-left:5px; }
.scene--works .reading-layout { grid-template-columns:1fr 1.3fr; gap:8vw; width:min(1050px,85vw); }
.scene--works .scene-copy { align-self:start; padding-top:35px; }
.scene--works h2 { writing-mode:vertical-rl; font-weight:400; letter-spacing:.15em; line-height:1.5; }
.works-list { border:0; background:linear-gradient(110deg,rgba(17,31,20,.82),rgba(17,31,20,.55)); backdrop-filter:none; padding:20px 30px; border-left:1px solid #b9b18a88; box-shadow:20px 30px 60px #10221833; }
.work-link > span,.work-link small { font-size:14px; }
.scene--contact .scene-copy { width:min(700px,70vw); margin:0; margin-left:8vw; justify-self:start; border-left:2px solid #c9b78499; padding:25px 35px; background:linear-gradient(90deg,#10211699,transparent); }
.scene--contact h2 { font-size:clamp(35px,4vw,60px); font-weight:400; line-height:1.55; letter-spacing:.06em; }
.scene--contact .email { font-size:clamp(16px,2vw,28px); user-select:text; }
.library-layout { align-items:end; }
.scene--library h2 { font-weight:400; font-size:clamp(48px,5vw,76px); line-height:1.35; }
.archive-list { background:linear-gradient(110deg,#25372bef,#233b2bc9); border:0; border-top:3px double #c9bc93aa; border-bottom:3px double #c9bc93aa; backdrop-filter:none; padding:13px 0; box-shadow:10px 20px 50px #11201755; }
.archive-list span,.archive-list small { font-size:14px; }
.kicker { font-size:14px; }
.path-step { border:0; border-radius:0; background:transparent; backdrop-filter:none; font-size:14px; border-bottom:1px solid #d2c9a366; }
.scene--guestbook { cursor:default; }
.scene--guestbook .light-wash { background:linear-gradient(0deg,#101d1970,transparent 65%),linear-gradient(90deg,#101d1930,transparent 40%); }
.forest-world { position:absolute; inset:0; z-index:3; transition:opacity .55s; }
.forest-heading { position:absolute; z-index:2; left:8%; top:19%; text-shadow:0 2px 12px #172318; pointer-events:none; }
.forest-occlusion { position:absolute; inset:-6%; z-index:1; pointer-events:none; background-image:url('assets/journey-03.jpg'); background-size:cover; background-position:var(--camera-x) var(--camera-y); transform:scale(var(--camera-scale)); transform-origin:var(--camera-origin); clip-path:polygon(61.8% 0,64.6% 0,64.8% 72%,62% 72%); }
.wind-chime,.writing-sign,.forest-status { z-index:2; }
.forest-heading h2 { font-size:clamp(28px,3.1vw,46px); line-height:1.55; font-weight:400; letter-spacing:.17em; }
.forest-heading .kicker { letter-spacing:.25em; color:#e7e2c9; }
.visitors { position:absolute; inset:0; transition:opacity .65s; }
.visitors.is-changing { opacity:0; pointer-events:none; }
.visitor { position:absolute; left:var(--x); top:var(--y); width:max(48px,var(--h)*.44); height:var(--h); transform:translate(-50%,-100%); border:0; padding:0; background:none; cursor:pointer; animation:presence 1.2s both; animation-delay:var(--delay,0ms); }
.visitor img { display:block; width:100%; height:100%; object-fit:contain; opacity:var(--opacity); filter:blur(var(--blur)); transition:opacity .35s,filter .35s; mask-image:linear-gradient(to bottom,#000 65%,transparent 100%); clip-path:var(--occlusion,none); }
.visitor:hover img,.visitor:focus-visible img,.visitor[aria-expanded=true] img { opacity:.9; filter:blur(.2px) drop-shadow(0 0 3px #ece2a355); }
.visitor:first-child img { animation:discovery 3s 1.4s 1; }
.wind-chime { position:absolute; left:79%; top:18%; padding:12px; border:0; background:none; color:#f3e5b8; cursor:pointer; text-shadow:0 2px 5px #152315; font-size:14px; }
.chime-art { display:block; font-size:24px; line-height:.75; letter-spacing:3px; transform-origin:top; transition:transform .6s; margin-bottom:16px; }
.wind-chime:hover .chime-art { transform:rotate(8deg); }
.writing-sign { position:absolute; left:63%; top:75%; transform:rotate(-5deg); padding:15px 23px; color:#f7edd2; background:repeating-linear-gradient(2deg,#54442d 0 3px,#5a4932 4px 7px,#4b3d2b 8px 9px); border:1px solid #b1a27d80; border-radius:2px; box-shadow:2px 6px 10px #07170c88; cursor:pointer; font-size:18px; letter-spacing:.1em; }
.writing-sign:after { content:''; position:absolute; width:12px; height:70px; background:linear-gradient(90deg,#312d21,#6d5837,#403724); left:47%; top:100%; z-index:-1; }
.writing-sign i { font-style:normal; margin-left:12px; }
.forest-status { position:absolute; bottom:17%; left:7%; max-width:24em; font-size:16px; line-height:1.8; text-shadow:0 2px 6px #102319; }
.voice-preview { position:absolute; width:min(310px,calc(100vw - 40px)); z-index:9; padding:27px 29px 24px; border:0; border-left:1px solid #ebdfb75c; color:#faf4df; text-align:left; background:radial-gradient(ellipse at 25% 45%,#213a2bef 45%,#213a2bbf 80%,#213a2b66); border-radius:38% 12% 24% 8% / 10% 20% 12% 30%; box-shadow:0 8px 24px #11261944; cursor:pointer; font-size:18px; line-height:1.8; animation:presence .45s both; }
.voice-preview span { white-space:pre-wrap; overflow-wrap:anywhere; }
.voice-preview small { display:block; margin-top:10px; font-size:14px; color:#e7d8a9; }
.forest-paper { position:fixed; z-index:40; width:min(570px,calc(100vw - 32px)); max-height:calc(100dvh - 70px); overflow:auto; padding:clamp(24px,5vw,56px); border:1px solid #c2b58e; color:#263629; background:linear-gradient(120deg,#f1ead5,#dedbc5); box-shadow:0 20px 100px #0a170a66; }
.forest-paper::backdrop { background:#14261cb3; backdrop-filter:blur(3px); }
.forest-paper .kicker { color:#57654c; letter-spacing:.12em; }
.forest-paper h3 { font-size:28px; font-weight:400; margin:0 0 25px; }
.voice-content { white-space:pre-wrap; overflow-wrap:anywhere; line-height:2.1; font-size:20px; }
.voice-meta { font-size:14px; color:#56604f; margin-top:30px; }
.forest-paper button { cursor:pointer; color:#273d2b; border:0; border-bottom:1px solid #637054; background:none; padding:10px 0; font-size:16px; }
.paper-return { margin-top:20px; }
.forest-paper label { display:block; margin-top:18px; font-size:17px; }
.forest-paper label span,.privacy-note,.letter-count { color:#58634e; font-size:14px; line-height:1.65; }
.forest-paper textarea,.forest-paper input { width:100%; font:18px/1.8 inherit; font-family:inherit; font-size:18px; line-height:1.8; color:#253627; background:#fffdf22e; border:0; border-bottom:1px solid #7a8064; border-radius:0; padding:10px; margin-top:8px; }
.forest-paper textarea { min-height:125px; resize:vertical; }
.letter-count { text-align:right; margin:2px 0; }
.paper-actions { display:flex; gap:30px; align-items:center; flex-wrap:wrap; }
.forest-paper button:disabled { opacity:.45; cursor:wait; }
#compose-status { font-size:16px; line-height:1.6; }
#turnstile-slot { margin-top:14px; min-height:0; }
[hidden] { display:none !important; }
.scene.is-arriving .forest-world,.scene.is-departing-forward .forest-world,.scene.is-departing-backward .forest-world { opacity:0; visibility:hidden; }
.scene.is-revealing .forest-world { animation:presence 1.1s both; }
.scene.is-arriving .library-layout,.scene.is-departing-forward .library-layout,.scene.is-departing-backward .library-layout { opacity:0; visibility:hidden; }
.scene.is-revealing .library-layout { animation:words-appear .72s both; }
@keyframes presence { from { opacity:0; } to { opacity:1; } }
@keyframes discovery { 50% { opacity:.85; filter:blur(.1px); } }
@media(max-width:760px) {
  .scene--entrance .scene-copy { width:calc(100% - 48px); margin:0 24px 190px; }
  .scene--entrance h1 { font-size:90px; }
  .scene--entrance h1 span { font-size:18px; }
  .scene--works .reading-layout { grid-template-columns:1fr; gap:18px; width:calc(100% - 40px); }
  .scene--works .scene-copy { padding:0; }
  .scene--works h2 { writing-mode:horizontal-tb; font-size:36px; line-height:1.2; }
  .scene--works h2 br { display:none; }
  .works-list { padding:4px 20px; }
  .scene--contact .scene-copy { width:calc(100% - 40px); margin:0 20px 190px; padding:20px; }
  .scene--contact h2 { font-size:32px; }
  .forest-heading { left:6%; top:14%; }
  .forest-heading h2 { font-size:27px; }
  .forest-heading .kicker { font-size:14px; }
  .wind-chime { left:auto; right:5%; top:13%; padding:8px; }
  .chime-art { font-size:19px; letter-spacing:2px; }
  .writing-sign { left:53%; top:76%; padding:12px 15px; font-size:16px; }
  .forest-status { bottom:24%; left:6%; max-width:12em; }
  .visitor { left:var(--mx); top:var(--my); height:var(--mh); }
  .visitor:nth-child(n+4) { display:none; }
  .forest-occlusion { display:none; }
  .voice-preview { font-size:17px; width:245px; padding:20px 24px; }
  .archive-list small { display:none; }
  .forest-paper { padding:24px; }
}
@media(max-height:700px) { .forest-paper { max-height:calc(100dvh - 24px); } .forest-heading { top:15%; } }
@media(prefers-reduced-motion:reduce) {
  .forest-world,.visitors,.visitor,.visitor img,.voice-preview,.library-layout { animation:none!important; transition:none!important; }
  .forest-paper::backdrop { backdrop-filter:none; }
}
