/* R31 — keep the approved atmosphere; improve the interaction itself. */
@property --button-mask-x{syntax:'<percentage>';inherits:true;initial-value:100%}
body.interactions-r31 #hero .hero-entry{width:278px;height:60px;bottom:16.5%}
body.interactions-r31 #hero #hero-explore{display:flex;justify-content:center;align-items:center;gap:0;width:100%;height:60px;min-height:60px;padding:12px 25px;border:1px solid #7d9fa343;border-radius:7px;background:linear-gradient(140deg,#ffffffed,#f8fcfce8 65%,#e0f2f5e6);box-shadow:inset 0 1px 0 #fff,0 5px 18px -14px #426b8190;color:#234c63;transform:scale(1);transition:transform .34s cubic-bezier(.17,1.4,.36,1),background .3s,box-shadow .3s;overflow:hidden}
body.interactions-r31 #hero #hero-explore .explore-copy{display:block;mask-image:linear-gradient(-75deg,#fff calc(var(--button-mask-x) + 20%),transparent calc(var(--button-mask-x) + 30%),#fff calc(var(--button-mask-x) + 100%));animation:none}
body.interactions-r31 #hero-explore .explore-label{font-size:17px;line-height:1.35;font-weight:500;letter-spacing:.005em;white-space:nowrap}
html[lang=en] body.interactions-r31 #hero-explore .explore-label{font-size:15px;letter-spacing:0}
body.interactions-r31 #hero #hero-explore .entry-border{background:linear-gradient(-75deg,transparent 30%,#234c63a8 50%,transparent 70%);background-size:200% 100%;animation:none}
body.interactions-r31 #hero.r30-controls-live #hero-explore .explore-copy{animation:button-letter-r31 2s linear infinite}
body.interactions-r31 #hero.r30-controls-live #hero-explore .entry-border{animation:button-border-r31 2s linear infinite}
body.interactions-r31 #hero #hero-explore:is(:hover,:focus-visible,.is-entering){transform:scale(1.01);background:#fff;box-shadow:inset 0 1px 0 #fff,0 9px 24px -18px #31556d80}
body.interactions-r31 #hero #hero-explore:active{transform:scale(.97);transition:transform .15s}
@keyframes button-letter-r31{0%{--button-mask-x:100%}50%,100%{--button-mask-x:-100%}}
@keyframes button-border-r31{0%{background-position:100% 0;opacity:0}25%{opacity:1}50%,100%{background-position:0% 0;opacity:0}}

