/* DarkShift — cinematic story, interactive folio, personal route, and assembly. */
.hero{--journey:0}
.hero-scene{scale:calc(1 + var(--journey)*.09);transform-origin:72% 44%;transition:opacity .25s}
.hero-planet-wrap{filter:brightness(calc(1 + var(--journey)*.12));translate:0 calc(var(--journey)*-35px)}
.hero-copy{translate:0 calc(var(--journey)*-18px);opacity:calc(1 - var(--journey)*.2)}
.hero:after{background:radial-gradient(circle at 72% 45%,transparent 13%,#01050a3a 58%,#01050a71 100%),linear-gradient(0deg,rgba(4,14,23,var(--journey)),transparent 50%)}
.book-reveal,.assembly-world{position:relative;isolation:isolate;overflow:hidden;background:#030b14;color:#f4f1e9}
.book-reveal{min-height:1050px;padding:95px clamp(65px,9vw,160px) 120px;background:radial-gradient(circle at 53% 58%,#173445 0%,#07131e 47%,#030a13 78%)}
.book-reveal:before,.assembly-world:before{content:'';position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(90deg,#b7d5dd0e 1px,transparent 1px) 0 0/25% 100%,radial-gradient(circle at 55% 62%,#dfbf8017,transparent 42%)}
.book-reveal-head{max-width:1080px;margin:60px auto 5px;text-align:center;position:relative;z-index:4}
.book-reveal-head h2,.assembly-copy h2{font:clamp(64px,7vw,112px)/.97 var(--display);letter-spacing:-.035em;margin-bottom:24px}
.book-reveal-head h2 i,.assembly-copy h2 i{color:#e3c693;font-weight:400}
.book-reveal-head>p:not(.eyebrow){max-width:580px;margin:0 auto 25px;color:#b9cad0;font-size:16px;line-height:1.65}
.book-reveal-head .button{display:inline-flex;align-items:center;gap:24px;justify-content:center;background:#d7bd8b17}
.book-reveal-head .button:hover{background:#d7bd8b35}
.book-theatre{height:min(46vw,530px);min-height:460px;position:relative;perspective:1400px;display:grid;place-items:center;margin-top:20px;overflow:visible}
.book-theatre:before{content:'';position:absolute;left:50%;top:48%;width:min(75vw,850px);aspect-ratio:1;border:1px solid #b8d8e12a;border-radius:50%;transform:translate(-50%,-50%) rotateX(72deg);box-shadow:0 0 0 65px #93d4e508,0 0 100px #7db7c825;animation:preview-orbit 28s linear infinite}
@keyframes preview-orbit{to{transform:translate(-50%,-50%) rotateX(72deg) rotate(360deg)}}
.book-stage{width:min(74vw,700px);height:min(43vw,480px);min-height:400px;position:relative;transform-style:preserve-3d;transform:translateX(-24%) rotateX(6deg) rotateY(-13deg);transition:transform 1.2s cubic-bezier(.2,.8,.18,1);filter:drop-shadow(25px 48px 30px #0009);z-index:2}
.sample-page,.book-front{position:absolute;top:0;width:50%;height:100%;padding:0;display:block;border:0;overflow:hidden;background:#eeeae1;box-shadow:0 0 0 1px #d4c3a875;backface-visibility:hidden}
.sample-page img,.book-front img{width:100%;height:100%;max-width:none;object-fit:fill}
.sample-page{cursor:zoom-in;transform:translateZ(-3px);opacity:0;transition:opacity .45s .4s,box-shadow .3s}
.sample-page:hover{box-shadow:0 0 0 3px #d9be8c,0 0 35px #d9be8c44}
.sample-left{left:0;border-radius:5px 0 0 5px}.sample-right{left:50%;opacity:1;border-radius:0 5px 5px 0}
.sample-page:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 80%,#17263524)}
.sample-right:after{background:linear-gradient(90deg,#17263538,transparent 20%)}
.book-front{left:50%;transform-origin:left center;transform:translateZ(17px) rotateY(0);transition:transform 1.45s cubic-bezier(.25,.8,.18,1),box-shadow 1s;z-index:4;border:1px solid #dbbf86;box-shadow:8px 12px 30px #000b,14px 0 0 -7px #d6cebf}
.book-binding{position:absolute;z-index:5;left:calc(50% - 5px);top:0;width:10px;height:100%;background:linear-gradient(90deg,#271c18,#d2af75 46%,#17202b);box-shadow:0 0 18px #0008;opacity:0;transition:opacity .5s}
.book-beam{position:absolute;left:50%;bottom:0;width:min(60vw,720px);height:36px;transform:translateX(-50%);background:#d9bb7d69;filter:blur(35px);border-radius:50%;transition:width 1.4s,opacity 1.4s}
.book-reveal.is-open .book-stage{transform:translateX(0) rotateX(4deg) rotateY(-4deg)}
.book-reveal.is-open .book-front{transform:translateZ(17px) rotateY(-163deg);box-shadow:25px 15px 30px #0008}
.book-reveal.is-open .sample-page{opacity:1}.book-reveal.is-open .book-binding{opacity:1}.book-reveal.is-open .book-beam{width:min(84vw,1020px);opacity:.8}
.book-reveal-tools{max-width:1180px;margin:8px auto 0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px;position:relative;z-index:3}
.book-tool{padding:25px 27px;min-height:125px;border:1px solid #a9cbd246;background:linear-gradient(135deg,#1c37466d,#06121fb8);box-shadow:0 20px 42px #0004;transform:perspective(800px) rotateY(-5deg) translateY(24px);opacity:.45;transition:transform .9s,opacity .9s,box-shadow .5s}
.book-tool:nth-child(2){transition-delay:.12s;transform:perspective(800px) rotateY(0) translateY(24px)}.book-tool:nth-child(3){transition-delay:.24s;transform:perspective(800px) rotateY(5deg) translateY(24px)}
.book-reveal.is-open .book-tool{transform:perspective(800px) rotateY(-5deg) translateY(0);opacity:1}.book-reveal.is-open .book-tool:nth-child(2){transform:perspective(800px) rotateY(0) translateY(0)}.book-reveal.is-open .book-tool:nth-child(3){transform:perspective(800px) rotateY(5deg) translateY(0)}
.book-tool b,.book-tool span{display:block;font:10px var(--mono);letter-spacing:.09em}.book-tool b{color:#e2c58f;margin-bottom:14px}.book-tool strong{display:block;font:26px var(--display);margin-bottom:10px}.book-tool span{color:#afc1c9;line-height:1.55;letter-spacing:0}
.page-dialog{position:fixed;z-index:150;padding:48px 16px 16px;border:1px solid #d9bd82;background:#07131e;max-width:min(93vw,780px);max-height:95vh;box-shadow:0 30px 100px #000e;color:#fff;overflow:auto}
.page-dialog::backdrop{background:#020711e8;backdrop-filter:blur(12px)}.page-dialog img{width:auto;max-width:100%;max-height:calc(95vh - 75px);margin:auto;object-fit:contain}
.page-dialog button{position:absolute;right:14px;top:12px;color:#e9d4aa;border:0;background:none;font:11px var(--mono);letter-spacing:.08em;padding:8px;z-index:2}
.orbit-plan{margin:28px 0 24px;border:1px solid #b5d3da62;background:radial-gradient(circle at 33% 45%,#23435592,#071824 68%);padding:20px 22px 22px;overflow:hidden}
.orbit-plan-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #b5d3da54;padding-bottom:12px;font:9px var(--mono);letter-spacing:.11em;color:#c3d5d8}.orbit-plan-head strong{color:#e4c992;font-weight:500}
.orbit-plan-body{display:grid;grid-template-columns:235px 1fr;gap:24px;align-items:center;padding-top:15px}
.orbit-visual{position:relative;width:224px;height:224px;border-radius:50%;background:radial-gradient(circle at center,#d1af743b,transparent 33%);isolation:isolate}
.orbit-track{position:absolute;inset:20px;border:1px solid #b6d6dc75;border-radius:50%;box-shadow:0 0 30px #9bd1df20,inset 0 0 25px #9bd1df15;transform:rotateX(18deg)}
.orbit-track:before,.orbit-track:after{content:'';position:absolute;inset:26px;border:1px dashed #d5be8957;border-radius:50%;animation:map-spin 45s linear infinite}.orbit-track:after{inset:-15px;border-style:solid;border-color:#b9d7df29;animation-direction:reverse}
@keyframes map-spin{to{transform:rotate(360deg)}}
.orbit-core{position:absolute;left:50%;top:50%;width:106px;height:106px;transform:translate(-50%,-50%);border:1px solid #e2c48e;border-radius:50%;background:radial-gradient(circle,#314756,#0b1d29 70%);box-shadow:0 0 30px #e2c48e44,inset 0 0 20px #f4dc9f18;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:12px}
.orbit-core span{font:7px var(--mono);color:#b7d0d6;letter-spacing:.08em}.orbit-core strong{font:15px var(--display);color:#f4dfb2;margin-top:5px;line-height:1.05}
.orbit-days{position:absolute;inset:0}.orbit-day{position:absolute;top:50%;left:50%;width:28px;height:28px;border-radius:50%;border:1px solid #a9ccd2;background:#142b3a;color:#d5e5e6;font:10px var(--mono);transform:translate(-50%,-50%) rotate(var(--angle)) translateY(-92px) rotate(calc(-1 * var(--angle)));transition:background .25s,box-shadow .25s,color .25s,scale .25s;z-index:2;padding:0;display:grid;place-items:center}
.orbit-day:hover,.orbit-day[aria-current="step"]{background:#e5ca92;color:#06131c;border-color:#e5ca92;box-shadow:0 0 18px #e5ca92a8;scale:1.12}
.orbit-day-detail{padding:8px 0}.orbit-day-detail>span{font:10px var(--mono);letter-spacing:.13em;color:#e5c991}.orbit-day-detail p{font-size:17px;line-height:1.55;color:#eef0e9;margin:13px 0;min-height:78px}.orbit-day-detail small{font-size:10px;line-height:1.4;color:#a9bec6}
.assembly-world{min-height:850px;padding:130px clamp(65px,9vw,160px);display:grid;grid-template-columns:.8fr 1.2fr;gap:6vw;align-items:center;background:radial-gradient(circle at 73% 47%,#1b4254,#06131f 48%,#030910 80%)}
.assembly-copy{z-index:3}.assembly-copy>p:not(.eyebrow){max-width:460px;color:#b9cbd0;font-size:16px;line-height:1.6;margin-bottom:30px}.assembly-copy .text-link{color:#e9d2a0}
.assembly-stage{--assembly:0;position:relative;height:610px;perspective:1200px;isolation:isolate}
.assembly-orbit{position:absolute;inset:7% 0;border:1px solid #c5d7d145;border-radius:50%;transform:rotateX(68deg) rotateZ(-18deg);box-shadow:0 0 90px #8fbfcb28;animation:assembly-rotate 28s linear infinite}
@keyframes assembly-rotate{50%{transform:rotateX(65deg) rotateZ(0)}to{transform:rotateX(68deg) rotateZ(18deg)}}
.assembly-core{position:absolute;left:50%;top:50%;width:340px;height:440px;transform:translate(-50%,-50%) rotateY(-12deg);border:1px solid #e6d3ab86;background:linear-gradient(150deg,#203e4ea8,#06121fbf);box-shadow:20px 40px 90px #000b,0 0 75px #ddbf8255,inset 0 0 45px #a8d4d121;display:flex;flex-direction:column;justify-content:space-between;padding:25px;color:#e7d1a1;opacity:.45;transition:opacity .2s}
.assembly-core:before,.assembly-core:after{content:'';position:absolute;width:22px;height:22px;border-color:#ecd099}.assembly-core:before{left:-1px;top:-1px;border-left:2px solid;border-top:2px solid}.assembly-core:after{right:-1px;bottom:-1px;border-right:2px solid;border-bottom:2px solid}
.assembly-core span,.assembly-core small{font:9px var(--mono);letter-spacing:.12em}.assembly-core strong{font:44px/.96 var(--display);color:#f4ebd8;text-align:center}.assembly-core small{text-align:right}
.assembly-piece{position:absolute;left:50%;top:50%;width:210px;height:290px;transform-origin:center;will-change:transform;box-shadow:0 30px 55px #000b;border:1px solid #dbc7967a;overflow:hidden;background:#081721}
.assembly-piece img{width:100%;height:100%;object-fit:cover}.piece-page{width:230px;aspect-ratio:612/792;height:auto;background:#f4f1e8}.piece-wall{width:172px;height:310px}.piece-wall img{object-fit:cover}
.assembly-caption{position:absolute;bottom:-15px;left:0;right:0;text-align:center;color:#a8c0c8;font:9px var(--mono);letter-spacing:.14em;white-space:nowrap}.assembly-caption span{color:#e2c48d;padding:0 9px}
@media(max-width:1000px){.book-reveal,.assembly-world{padding-left:7vw;padding-right:7vw}.book-theatre{min-height:400px}.book-stage{height:380px;min-height:380px}.assembly-world{grid-template-columns:1fr;gap:10px}.assembly-copy{text-align:center}.assembly-copy>p:not(.eyebrow){margin-left:auto;margin-right:auto}.assembly-stage{height:560px;width:min(100%,740px);margin:auto}}
@media(max-width:700px){.hero-scene{scale:calc(1 + var(--journey)*.035)}.book-reveal{min-height:0;padding:85px 20px 80px}.book-reveal-head{margin:55px auto 0}.book-reveal-head h2,.assembly-copy h2{font-size:clamp(53px,12vw,78px)}.book-reveal-head>p:not(.eyebrow){font-size:14px}.book-theatre{height:360px;min-height:360px;margin-top:25px;overflow:hidden;margin-left:-20px;margin-right:-20px}.book-stage{width:min(95vw,440px);height:300px;min-height:300px}.book-reveal.is-open .book-stage{transform:translateX(0) rotateX(2deg)}.book-reveal-tools{grid-template-columns:1fr;gap:10px;margin-top:6px}.book-tool,.book-tool:nth-child(2),.book-tool:nth-child(3),.book-reveal.is-open .book-tool,.book-reveal.is-open .book-tool:nth-child(2),.book-reveal.is-open .book-tool:nth-child(3){transform:none}.book-tool{min-height:0;padding:16px 18px}.book-tool b{margin-bottom:6px}.book-tool strong{font-size:22px;margin-bottom:5px}.book-tool span{font-size:9px}.orbit-plan{padding:16px 13px}.orbit-plan-body{grid-template-columns:1fr;justify-items:center;gap:2px}.orbit-day-detail{text-align:center;max-width:330px}.orbit-day-detail p{font-size:15px;min-height:0}.assembly-world{min-height:0;padding:90px 20px 100px}.assembly-copy{text-align:left}.assembly-stage{height:440px;width:100%}.assembly-core{width:230px;height:320px;padding:17px}.assembly-core strong{font-size:30px}.assembly-piece{width:150px;height:210px}.piece-page{width:155px;height:205px}.piece-wall{width:115px;height:220px}.assembly-caption{font-size:7px;letter-spacing:.06em;bottom:-16px}.assembly-caption span{padding:0 3px}}
@media(prefers-reduced-motion:reduce){.hero-scene{scale:1}.hero-copy{translate:none;opacity:1}.book-theatre:before,.orbit-track:before,.orbit-track:after,.assembly-orbit{animation:none!important}.book-stage,.book-front,.sample-page,.book-tool,.assembly-piece{transition:none!important}.book-reveal .book-stage{transform:none}.book-reveal .book-front{display:none}.book-reveal .sample-page,.book-reveal .book-binding,.book-reveal .book-tool{opacity:1}.assembly-core{opacity:1}}
.orbit-day{transform:translate(-50%,-50%) rotate(var(--angle)) translateY(-92px) rotate(var(--reverse-angle))}
.assembly-core{z-index:4;background:linear-gradient(150deg,#203e4eea,#06121ff5)}
.assembly-core>span,.assembly-core>strong,.assembly-core>small{opacity:var(--case-title,0);transition:opacity .25s}
