@font-face{font-family:Outfit;src:url(assets/outfit-latin-400-normal.woff2);font-display:swap}@font-face{font-family:Outfit;src:url(assets/outfit-latin-500-normal.woff2);font-weight:500;font-display:swap}@font-face{font-family:Outfit;src:url(assets/outfit-latin-700-normal.woff2);font-weight:700;font-display:swap}@font-face{font-family:Mono;src:url(assets/ibm-plex-mono-latin-400-normal.woff2);font-display:swap}
:root{color-scheme:dark;--ink:#e5f4f6;--soft:#a2bdc9;--cyan:#a7efed;--header:98px;--footer:69px}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{font:16px/1.55 Outfit,Arial,sans-serif;background:#030b12;color:var(--ink)}button,a,input,textarea{font:inherit}button,a{color:inherit}a{text-decoration:none}button{cursor:pointer;border:0;background:none}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid #adf5f0;outline-offset:6px}button:disabled{cursor:default}.skip{position:fixed;left:20px;top:-80px;z-index:3000;background:#123347;padding:10px}.skip:focus{top:20px}
#rain-back,#rain-front{position:fixed;inset:0;pointer-events:none}#rain-back{z-index:0}#rain-front{z-index:60}.floor{position:fixed;inset:50% 0 0;z-index:1;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,#17425748,transparent 66%)}.floor:after{content:"";position:absolute;left:10%;right:10%;bottom:5%;height:1px;background:linear-gradient(90deg,transparent,#6b9db727,transparent)}
header{position:fixed;left:0;right:0;top:0;height:var(--header);z-index:1000;padding:20px 3.5vw;display:flex;gap:22px;align-items:center;background:linear-gradient(#030b12f5,#030b12c9 65%,#030b1200)}.brand{font-size:28px;font-weight:500;letter-spacing:-.055em;white-space:nowrap}.brand span{color:#8eeee9}nav{margin-left:auto;display:flex;align-items:center;gap:21px;min-width:0}nav a{font-size:15px;font-weight:500;color:#b7cbd3;padding:10px 0;position:relative}nav a:hover,nav a[aria-current]{color:#d0f5f6}nav a[aria-current]:after{content:"";position:absolute;bottom:3px;left:0;right:0;height:1px;background:#8ce9ed}.contact-cta{display:flex;align-items:center;gap:28px;white-space:nowrap;font-size:14px;font-weight:500;padding:12px 19px;border-radius:6px;border:1px solid #b8f9ff6b;color:#071920;background:linear-gradient(110deg,#a9f4e8,#a3c7ef);box-shadow:0 4px 25px #72c2ec0a}.contact-cta span{font-size:22px;line-height:1}.languages{display:flex;align-items:center;gap:9px;font:11px Mono,monospace;color:#638797}.languages a{padding:10px 0}.languages a[aria-current]{color:#b0f2f0;border-bottom:1px solid #89d7df}#mobile-menu{display:none}
#stage{position:fixed;inset:var(--header) 0 var(--footer);z-index:2;isolation:isolate;touch-action:pan-y}.scene-heading{position:absolute;top:1%;left:5%;right:5%;text-align:center;pointer-events:none;z-index:80}.scene-heading .eyebrow{font:9px/1.5 Mono,monospace;letter-spacing:.17em;color:#6c9aa9;margin:0 0 11px}.scene-heading h1{font-size:clamp(30px,3.1vw,54px);font-weight:500;letter-spacing:-.045em;line-height:1.1;margin:0;color:#d4eeee}.scene-heading #scene-guide{font:10px/1.5 Mono,monospace;letter-spacing:.015em;margin:13px 0 0;color:#7fa6b6}
.projector{position:absolute;left:50%;top:75%;width:min(25vw,350px);transform:translate(-50%,-50%);pointer-events:none;z-index:12}.projector img{display:block;width:100%;height:auto;filter:brightness(.57) saturate(.78) contrast(.94) drop-shadow(0 18px 24px #000c)}.contact-shadow{position:absolute;left:-22%;right:-22%;bottom:-5%;height:26%;background:radial-gradient(ellipse,#000e,transparent 66%);filter:blur(14px);z-index:-1}.emitter{position:absolute;top:38%;left:50%;height:4%;width:9%;transform:translate(-50%,-50%);border-radius:50%;background:#b6ffff5c;box-shadow:0 0 28px #8deafd7a,0 -15px 40px #99edff51}.projection-beam{position:absolute;pointer-events:none;z-index:4;left:50%;width:70%;top:16%;bottom:calc(25% + min(1.5vw,21px));height:auto;transform:translateX(-50%)}.projection-beam svg{height:100%;width:100%;overflow:visible}
#orbit{position:absolute;inset:0;touch-action:pan-y;cursor:grab}#orbit.is-dragging{cursor:grabbing}body.is-transitioning #orbit{pointer-events:none}.orbit-node{position:absolute;left:0;top:0;width:280px;height:280px;padding:0;display:block;will-change:transform;transform-origin:center;isolation:isolate;user-select:none;touch-action:pan-y;outline:none}.orbit-node[hidden]{display:none}.orbit-node:focus-visible{outline:none}.orbit-node:focus-visible .object-art{filter:drop-shadow(0 0 12px #a9f0f9a3)}.object-art{display:block;position:relative;width:100%;height:100%;pointer-events:none;filter:drop-shadow(0 14px 25px #0007)}.object-art>img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.object-art canvas{position:absolute;inset:0;width:100%;height:100%;display:block}.orbit-node[data-kind=narbenkrieg],.orbit-node[data-kind=world]{width:410px;height:290px}.orbit-node[data-kind=knot]{width:335px;height:335px}.orbit-node[data-kind=contact]{width:250px;height:250px}.orbit-node[data-kind=cards],.orbit-node[data-kind=systems]{width:340px;height:265px}.orbit-node[data-kind=ideas],.orbit-node[data-kind=workshops],.orbit-node[data-kind=automation],.orbit-node[data-kind=process]{width:280px;height:280px}.node-label{position:absolute;left:50%;bottom:0;transform:translate(-50%,105%);white-space:nowrap;font-size:15px;font-weight:500;letter-spacing:-.01em;text-shadow:0 2px 9px #02080d,0 2px 2px #02080d;color:#b6d5df;pointer-events:none}.node-label:after{content:" ↗";color:#71a7ba;font-size:12px}.orbit-node[data-kind=contact] .object-art:after{content:"";position:absolute;inset:36%;pointer-events:none;border:1px solid #d3fbff7a;border-radius:5px;background:linear-gradient(33deg,transparent 49%,#c4f0f8a3 50%,transparent 52%),linear-gradient(-33deg,transparent 49%,#c4f0f8a3 50%,transparent 52%);transform:scaleY(.65)}.orbit-node.is-selected .node-label{color:#e3fcfa}.knot-art{animation:knot-turn 25s ease-in-out infinite alternate}body.motion-off .knot-art{animation-play-state:paused}@keyframes knot-turn{from{transform:rotate(-4deg) translateY(0)}to{transform:rotate(4deg) translateY(-5px)}}
.slide-stack{position:absolute;inset:17% 11% 17% 7%;perspective:900px}.slide-stack img{position:absolute;inset:0;width:90%;height:100%;object-fit:cover;border-radius:8px;border:1px solid #9bc9e577;box-shadow:0 18px 24px #0008;transition:transform 1.2s cubic-bezier(.2,.7,.2,1);backface-visibility:hidden;transform:translateX(var(--x)) translateZ(var(--z)) rotateY(-24deg)}
.spotlight{background:linear-gradient(135deg,#102634fc,#071621fc);border:1px solid #8ac8df4a;box-shadow:0 18px 60px #0008;border-radius:12px}.spotlight:before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;background:conic-gradient(from var(--angle,120deg),#92e7ed,#af9ced,#80c8ef,#9ae6da,#92e7ed);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none}.spotlight:after{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(340px circle at var(--mx,50%) var(--my,10%),#a0d4ec17,transparent 70%);pointer-events:none}#captions{position:absolute;inset:0;z-index:200;pointer-events:none}.object-caption{position:absolute;width:320px;max-width:calc(100vw - 40px);padding:22px 25px;visibility:hidden;pointer-events:none;z-index:200}.object-caption.is-visible{visibility:visible;pointer-events:auto}.caption-copy h2{font-weight:500;font-size:26px;letter-spacing:-.035em;line-height:1.1;margin:0 0 12px}.caption-copy p{font-size:14px;line-height:1.55;color:#b8d1dc;margin:0}.caption-copy .caption-action{font:10px/1.5 Mono,monospace;color:#96d8e7;display:block;margin-top:15px}
#reading{position:absolute;z-index:240;left:50%;top:48%;transform:translate(-50%,-50%);padding:30px 35px;width:min(590px,87vw);max-height:85%;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-color:#85bfcd #071721}#reading[hidden]{display:none}#reading h2{font-size:34px;font-weight:500;line-height:1.08;letter-spacing:-.04em;margin:8px 20px 18px 0}#reading h3{font-weight:500;font-size:17px;line-height:1.25;margin:20px 0 7px}#reading p{font-size:15px;color:#b4ccd8;line-height:1.65;margin:0 0 14px}#reading .reading-summary{font-size:17px;color:#d6e9ee}#reading .reading-close{position:absolute;right:13px;top:10px;color:#8eb9ca;padding:4px 9px;font-size:22px}#reading .reading-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.action{display:inline-block;background:linear-gradient(110deg,#aff2e6,#9bc7eb);color:#08202a;font-size:14px;font-weight:500;padding:11px 16px;border-radius:5px;position:relative;z-index:1}.action.secondary{background:#133143;color:#c8e7ee;border:1px solid #6c9fb84d}#reading form{display:grid;gap:13px}#reading label{display:grid;gap:6px;font-size:12px;color:#a8c8d5}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:15px}input,textarea{min-width:0;width:100%;border:1px solid #81bed047;background:#04121cc4;border-radius:5px;padding:10px 12px;color:#e3f4f6;font-size:15px;line-height:1.4}textarea{height:86px;resize:vertical}#reading .form-note{font-size:11px;color:#83a8ba;margin:0}#reading .direct-email{font-size:13px;color:#a5e3e8;text-decoration:underline;text-underline-offset:4px}#reading .form-status{color:#c9edea;font-size:12px;margin:0}#dissolve{position:absolute;inset:0;width:100%;height:100%;z-index:350;pointer-events:none}
footer{height:var(--footer);position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:30px;padding:8px 3.5vw;z-index:500;background:linear-gradient(transparent,#030b12bf)}footer>div:first-child{display:flex;align-items:center;gap:15px;font-size:10px;color:#6e9aac}footer a{color:#a6becb}#scene-status{font:10px Mono,monospace;color:#759eaf;min-width:110px;text-align:right}.orbit-controls{display:flex;align-items:center;gap:4px;border:1px solid #77b9ce37;border-radius:8px;background:#071925c7;padding:5px 9px}.orbit-controls button{min-width:38px;min-height:33px;border-radius:4px;color:#b3d9e2}.orbit-controls button:hover,.orbit-controls button[aria-pressed=true]{background:#1d4051}.fallback{position:fixed;inset:95px 0 0;z-index:2500;overflow:auto;background:#06131d;padding:30px max(25px,15vw)}.fallback section{margin:40px 0}.fallback a{color:#95e5ec;text-decoration:underline}
@media(max-width:1330px) and (min-width:901px){header{gap:17px;padding-inline:3%}.brand{font-size:25px}nav{gap:15px}nav a{font-size:13px}.contact-cta{font-size:12px;padding:10px 13px;gap:13px}.languages{gap:6px}.orbit-node[data-kind=knot]{width:300px;height:300px}}
@media(max-width:1050px) and (min-width:901px){nav{gap:12px}nav a{font-size:12px}.contact-cta{display:none}}
@media(max-width:900px){:root{--header:80px;--footer:73px}header{padding:16px 5%;gap:16px}.brand{font-size:25px}.contact-cta{display:none}#mobile-menu{display:block;margin-left:auto;font-size:14px;color:#b3d6de;min-height:40px;padding:5px}#mobile-menu span{margin-left:8px}nav{display:none;position:absolute;left:5%;right:5%;top:72px;padding:14px;background:#081b29fa;border:1px solid #8ed7e25c;border-radius:11px;box-shadow:0 18px 40px #0009}nav.is-open{display:grid;grid-template-columns:1fr 1fr;gap:2px 18px}nav a{padding:13px;font-size:16px}.languages{gap:7px}.scene-heading{top:2%;left:6%;right:6%}.scene-heading .eyebrow{font-size:8px;letter-spacing:.12em}.scene-heading h1{font-size:32px}.scene-heading #scene-guide{font-size:9px}.projector{top:77%;width:min(56vw,230px)}.projection-beam{top:23%;bottom:calc(23% + min(3.36vw,13.8px));height:auto;width:95%}.orbit-node{width:220px;height:220px}.orbit-node[data-kind=knot]{width:280px;height:280px}.orbit-node[data-kind=narbenkrieg],.orbit-node[data-kind=world]{width:290px;height:215px}.orbit-node[data-kind=contact]{width:190px;height:190px}.orbit-node[data-kind=cards],.orbit-node[data-kind=systems]{width:245px;height:195px}.orbit-node[data-kind=ideas],.orbit-node[data-kind=workshops],.orbit-node[data-kind=automation],.orbit-node[data-kind=process]{width:205px;height:205px}.node-label{font-size:13px}.object-caption{width:280px;padding:18px 21px}.caption-copy h2{font-size:25px}.caption-copy p{font-size:13px}footer{padding:8px 5%;gap:10px}footer>div:first-child{display:grid;grid-template-columns:auto auto;gap:3px 12px;font-size:9px}footer>div:first-child>span{grid-column:1/3}#scene-status{min-width:0;font-size:8px}.orbit-controls{gap:0;padding:3px}.orbit-controls button{min-width:34px}.form-row{grid-template-columns:1fr}#reading{padding:25px 25px;top:49%;max-height:89%;width:88vw}#reading h2{font-size:29px}#reading p{font-size:14px}.reading-summary{font-size:15px!important}#reading textarea{height:70px}}
@media(max-height:650px) and (min-width:901px){.scene-heading .eyebrow{display:none}.scene-heading h1{font-size:32px}.scene-heading #scene-guide{margin-top:5px}.projector{width:min(25vw,320px);top:80%}.orbit-node{max-height:230px}.object-caption{padding:15px 22px}.caption-copy h2{font-size:23px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.contact-symbol{float:right;width:75px;height:75px;margin:0 0 12px 16px;position:relative;pointer-events:none}.contact-symbol .object-art{width:100%;height:100%}.contact-symbol .object-art:after{content:"";position:absolute;inset:36%;border:1px solid #bef1f5a0;border-radius:3px;background:linear-gradient(33deg,transparent 49%,#b5ecf4 50%,transparent 52%),linear-gradient(-33deg,transparent 49%,#b5ecf4 50%,transparent 52%);transform:scaleY(.65)}

/* Scroll content inside the illuminated shell so its border never scrolls over text. */
#reading{overflow:visible;max-height:none}#reading .reading-copy{max-height:calc((100dvh - var(--header) - var(--footer)) * .85 - 60px);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-color:#7aaabd #0a1b27;padding-right:12px;scrollbar-width:thin}.reading-close{z-index:3}#reading .contact-symbol{float:right}#reading:has(form) h2{font-size:31px}#reading:has(form) .reading-summary{font-size:15px;line-height:1.55}@media(max-width:900px){#reading .reading-copy{max-height:calc((100dvh - var(--header) - var(--footer)) * .89 - 50px)}#reading:has(form) h2{font-size:27px}.contact-symbol{width:60px;height:60px;margin-left:10px}}

/* Transparent rectangular model canvases never steal a neighbouring object hit. */
.orbit-node{pointer-events:none}.hit-target{position:absolute;inset:9%;border-radius:50%;pointer-events:auto}.tower-hit{display:none}.orbit-node:is([data-kind=narbenkrieg],[data-kind=world]) .hit-target{inset:34% 9% 8%;border-radius:50%}.orbit-node:is([data-kind=narbenkrieg],[data-kind=world]) .tower-hit{display:block;position:absolute;left:43%;top:9%;width:14%;height:45%;pointer-events:auto}.orbit-node:is([data-kind=cards],[data-kind=systems]) .hit-target{inset:17% 5% 16% 7%;border-radius:8px}

.orbit-controls button:disabled{opacity:.3;cursor:default;background:none}

/* Refinement: projections carry the hierarchy; the sharp physical base sits deeper in shade. */
.projector .emitter{opacity:.7}.node-label{top:100%;bottom:auto;transform:scale(var(--label-inverse,1)) translate(-50%,10px);transform-origin:0 0;font-size:14px;line-height:1.2;text-align:center;width:max-content;max-width:285px;white-space:normal}.orbit-node[data-kind=contact] .object-art:after,.contact-symbol .object-art:after{display:none}.contact-symbol{width:90px;height:90px}@media(max-width:900px){.node-label{font-size:12px;max-width:180px;transform:scale(var(--label-inverse,1)) translate(-50%,8px)}.contact-symbol{width:72px;height:72px}}

/* Each sculptural object's picking plane follows its own geometry, independent of old content kinds. */
.orbit-node[data-motif]{width:300px;height:300px}.orbit-node[data-motif][data-hit=wide]{width:335px;height:270px}.orbit-node[data-motif][data-hit=tall]{width:255px;height:325px}.orbit-node[data-motif] .tower-hit{display:none}.orbit-node[data-motif] .hit-target{inset:9%;border-radius:50%}.orbit-node[data-motif][data-hit=wide] .hit-target{inset:19% 8%;border-radius:48%}.orbit-node[data-motif][data-hit=tall] .hit-target{inset:7% 20%;border-radius:45%}.orbit-node[data-kind=contact]{width:260px;height:260px}@media(max-width:900px){.orbit-node[data-motif]{width:220px;height:220px}.orbit-node[data-motif][data-hit=wide]{width:250px;height:205px}.orbit-node[data-motif][data-hit=tall]{width:200px;height:245px}.orbit-node[data-kind=contact]{width:200px;height:200px}.orbit-node[data-kind=knot]{width:245px;height:245px}}

/* V13: source-backed light only; permanent physical projector removed. */
#background-field{position:fixed;inset:0;z-index:0;pointer-events:none;background:#030b12}body:not([data-background="data-rain"]) #rain-back,body:not([data-background="data-rain"]) #rain-front{visibility:hidden}.art-parking{position:fixed;left:-10000px;top:-10000px;width:350px;height:300px;opacity:0;pointer-events:none;contain:strict}.art-parking .object-art{width:300px;height:280px}.projector{display:none}.floor{opacity:.4}
.brand{font-size:21px;line-height:1.05;letter-spacing:-.035em;font-weight:500}.brand span{display:block;font-size:17px;letter-spacing:.005em;color:#8baeba;margin-top:4px}header{gap:23px}nav{gap:24px}nav a{font-size:16px}.contact-cta{font-size:13px}.languages{margin-left:0}
.background-menu{position:relative;flex:none}.background-menu summary{cursor:pointer;font-size:12px;list-style:none;color:#adc7d1;border:1px solid #82adbf42;border-radius:6px;padding:10px 12px;white-space:nowrap}.background-menu summary::-webkit-details-marker{display:none}.background-menu summary span{margin-left:9px}.background-menu[open] summary{border-color:#a1e7e5;color:#e0f7f5}.background-panel{position:absolute;right:0;top:48px;width:285px;padding:21px;z-index:1200}.background-panel label{display:block;font-size:13px;color:#b0c9d3;margin:0 0 10px}.background-panel select{color:#d7ecef;width:100%;background:#0d2533;border:1px solid #70acc173;padding:10px;border-radius:6px;font-size:14px}.background-panel select option{background:#0d2533;color:#d7ecef}
.projection-beam.particle-hero-beam{inset:22% 10% 19%;width:auto;height:auto;transform:none;left:10%;opacity:.84;overflow:visible}.beam-motion{position:absolute;inset:0;transform-origin:50% 100%;border-radius:50% 50% 0 0;background:conic-gradient(from 180deg at 50% 105%,transparent 45%,rgba(124,145,182,.3) 49%,rgba(124,145,182,.5) 50%,rgba(124,145,182,.3) 51%,transparent 55%);filter:blur(15px) opacity(.5);animation:source-project-light 17s ease-in-out infinite}.beam-motion--two{animation-duration:14s;animation-delay:-5s}.beam-motion--three{animation-duration:21s;animation-direction:reverse;animation-delay:-9s}.beam-pool{position:absolute;width:140px;height:8px;bottom:-1px;left:50%;transform:translateX(-50%);border-radius:50%;background:#9fd8ed47;filter:blur(9px);box-shadow:0 0 25px 5px #9bd0e828}.motion-off .beam-motion{animation-play-state:paused}@keyframes source-project-light{0%,100%{transform:rotateZ(0) scale(1);filter:blur(15px) opacity(.5)}20%{transform:rotateZ(-1deg) scale(1.12);filter:blur(16px) opacity(.6)}40%{transform:rotateZ(2deg) scale(1.18);filter:blur(14px) opacity(.4)}60%{transform:rotateZ(-2deg) scale(1.12);filter:blur(15px) opacity(.6)}80%{transform:rotateZ(1deg) scale(1.07);filter:blur(13px) opacity(.4)}}
.node-label.spotlight{font-size:20px;font-weight:500;line-height:1.1;padding:9px 18px;border-radius:8px;color:#d6edf0;white-space:nowrap;max-width:300px;box-shadow:0 8px 25px #0006;text-shadow:none}.node-label.spotlight:after{content:""}.node-label.spotlight:before{opacity:.65}.object-caption{width:380px;padding:24px 28px}.caption-copy h2{font-size:30px;line-height:1.12;margin-bottom:13px}.caption-copy p{font-size:16px;line-height:1.55}.caption-copy .caption-action{font-size:11px}.orbit-node[data-motif=automation]{width:400px;height:300px}.orbit-node[data-motif=brain]{width:245px;height:300px}.orbit-node[data-motif=infinity]{width:350px;height:280px}.orbit-node[data-motif=contact]{width:245px;height:245px}
body[data-scene=main] #scene-title{--spread:80px;color:transparent;background-image:linear-gradient(90deg,#0000 calc(50% - var(--spread)),#fff,#0000 calc(50% + var(--spread))),linear-gradient(#9db8c5,#9db8c5);background-size:250% 100%,auto;background-clip:text;-webkit-background-clip:text;background-repeat:no-repeat,padding-box;animation:source-title-shimmer 7s linear infinite;font-size:clamp(34px,4vw,65px);font-weight:500;letter-spacing:-.045em}.motion-off #scene-title{animation-play-state:paused}@keyframes source-title-shimmer{from{background-position:100% center}to{background-position:0% center}}
@media(max-width:1330px) and (min-width:901px){header{gap:18px}.brand{font-size:20px}.brand span{font-size:16px}nav{gap:18px}nav a{font-size:15px}.background-menu summary{font-size:11px;padding:9px}.contact-cta{gap:10px;font-size:12px;padding:10px}}
@media(max-width:1050px) and (min-width:901px){nav{gap:15px}nav a{font-size:14px}.background-menu summary{font-size:11px}}
@media(max-width:900px){:root{--header:112px}header{align-items:flex-start;padding-top:17px}.brand{font-size:19px;line-height:1.05}.brand span{font-size:15px}.languages{margin-left:auto}#mobile-menu{position:absolute;left:5%;top:64px;margin:0;padding:0;min-height:32px}.background-menu{position:absolute;right:5%;top:64px}.background-menu summary{font-size:11px;padding:6px 10px}.background-panel{top:39px;width:270px}.scene-heading h1{font-size:29px}nav{top:108px}.projection-beam.particle-hero-beam{inset:20% 0 18%;left:0}.node-label.spotlight{font-size:15px;padding:8px 12px;max-width:195px}.object-caption{width:305px;padding:20px 23px}.caption-copy h2{font-size:26px}.caption-copy p{font-size:14px}.orbit-node[data-motif=automation]{width:275px;height:210px}.orbit-node[data-motif=brain]{width:195px;height:245px}.orbit-node[data-motif=infinity]{width:255px;height:205px}.orbit-node[data-motif=contact]{width:185px;height:185px}.beam-pool{width:100px}body[data-scene=main] #scene-title{font-size:36px}}
@media(prefers-reduced-motion:reduce){.beam-motion,#scene-title{animation:none!important}}

.scene-heading:before{content:"";position:absolute;inset:-15px -5%;background:radial-gradient(ellipse,#030b128a,transparent 72%);z-index:-1;pointer-events:none}.scene-heading h1{text-shadow:0 2px 18px #030b1277}body[data-scene=main] #scene-title{background-image:linear-gradient(90deg,#0000 calc(50% - var(--spread)),#fff,#0000 calc(50% + var(--spread))),linear-gradient(#c4d9e1,#c4d9e1)}

body.is-preparing #orbit,body.is-preparing .scene-heading,body.is-preparing #reading{clip-path:inset(50%)}

/* V14: one source-pixel surface for the complete hover plate. */
#hover-dissolve{position:absolute;inset:0;width:100%;height:100%;z-index:210;pointer-events:none}
.object-caption.is-vapour-clipped{clip-path:inset(50%)}
.object-caption.is-vanishing{pointer-events:none!important}
.caption-copy .caption-action{padding:5px 0;text-align:left;cursor:pointer;font-size:12px;color:#b5edf0;letter-spacing:.025em}
.caption-copy .caption-action:hover{color:#fff}
#scene-subtitle{font-size:clamp(13px,1.2vw,18px);font-weight:400;line-height:1.5;color:#aac5ce;letter-spacing:.005em;max-width:1100px;margin:14px auto 0}
#scene-subtitle[hidden]{display:none}
#reading-backdrop{position:absolute;inset:0;z-index:400;background:#020a125e;backdrop-filter:blur(10px) brightness(.6);-webkit-backdrop-filter:blur(10px) brightness(.6)}
#reading-backdrop[hidden]{display:none}
#captions:has(.is-expanded){z-index:500}
.object-caption.is-expanded{left:50%!important;top:50%!important;transform:translate(-50%,-50%);width:min(960px,calc(100vw - 70px));max-width:none;max-height:calc(100dvh - var(--header) - var(--footer) - 24px);padding:40px 48px;z-index:500;overflow:hidden;border-radius:16px;box-shadow:0 30px 110px #000c}
.object-caption.is-expanded .caption-copy{max-height:calc(100dvh - var(--header) - var(--footer) - 106px);overflow:auto;overscroll-behavior:contain;scrollbar-color:#9ac6d4 #071723;scrollbar-width:thin;padding-right:16px}
.object-caption.is-expanded .caption-copy>h2{font-size:clamp(28px,3vw,42px);padding-right:30px}
.object-caption.is-expanded .caption-copy>p{font-size:18px;color:#d3e8ed;max-width:760px;margin-bottom:25px}
.caption-detail p{font-size:16px;line-height:1.65;margin:0 0 18px;color:#b8d0db}
.caption-detail h3{font-size:19px;font-weight:500;line-height:1.3;margin:25px 0 9px;color:#d7edef}
.caption-detail .action{margin:10px 0 5px}
.caption-close{position:absolute;right:17px;top:12px;padding:4px 11px;font-size:28px;line-height:1.4;color:#badbe2;z-index:4}
body.has-expanded .orbit-controls{visibility:hidden}
@media(max-width:900px){#scene-subtitle{font-size:12px;max-width:340px;margin-top:11px}.object-caption.is-expanded{width:calc(100vw - 30px);padding:27px 23px;max-height:calc(100dvh - var(--header) - var(--footer) - 12px)}.object-caption.is-expanded .caption-copy{max-height:calc(100dvh - var(--header) - var(--footer) - 72px);padding-right:9px}.object-caption.is-expanded .caption-copy>p{font-size:15px;margin-bottom:20px}.caption-detail p{font-size:14px;line-height:1.6}.caption-detail h3{font-size:17px}}

.caption-action[hidden]{display:none!important}

.caption-copy .caption-action{min-height:36px}@media(max-width:900px){.caption-copy .caption-action{min-height:44px}}

@media(max-width:900px){.object-caption.is-expanded .caption-copy{width:calc(100% - 16px)}.caption-close{right:4px}}

/* A preview is one click target and keeps a stable reading anchor. */
.object-caption:not(.is-expanded){cursor:pointer;contain:layout style}
.object-caption.is-expanded{cursor:auto}

/* V16: a light sequential entrance; descriptions live in the actual sections. */
body.is-booting .scene-heading,.startup-pending{clip-path:inset(50%)}
.orbit-node.startup-pending{pointer-events:none!important}
#startup-dissolve{position:absolute;inset:0;width:100%;height:100%;z-index:350;pointer-events:none}
#scene-intro{font-size:15px;line-height:1.45;color:#a8c3ce;max-width:880px;margin:12px auto 0}
#reading-backdrop{z-index:220}
body.has-reading #reading{z-index:240;width:min(900px,calc(100vw - 48px))}
body.has-reading #reading .reading-copy{max-height:calc(100dvh - var(--header) - var(--footer) - 100px)}
body[data-scene=kontakt] #reading{top:var(--contact-top,120px);transform:translateX(-50%)}
body[data-scene=kontakt] #reading .reading-copy{max-height:calc(var(--contact-room,400px) - 62px)}
.form-honeypot{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);left:-10000px}
.form-status{min-height:1.5em;font-size:14px;line-height:1.5;color:#b6d8dd;margin:12px 0 6px}
/* Shared holographic artwork finish; semantic text and controls stay opaque. */
.object-art{opacity:.7;filter:drop-shadow(0 0 7px rgba(93,239,244,.384)) drop-shadow(0 0 14px rgba(65,204,218,.156))}
#contact-form button:disabled{opacity:.5;cursor:default;box-shadow:none}
@media(max-width:900px){#scene-intro{font-size:12px;max-width:340px;margin-top:10px}body.has-reading #reading{width:calc(100vw - 30px)}body.has-reading #reading .reading-copy{max-height:calc(100dvh - var(--header) - var(--footer) - 80px)}}
@media(max-width:900px){body[data-scene=kontakt] #reading .reading-copy{max-height:calc(var(--contact-room,400px) - 52px)}}
/* Everything Connected: a real form and an independently moving geodesic shell
   share the selected glass surface. The form retains its native submit client. */
body[data-scene=kontakt] #reading{width:min(1040px,calc(100vw - 64px));padding:32px 36px;background:linear-gradient(120deg,#123145e8,#061824ed 68%);border:1px solid #76b9d27d;border-radius:16px;box-shadow:0 24px 80px #0007,inset 0 1px 0 #b5eaff18,0 0 58px #1269af15;backdrop-filter:blur(15px);-webkit-backdrop-filter:blur(15px)}
.contact-composition{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:36px;align-items:center}.contact-composition>.reading-copy{min-width:0;padding-right:12px}.contact-composition>.contact-symbol{float:none!important;position:relative;align-self:stretch;width:100%;height:auto;min-height:320px;margin:0;overflow:visible;isolation:isolate}.contact-composition>.contact-symbol:before{content:'';position:absolute;inset:14% 2%;border-radius:50%;background:radial-gradient(ellipse,#2876b622,transparent 66%);filter:blur(18px);z-index:-1}.contact-composition>.contact-symbol .object-art{position:absolute;inset:0;display:block;width:100%;height:100%}.contact-composition .object-art canvas{max-width:100%;max-height:100%}body[data-scene=kontakt] #reading .reading-summary{font-size:16px;line-height:1.55;margin-bottom:16px}body[data-scene=kontakt] #reading input,body[data-scene=kontakt] #reading textarea{background:#061725a8;border-color:#75b7d262;box-shadow:inset 0 1px 10px #0002}body[data-scene=kontakt] #reading input:focus,body[data-scene=kontakt] #reading textarea:focus{outline:2px solid #81c8ef;outline-offset:2px}body[data-scene=kontakt] #reading .form-row{grid-template-columns:1fr 1fr;gap:12px}body[data-scene=kontakt] #reading form>.action{justify-self:start;padding:12px 19px;box-shadow:0 0 20px #4fbcf321}body[data-scene=kontakt] #reading textarea{height:90px}
@media(max-width:900px){body[data-scene=kontakt] #reading{width:calc(100vw - 30px);padding:22px}.contact-composition{gap:12px;grid-template-columns:minmax(0,1fr) minmax(170px,.8fr)}.contact-composition>.contact-symbol{min-height:260px}body[data-scene=kontakt] #reading .form-row{grid-template-columns:1fr}}
@media(max-width:620px){body[data-scene=kontakt] #reading{padding:19px 20px}.contact-composition{grid-template-columns:minmax(0,1fr);gap:2px}.contact-composition>.contact-symbol{grid-row:1;min-height:150px;height:150px;max-height:20dvh}.contact-composition>.reading-copy{max-height:calc(var(--contact-room,500px) - 200px)!important;padding-right:9px}body[data-scene=kontakt] #reading .reading-summary{font-size:14px;margin-bottom:14px}body[data-scene=kontakt] #reading textarea{height:82px}}

/* Names belong to the hovered/focused artwork, rather than the whole orbit.
   Visibility also excludes idle names from the existing vapour capture. */
.orbit-node .node-label{visibility:hidden;opacity:0;pointer-events:none}
/* Shape captions never paint the obsolete plain-text fallback or its box,
   even before the lazy renderer is ready. Canvas visibility stays independent. */
.node-label.shape-label-only{color:transparent!important;-webkit-text-fill-color:transparent!important;text-shadow:none!important;background:none!important;background-clip:border-box!important;-webkit-background-clip:border-box!important;border-color:transparent!important;border-image:none!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;filter:none!important;animation:none!important}
.node-label.shape-label-only::before,.node-label.shape-label-only::after{display:none!important}
.node-label.shape-label-only>.catalog-tilt-surface::before,.node-label.shape-label-only>.catalog-tilt-surface::after{display:none!important}
.node-label.is-particle-caption{top:0;bottom:auto;width:var(--particle-caption-width,270px);max-width:none;height:var(--particle-caption-height,86px);min-width:0;min-height:0;padding:0 12px;display:flex;align-items:center;justify-content:center;transform:scale(var(--label-inverse,1)) translate(calc(-50% + var(--particle-caption-x,0px)),calc(-100% - var(--particle-caption-gap,12px)));transform-origin:0 0;white-space:normal;background:transparent;box-shadow:none;perspective:700px;perspective-origin:50% 50%}
.node-label.is-particle-caption:before,.node-label.is-particle-caption:after{display:none!important}
.particle-label-art{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;display:block;transform:var(--particle-label-motion,none);transform-origin:50% 50%;backface-visibility:hidden;will-change:transform}
.particle-label-art canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
@media(prefers-reduced-motion:reduce){.particle-label-art{transform:none!important;will-change:auto}}
.node-label.has-particle-label{color:transparent!important;text-shadow:none!important;border-color:transparent!important;background:transparent!important;box-shadow:none!important;min-width:0;min-height:0}
.node-label.has-particle-label:before,.node-label.has-particle-label:after{display:none!important}
.orbit-node:focus-visible .node-label{visibility:visible;opacity:1;pointer-events:auto}
/* Keep the short journey from the picking shape to its name clickable. The
   bridge exists only while this object is hovered and never changes its pose. */
.orbit-node::after{content:"";position:absolute;left:14%;right:14%;top:68%;height:calc(32% + 16px * var(--label-inverse,1));pointer-events:none}
/* The writing caption owns only the short upper gap and the route to the
   existing upper picking area. It never makes the whole orbit clickable. */
.orbit-node.has-particle-caption::after{left:50%;right:auto;top:calc(-14px * var(--label-inverse,1));width:min(100%,calc(var(--particle-caption-width,270px) * var(--label-inverse,1)));height:calc(18% + 14px * var(--label-inverse,1));transform:translateX(-50%)}
@media(hover:hover) and (pointer:fine){
 .orbit-node:hover .node-label{visibility:visible;opacity:1;pointer-events:auto}
 .orbit-node:hover::after{pointer-events:auto}
}
@media(hover:none){.orbit-node:active .node-label{visibility:visible;opacity:1;pointer-events:auto}}

/* The courier needs room above the planet. Size the measured gallery node so
   placement and picking include the larger artwork as well. */
.orbit-node[data-artwork="catalog:21st-08f28f01256b5c95"]{width:350px;height:350px;max-height:none}
@media(max-width:900px){.orbit-node[data-artwork="catalog:21st-08f28f01256b5c95"]{width:280px;height:280px}}
/* Added draft pages remain reachable without pushing header controls off-screen. */
@media(min-width:901px){nav.has-many-pages{flex:1;overflow-x:auto;scrollbar-width:thin;max-height:64px}nav.has-many-pages a{flex-shrink:0;max-width:210px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
@media(max-width:900px){nav.is-open{max-height:calc(100dvh - 150px);overflow-y:auto}nav a{overflow-wrap:anywhere}}