/* A full-width scene exchange, with a rotating, machined year wheel. */
.record-preview-r31{position:absolute;inset:0;z-index:4;transform:translateX(0);opacity:1;transition:transform 1.1s cubic-bezier(.22,1,.36,1),opacity .8s;pointer-events:none}
.record-preview-r31 .record-focus{pointer-events:auto}
.project-wheel-open .record-preview-r31{transform:translateX(-90%);opacity:0;pointer-events:none}
.project-wheel-open .record-preview-r31 .record-focus{pointer-events:none}
body.interactions-r31 .record-resolved-lines{transition:opacity .8s;opacity:calc(var(--record-focus-opacity,1)*.28)}
body.interactions-r31 .project-wheel-open .record-resolved-lines{opacity:0!important}
.project-wheel-r31{--wheel-size:clamp(1080px,155vh,1480px);position:absolute;inset:0;z-index:7;isolation:isolate;color:#2c5169;pointer-events:none;overflow:hidden;transition:opacity .5s}
.wheel-wash{position:absolute;inset:0;background:radial-gradient(ellipse at 16% 52%,#d4e9edbb,transparent 60%),linear-gradient(110deg,#ecf5f866,#f8fbfadd 65%,#e5f1f399);opacity:0;transition:opacity .8s}
.project-wheel-open .wheel-wash{opacity:1}
.wheel-traveller{position:absolute;width:var(--wheel-size);height:var(--wheel-size);left:0;top:50%;translate:calc(100vw - var(--wheel-size)/2 + 120px) -50%;transition:translate 1.15s cubic-bezier(.22,1,.36,1);pointer-events:none;border-radius:50%;user-select:none;touch-action:pan-y}
.project-wheel-open .wheel-traveller{translate:calc(clamp(300px,34vw,540px) - var(--wheel-size)) -50%;pointer-events:auto;cursor:grab;touch-action:none}
.wheel-traveller.is-dragging{cursor:grabbing}
.wheel-body{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,transparent 62%,#c1d9df12 62.1%,#fff9 64%,#dceaf0aa 64.3%,#f9fdfce0 66%,#b8d3db88 66.3%,#fafdfeee 68%,#9cbbc255 68.2%,#fff9 69%,transparent 70%);filter:drop-shadow(18px 14px 22px #6995a117)}
.wheel-finish{position:absolute;inset:2.6%;border-radius:50%;background:conic-gradient(from 20deg,#faffff,#b6d0da70 20%,#faffffed 27%,#acc9d599 49%,#faffff 51%,#d3e5ea99 68%,#fff 75%,#b3cddc66 94%,#faffff);mask:radial-gradient(circle,transparent 64%,#000 64.2%,#000 70%,transparent 70.2%);opacity:.75}
.wheel-engraving{position:absolute;inset:3.1%;border-radius:50%;background:repeating-conic-gradient(from 0deg,#698e9e80 0 .065deg,transparent .07deg 1.25deg);mask:radial-gradient(circle,transparent 66.6%,#000 66.7%,#000 69.8%,transparent 70%);transition:transform 1.4s cubic-bezier(.22,1,.36,1)}
.wheel-light{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 250deg,transparent 0 45%,#ffffffc9 49%,transparent 53%);mask:radial-gradient(circle,transparent 64%,#000 64.3%,#000 69%,transparent 69.5%);opacity:.7}
.wheel-years{position:absolute;inset:0;border-radius:50%}
.wheel-year-arm{position:absolute;left:50%;top:50%;height:0;width:50%;transform-origin:0 0;transform:rotate(var(--year-angle))}
.wheel-year-arm button{position:absolute;right:5.5%;top:0;transform:translateY(-50%);display:flex;align-items:center;gap:20px;border:0;padding:12px 10px;background:none;color:#41667ba1;font-size:clamp(24px,2.55vw,39px);font-weight:350;letter-spacing:-.025em;transition:color .6s,opacity .6s,font-size .6s;opacity:max(.08,calc(1 - var(--distance,0)*.2));white-space:nowrap}
.wheel-year-arm button i{width:5px;height:5px;border-radius:50%;background:#7197a875;box-shadow:0 0 0 5px #b0cbd418;transition:box-shadow .6s,background .6s}
.wheel-year-arm button[aria-pressed=true]{color:#284e66;font-size:clamp(35px,4.3vw,66px);opacity:1}
.wheel-year-arm button[aria-pressed=true] i{background:#538ca1;box-shadow:0 0 0 6px #fff8,0 0 0 7px #aacbd3a0,0 0 24px #84b6c7b0}
.wheel-year-arm button:focus-visible{outline:1px solid #518ba7;outline-offset:3px;border-radius:4px}
.wheel-marker{position:absolute;left:calc(100% - 20px);top:50%;display:flex;align-items:center;gap:12px;opacity:0;transition:opacity .7s;white-space:nowrap;translate:0 -50%;pointer-events:none}
.wheel-marker i{display:block;width:35px;height:1px;background:linear-gradient(90deg,#6c9caf,transparent)}
.wheel-marker span{font:8px/1.5 monospace;letter-spacing:.12em;color:#7897a6;writing-mode:vertical-rl}
.project-wheel-open .wheel-marker{opacity:.8}
.wheel-invite{position:absolute;right:3.8%;top:30%;width:28%;height:44%;padding:25px 0 25px 30px;color:inherit;display:flex;align-items:flex-start;justify-content:center;flex-direction:column;text-align:left;border:0;background:none;pointer-events:auto;transition:opacity .4s,transform .65s;cursor:pointer}
.wheel-invite>small{font:8px/1.6 monospace;letter-spacing:.05em;opacity:.6}.wheel-invite>span{font-size:clamp(25px,3vw,46px);font-weight:350;letter-spacing:-.045em;line-height:1.35;margin:28px 0 35px;word-break:keep-all}.wheel-invite>b{display:flex;align-items:center;gap:12px;font-size:12px;font-weight:450}.wheel-invite i{display:grid;place-items:center;border:1px solid #7da0b344;border-radius:50%;width:36px;height:36px;font-style:normal;font-size:17px;background:#fff6}.wheel-invite em{font:9px/1 monospace;opacity:.5;align-self:flex-start;margin-top:5px}
.project-wheel-open .wheel-invite{opacity:0;transform:translateX(-35vw);pointer-events:none}
#wheel-records{position:absolute;left:45%;right:6%;top:12%;bottom:12%;display:flex;flex-direction:column;opacity:0;transform:translateX(45vw);transition:transform 1.1s cubic-bezier(.22,1,.36,1),opacity .75s;pointer-events:none}
.project-wheel-open #wheel-records{opacity:1;transform:translateX(0);pointer-events:auto}
#wheel-records header{display:flex;align-items:center;justify-content:space-between;gap:16px;font:10px/1.5 monospace;letter-spacing:.08em}
.wheel-close{border:0;background:none;padding:10px 0;color:#55798d;font-size:11px;letter-spacing:0}
.wheel-editorial{margin:auto 0;position:relative;padding-top:26px;min-height:0}
.wheel-year-title{font-size:clamp(76px,9.5vw,142px);font-weight:300;line-height:.94;letter-spacing:-.075em;color:#8aafbf50;margin-bottom:12px}
.wheel-caption{font-size:12px;letter-spacing:.03em;margin:0 0 20px;color:#7b98a8}
.wheel-record{position:relative;display:block;width:100%;padding:17px 28px 17px 0;border:0;border-bottom:1px solid #8aa7b323;background:none;text-align:left;color:inherit;animation:wheel-record-in .6s var(--record-delay,0ms) both}
.wheel-record:last-child{border-bottom:0}.wheel-record small{font:9px/1.6 monospace;letter-spacing:.05em;color:#8aa1ae;display:block;margin-bottom:7px}.wheel-record>span{display:block;font-size:clamp(19px,2.25vw,32px);font-weight:400;line-height:1.35;letter-spacing:-.045em;transition:translate .3s}.wheel-record p{font-size:12px;color:#708d9e;line-height:1.65;margin:6px 0 0}.wheel-record>i{position:absolute;right:0;top:46%;font-style:normal;font-size:20px;opacity:.45;transition:translate .3s,opacity .3s}.wheel-record:hover>span{translate:4px 0}.wheel-record:hover>i{translate:3px -3px;opacity:1}
#wheel-records footer{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-top:25px}.wheel-guide{font-size:10px;color:#8aa1af}#wheel-records footer>div{display:flex;gap:8px}#wheel-records footer button{display:grid;place-items:center;width:42px;height:42px;background:#fff5;border:1px solid #9bb9c33d;border-radius:50%;color:#456c82;font-size:18px;transition:background .3s}#wheel-records footer button:hover{background:#fff}#wheel-records footer button:disabled{opacity:.2;cursor:default}
@keyframes wheel-record-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* Larger photographic volumes, with a lit bevel and depth-specific perspective. */
body.interactions-r31 .mapped-stage{top:min(0px,calc(100svh - 915px));height:max(100svh,915px);padding-top:95px}
body.interactions-r31 .facility-depth{max-width:1340px;height:530px;margin:10px auto 0}
body.interactions-r31 #facility-tabs button{width:206px;height:166px}
body.interactions-r31 .facility-node-image{width:194px;height:128px;padding:5px;border-radius:9px;border-color:#ffffffd9;background:linear-gradient(135deg,#fff,#d2e4ed 70%,#a2bfcc);box-shadow:1px 2px 0 #85a5b369,3px 5px 0 #d2e1e7,5px 8px 1px #7b9bad33,0 25px 26px -16px #315b7460,inset 0 1px 0 #fff;transform:perspective(650px) rotateY(var(--node-yaw,0deg)) rotateX(9deg);overflow:visible;isolation:isolate}
body.interactions-r31 .facility-node-image::after{content:'';position:absolute;inset:5px;border-radius:5px;background:linear-gradient(120deg,#fff5,transparent 40%,#89adc11a);pointer-events:none;transition:opacity .6s}
body.interactions-r31 .facility-node-image img{border-radius:5px;filter:saturate(.42) contrast(.92);opacity:.94}
body.interactions-r31 .facility-node-image i{font-size:9px;background:#214a6369;top:11px;left:11px;padding:4px 5px}
body.interactions-r31 #facility-tabs button[aria-pressed=true] .facility-node-image{transform:perspective(650px) rotateY(calc(var(--node-yaw,0deg)*.25)) rotateX(3deg) translateY(-7px) scale(1.055);box-shadow:1px 2px 0 #a2bfcbbf,3px 5px 0 #e5f1f5,5px 9px 1px #97b5c044,0 32px 34px -15px #315b7460,0 0 0 1px #d9f1f7}
body.interactions-r31 #facility-tabs button[aria-pressed=true] img{filter:saturate(.65) contrast(.98)}
body.interactions-r31 #facility-tabs .capsule-label b{font-size:13px;line-height:1.5;letter-spacing:-.015em;text-shadow:0 1px 5px #f5fbff;font-weight:500}
body.interactions-r31 .facility-core-r30{width:325px;height:220px;opacity:calc(var(--atlas-arrival,0)*.6)}
body.interactions-r31 .facility-orbits-r30{opacity:calc(var(--atlas-arrival,0)*.4);transform:rotate(-9deg) scaleY(1.05)}
body.interactions-r31 .facility-depth::before{content:'';position:absolute;left:12%;right:12%;top:26%;height:64%;border-radius:50%;background:radial-gradient(ellipse,#b9d2e228,transparent 66%);transform:rotate(-8deg);pointer-events:none}
body.interactions-r31 #facilities .facility-viewport{margin-top:0}
body.interactions-r31 .facility-stage-note{bottom:2px}
@media(max-width:1000px){
 .project-wheel-r31{--wheel-size:1120px}.project-wheel-open .wheel-traveller{translate:calc(32vw - var(--wheel-size)) -50%}
 #wheel-records{left:43%;right:5%}.wheel-record>span{font-size:23px}.wheel-guide{max-width:160px;line-height:1.6}.wheel-year-arm button{right:3%;gap:12px}
 .wheel-marker{left:calc(100% - 3px)}
 body.interactions-r31 #facility-tabs button{width:170px;height:148px}body.interactions-r31 .facility-node-image{width:158px;height:108px}
}
@media(max-width:760px){
 body.interactions-r31 #hero .hero-entry{width:254px;height:56px;bottom:16.3%}body.interactions-r31 #hero #hero-explore{height:56px;min-height:56px}body.interactions-r31 #hero-explore .explore-label{font-size:16px}
 .wheel-invite{top:auto;bottom:12%;right:5%;width:42%;height:27%;padding:10px}.wheel-invite>small{font-size:6px;line-height:1.7;max-width:110px}.wheel-invite>span{font-size:22px;margin:14px 0 18px}.wheel-invite>b{gap:6px;font-size:10px}.wheel-invite i{width:27px;height:27px}.wheel-invite em{display:none}
 .project-wheel-r31{--wheel-size:980px}.wheel-traveller{translate:calc(100vw - var(--wheel-size)/2 + 430px) -50%}
 .project-wheel-open .wheel-traveller{translate:calc(30vw - var(--wheel-size)) -50%}
 .wheel-year-arm button{right:1.8%;font-size:20px;gap:12px}.wheel-year-arm button[aria-pressed=true]{font-size:28px}.wheel-year-arm button i{width:3px;height:3px}.wheel-marker{display:none}
 #wheel-records{left:38%;right:5%;top:14%;bottom:13%}#wheel-records header{font-size:8px;align-items:flex-start;gap:5px}.wheel-close{font-size:9px;max-width:105px;text-align:right;line-height:1.6;padding:0}.wheel-editorial{padding-top:20px}.wheel-year-title{font-size:76px}.wheel-caption{font-size:9px;margin-bottom:15px;line-height:1.5}.wheel-record{padding:13px 15px 13px 0}.wheel-record small{font-size:8px;margin-bottom:5px}.wheel-record>span{font-size:18px;line-height:1.4}.wheel-record p{font-size:10px;line-height:1.55;margin-top:5px}.wheel-record>i{font-size:13px}#wheel-records footer{flex-wrap:wrap;gap:14px;padding-top:16px}.wheel-guide{font-size:9px;max-width:190px}#wheel-records footer button{width:35px;height:35px;font-size:16px}
 body.interactions-r31 .mapped-stage{top:min(0px,calc(100svh - 1100px));height:max(100svh,1100px);padding:80px 4% 40px}
 body.interactions-r31 .facility-depth{height:660px;margin-top:6px}
 body.interactions-r31 #facility-tabs button{width:130px;height:125px}
 body.interactions-r31 .facility-node-image{width:124px;height:89px;padding:4px;border-radius:7px;box-shadow:1px 2px 0 #8faab666,3px 4px 0 #d2e1e7,0 18px 22px -12px #315b7460}
 body.interactions-r31 .facility-node-image img{border-radius:4px}.facility-node-image::after{inset:4px}
 body.interactions-r31 #facility-tabs .capsule-label b{font-size:11px;max-width:130px;margin:auto}
 body.interactions-r31 .facility-node-image i{font-size:7px;top:8px;left:8px}
 body.interactions-r31 .facility-core-r30{width:190px;height:150px;opacity:calc(var(--atlas-arrival,0)*.4)}
 body.interactions-r31 .facility-orbits-r30{transform:scaleY(1.9);opacity:calc(var(--atlas-arrival,0)*.3)}
 body.interactions-r31 .facility-pagination{margin:-65px auto 0}
 body.interactions-r31 #facilities .facility-viewport{max-width:78%;margin-top:0}
}
@media(prefers-reduced-motion:reduce){.project-wheel-r31 *,.record-preview-r31{transition:none!important;animation:none!important}body.interactions-r31 #hero #hero-explore .explore-copy{mask-image:none}body.interactions-r31 #hero #hero-explore .entry-border{display:none}}
/* Catalogue: the final action belongs to the last printed page. */
#catalog-book-r31{width:min(1360px,calc(100vw - 40px));height:min(940px,calc(100svh - 40px));max-width:none;max-height:none;padding:0;border:1px solid #ffffffed;border-radius:12px;background:radial-gradient(ellipse at 48% 62%,#d8e7ee80,transparent 59%),linear-gradient(145deg,#fbfdfd,#ecf4f7);color:#294e65;box-shadow:0 30px 100px #25475b24;overflow:hidden}
#catalog-book-r31::backdrop{background:#eff7f8b8;backdrop-filter:blur(16px)}
#catalog-book-r31[open]{display:flex;flex-direction:column}
.catalog-top{display:flex;align-items:center;justify-content:space-between;padding:30px 38px 0;position:relative;z-index:2;flex:none}
.catalog-top p{font:9px/1.6 monospace;letter-spacing:.11em;color:#86a0af;margin:0 0 8px}.catalog-top h2{font-size:25px;font-weight:400;letter-spacing:-.04em;line-height:1.4;margin:0}.catalog-close{display:grid;place-items:center;width:44px;height:44px;border:1px solid #7394a333;border-radius:50%;background:#fff4;color:inherit;font-size:17px;transition:background .3s}.catalog-close:hover{background:#fff}
.catalog-stage{position:relative;flex:1;min-height:0;margin:0 24px;isolation:isolate;overflow:hidden}
.catalog-webgl{position:absolute;inset:0;z-index:0}.catalog-webgl canvas{display:block;width:100%;height:100%;outline:none}
.catalog-loading{position:absolute;inset:0;display:grid;place-items:center;font-size:13px;letter-spacing:.02em;background:#f2f8fa;z-index:3}.catalog-loading[hidden]{display:none}
.catalog-final{position:absolute;display:flex;flex-direction:column;padding:calc(var(--page-width)*.09) calc(var(--page-width)*.085);z-index:2;opacity:0;transition:opacity .55s;pointer-events:none;color:#34566b;text-align:left;box-sizing:border-box}
.catalog-final.is-ready{opacity:1;pointer-events:auto}.catalog-final>small{font:calc(var(--page-width)*.025)/1.7 monospace;letter-spacing:.1em;color:#7b94a3}
.catalog-final>div{margin:auto 0}
.catalog-final h3{font-size:calc(var(--page-width)*.097);line-height:1.4;font-weight:400;letter-spacing:-.055em;margin:0 0 calc(var(--page-width)*.06)}
.catalog-final p{font-size:calc(var(--page-width)*.035);line-height:1.85;color:#6d899b;margin:0}
.catalog-download{width:100%;display:flex;align-items:center;justify-content:space-between;border:1px solid #8fb0c149;border-radius:3px;background:#ffffffb3;color:#34566b;text-decoration:none;padding:calc(var(--page-width)*.048) calc(var(--page-width)*.045);font-size:calc(var(--page-width)*.038);font-weight:500;line-height:1.4;box-shadow:0 4px 10px -7px #587b8e40;transition:background .3s,box-shadow .3s;gap:5px}.catalog-download:hover{background:#fff;box-shadow:0 8px 16px -9px #587b8e55}.catalog-download i{font-style:normal;font-size:1.4em}.catalog-file{font:calc(var(--page-width)*.023)/1.6 monospace;letter-spacing:.08em;margin-top:calc(var(--page-width)*.045);color:#92a7b3}
.catalog-bottom{flex:none;display:flex;justify-content:space-between;align-items:center;gap:18px;padding:12px 38px 27px;font-size:10px;color:#7793a5;position:relative;z-index:2}.catalog-bottom>div{display:flex;align-items:center;gap:18px}.catalog-progress{font:10px/1.5 monospace;letter-spacing:.05em}.catalog-bottom nav{display:flex;align-items:center;gap:15px}.catalog-bottom button{border:0;background:none;color:#587a91;font-size:11px;padding:12px 0;white-space:nowrap}.catalog-bottom button:disabled{opacity:.2}.catalog-bottom .catalog-prev,.catalog-bottom .catalog-next{font-size:19px;width:35px}.catalog-bottom .catalog-skip{margin-left:15px}.catalog-ready .catalog-skip{opacity:.35;pointer-events:none}
@media(max-width:760px){
 #catalog-book-r31{width:calc(100vw - 16px);height:calc(100svh - 16px);border-radius:8px}.catalog-top{padding:24px 20px 0}.catalog-top h2{font-size:21px}.catalog-top p{font-size:7px}.catalog-close{width:36px;height:36px;font-size:14px}.catalog-stage{margin:0 2px}.catalog-bottom{align-items:flex-start;flex-direction:column;padding:12px 20px 25px;gap:4px}.catalog-bottom>div{width:100%;justify-content:space-between;gap:12px}.catalog-note{font-size:9px}.catalog-bottom nav{width:100%;justify-content:space-between;gap:8px}.catalog-bottom button{font-size:10px}.catalog-bottom .catalog-skip{margin-left:auto}.catalog-final h3{font-size:calc(var(--page-width)*.11)}.catalog-final p{font-size:calc(var(--page-width)*.047)}.catalog-download{font-size:calc(var(--page-width)*.061);padding:calc(var(--page-width)*.05) calc(var(--page-width)*.035)}.catalog-final>small{font-size:calc(var(--page-width)*.04)}.catalog-file{font-size:calc(var(--page-width)*.036)}
}
@media(prefers-reduced-motion:reduce){.catalog-final{transition:none}}

body.interactions-r31 .project-wheel-open .record-bottom{opacity:0;pointer-events:none;transition:opacity .5s}
@media(min-width:761px){body.interactions-r31 .facility-pagination{position:absolute;bottom:25px;left:6%;right:6%;width:88%;max-width:none;margin:0}}
