@font-face{font-family:'Noto Serif Display Variable';src:url('brand/noto-serif-display.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'Noto Serif Variable';src:url('brand/noto-serif.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'Noto Sans Display Variable';src:url('brand/noto-sans-display.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
@font-face{font-family:'Noto Sans Mono Variable';src:url('brand/noto-sans-mono.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap}
:root{--bg:#000;--ink:#fff;--soft:#c9c9c9;--muted:#8d8d8d;--line:#262626;--panel:#0b0b0b;--serif:'Noto Serif Display Variable',Georgia,serif;--serif-text:'Noto Serif Variable',Georgia,serif;--sans:'Noto Sans Display Variable',system-ui,sans-serif;--mono:'Noto Sans Mono Variable',monospace;--gutter:clamp(16px,5vw,96px);--ease:cubic-bezier(.22,1,.36,1)}
*{box-sizing:border-box}html{background:var(--bg);color-scheme:dark;scroll-behavior:smooth;scroll-padding-top:94px}body{margin:0;color:var(--ink);background:var(--bg);font:400 17px/1.6 var(--sans)}[hidden]{display:none!important}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid white;outline-offset:5px}img,canvas{display:block;max-width:100%}.skip{position:absolute;left:-999px;z-index:100;background:white;color:black;padding:12px}.skip:focus{left:16px;top:16px}.site-header{height:74px;padding:14px var(--gutter);display:flex;align-items:center;gap:38px;position:sticky;top:0;z-index:20;background:#000e;border-bottom:1px solid var(--line);backdrop-filter:blur(16px)}.brand{flex:none}.brand img{height:40px;width:auto}.site-header nav{display:flex;gap:28px;margin-left:auto;font-size:15px;color:var(--soft)}.site-header nav a{position:relative}.site-header nav a:after{position:absolute;content:'';height:1px;background:white;left:0;right:0;bottom:-6px;transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}.site-header nav a:hover:after{transform:scaleX(1)}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid #444;background:transparent;color:white;font:500 15px/1.3 var(--sans);padding:14px 22px;border-radius:999px;white-space:nowrap;transition:background .25s var(--ease),color .25s var(--ease),border-color .25s}.btn:hover{border-color:white;background:#171717}.btn.solid{color:black;background:white;border-color:white}.btn.solid:hover{background:#d8d8d8}.menu{display:none;border:1px solid #444;background:none;border-radius:50%;width:44px;height:44px;padding:12px;color:white;flex:none}.menu span{display:block;height:1px;background:white;margin:5px 0}.eyebrow{font:500 12px/1.4 var(--mono);letter-spacing:.14em;color:var(--muted);margin:0 0 22px}.hero{padding:64px var(--gutter) 52px;display:grid;grid-template-columns:1.25fr 1fr;gap:60px;align-items:end;background:radial-gradient(ellipse at 30% 0%,#121212,transparent 65%)}h1{font:400 clamp(40px,4.8vw,76px)/1.05 var(--serif);letter-spacing:-.025em;margin:0}.hero-copy{padding-bottom:4px}.hero-copy p{font-size:20px;line-height:1.5;margin:0 0 18px;color:var(--soft)}.hero-copy span{color:var(--muted);font-size:15px;line-height:1.6}.examples{padding:0 var(--gutter)}.example-nav{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:0}.example-nav button{position:relative;background:transparent;border:0;color:var(--muted);font-size:15px;padding:24px 25px;text-align:left;flex:1;white-space:nowrap}.example-nav button:first-child{padding-left:0}.example-nav span{font:12px var(--mono);margin-right:12px}.example-nav button[aria-pressed=true]{color:white}.example-nav button:after{content:'';height:2px;background:white;bottom:-1px;left:0;right:0;position:absolute;transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease)}.example-nav button[aria-pressed=true]:after{transform:scaleX(1)}.example-nav button:hover{color:white}.workbench{display:grid;grid-template-columns:minmax(0,1fr) 330px;border-bottom:1px solid var(--line)}#stage{position:relative;height:760px;min-width:0;overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#171717 0%,#080808 60%,#020202 100%)}#viewport{position:absolute;inset:56px 0 150px}#viewport canvas{width:100%;height:100%;touch-action:none}#branch-image{width:100%;height:100%;object-fit:contain;padding:70px 30px 175px;background:#050505}.stage-heading{position:absolute;top:24px;left:28px;right:28px;display:flex;justify-content:space-between;z-index:2;pointer-events:none}.stage-heading .eyebrow{margin:0}.stage-heading>span:last-child{font:12px var(--mono);color:var(--muted)}.stage-caption{position:absolute;bottom:79px;left:28px;right:28px;display:flex;align-items:end;justify-content:space-between;gap:18px;pointer-events:none}.stage-caption h2{font:400 28px/1.2 var(--serif-text);margin:0 0 7px}.stage-caption p{font-size:14px;color:var(--muted);margin:0}.stage-caption>span{font-size:12px;color:var(--muted);text-align:right;max-width:160px}.stage-tools{position:absolute;bottom:24px;left:28px;right:28px;display:flex;gap:8px;flex-wrap:wrap}.stage-tools button{border:1px solid #383838;color:var(--soft);border-radius:999px;background:#0b0b0b;padding:9px 14px;font-size:13px}.stage-tools button:hover{color:white;border-color:white}#loading{position:absolute;inset:40% 15% auto;text-align:center;background:#080808e8;border:1px solid var(--line);border-radius:14px;padding:24px;color:var(--soft);font-size:15px}aside{padding:28px 26px 20px;border-left:1px solid var(--line);background:var(--panel);max-height:760px;overflow:auto;scrollbar-width:thin;scrollbar-color:#444 transparent}.panel-heading .eyebrow{margin-bottom:12px}.panel-heading h2{font:400 27px/1.2 var(--serif-text);margin:0 0 12px}.panel-heading>p:last-child{font-size:14px;color:var(--soft);line-height:1.6;margin:0 0 25px}.control-section{padding:20px 0;border-top:1px solid var(--line)}h3,summary{font:400 19px/1.3 var(--serif-text);margin:0 0 16px}summary{cursor:pointer;list-style:none;margin:0}summary::-webkit-details-marker{display:none}summary span,.control-section h3 span{float:right;font:12px var(--mono);color:var(--muted);line-height:24px}details[open] summary{margin-bottom:20px}label{display:block;color:var(--soft);font-size:13px;line-height:1.5;margin:15px 0 8px}label output{float:right;color:white;font:12px/1.7 var(--mono)}select{width:100%;background:#111;color:white;border:1px solid #383838;border-radius:8px;padding:10px;font-size:14px}input[type=range]{display:block;width:100%;height:18px;margin:0;accent-color:white}input:disabled,select:disabled{opacity:.42;cursor:not-allowed}label.unavailable{color:var(--muted)}button:disabled{opacity:.45;cursor:not-allowed}.note{font-size:12px;line-height:1.6;color:var(--muted);margin:12px 0 0}.two{display:grid;grid-template-columns:1fr 1fr;gap:18px}.text-button{background:none;border:0;padding:0;color:var(--soft);font-size:13px;text-align:left}.text-button:hover{color:white;text-decoration:underline;text-underline-offset:4px}#reset-shape{margin-top:18px}.check{display:flex;gap:10px;align-items:center}.check input{accent-color:white}.panel-foot{display:flex;gap:10px;align-items:baseline;padding-top:18px;border-top:1px solid var(--line)}.panel-foot p{font-size:12px;color:var(--muted);margin:0}.dot{width:5px;height:5px;background:white;border-radius:50%;flex:none}.study-fact{border-top:1px solid var(--line);padding-top:20px;margin-top:26px}.study-fact span{font:12px var(--mono);color:var(--muted)}.study-fact p{font:18px var(--serif-text);margin:10px 0}#branch-copy .btn{margin:30px 0}.study-caption{display:flex;justify-content:space-between;gap:24px;color:var(--muted);font-size:12px;margin:18px 0}.study-caption span:first-child{font:12px/1.6 var(--mono);letter-spacing:.08em}.data-section{padding:100px var(--gutter) 90px}.section-heading{display:grid;grid-template-columns:1.25fr 1fr;gap:80px;align-items:end}.section-heading h2{font:400 clamp(40px,4.5vw,64px)/1.08 var(--serif);letter-spacing:-.02em;margin:0}.section-heading>p{color:var(--soft);font-size:18px;max-width:47ch;margin:0}.data-controls{display:flex;align-items:end;gap:16px;flex-wrap:wrap;margin:38px 0 12px}.data-controls>div{width:190px}.data-controls label{font:12px var(--mono);color:var(--muted);margin:0 0 10px}.data-controls select{height:49px}.data-controls .btn{min-height:49px}.data-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:22px;margin-top:30px}.data-grid figure{margin:0;min-width:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel)}.preview-image{aspect-ratio:1.25;position:relative;background:radial-gradient(ellipse at center,#151515,#070707);display:grid;place-items:center}.preview-image img{height:100%;width:100%;object-fit:contain;position:absolute;inset:0}.placeholder{font:12px var(--mono);letter-spacing:.1em;color:var(--muted)}figcaption{border-top:1px solid var(--line);padding:22px}figcaption h3{font-size:21px;margin:0 0 10px}figcaption p{font-size:14px;color:var(--muted);margin:0}.observation>div{aspect-ratio:1.25;padding:28px;display:flex;flex-direction:column;justify-content:center}.observation .eyebrow{margin:0 0 14px}dl{margin:0}dl div{display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding:11px 0;font-size:13px}dt{color:var(--muted)}dd{margin:0;text-align:right}.data-footnote{font-size:13px;color:var(--muted);margin:24px 0 0}progress{display:block;width:100%;height:4px;accent-color:white;margin-top:20px}.site-footer{padding:64px var(--gutter) 24px;border-top:1px solid var(--line)}.foot-top{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:40px}.foot-brand img{height:52px;width:auto}.foot-brand p{font:20px/1.5 var(--serif-text);color:var(--muted);max-width:23ch}.site-footer h4{font:12px var(--mono);letter-spacing:.14em;color:var(--muted);margin:0 0 18px;text-transform:uppercase}.site-footer nav{display:flex;flex-direction:column;gap:11px;font-size:14px;color:var(--soft)}.site-footer a:hover{color:white}.site-footer .text-button{font-size:14px}.foot-bottom{margin-top:60px;padding-top:22px;border-top:1px solid var(--line);display:flex;justify-content:space-between;font-size:12px;color:var(--muted)}dialog{background:#0b0b0b;color:white;border:1px solid #383838;border-radius:20px;padding:28px;max-width:92vw;max-height:90dvh;width:900px}dialog::backdrop{background:#000d;backdrop-filter:blur(7px)}dialog h2{font:400 27px/1.2 var(--serif-text);margin:0 45px 20px 0}dialog p{color:var(--soft);font-size:14px}dialog a{text-decoration:underline}dialog img{width:100%;max-height:65dvh;object-fit:contain}dialog .close{position:absolute;right:18px;top:14px;border:1px solid #444;background:#111;color:white;font-size:24px;border-radius:50%;width:40px;height:40px}#credits-dialog{max-width:600px}.no-script{padding:30px var(--gutter);color:var(--soft)}
@media(min-width:1700px){#stage,aside{height:830px;max-height:830px}.workbench{grid-template-columns:minmax(0,1fr) 360px}}
@media(max-width:1100px){.site-header{gap:24px}.site-header nav{gap:20px}.example-nav button{padding:22px 14px}.example-nav span{display:none}.workbench{grid-template-columns:minmax(0,1fr) 300px}.stage-caption{display:block}#orbit-hint{display:block;text-align:left;margin-top:8px;max-width:none}.stage-caption{bottom:115px}.stage-tools{bottom:25px}#viewport{bottom:195px}.hero{gap:40px}.hero-copy p{font-size:18px}.data-grid{gap:14px}.observation>div{padding:20px}.section-heading{gap:40px}}
@media(max-width:860px){.site-header{gap:16px}.header-cta{margin-left:auto;font-size:13px;padding:12px 16px}.menu{display:block}.site-header nav{visibility:hidden;position:fixed;inset:74px 0 auto;background:#000;border-bottom:1px solid var(--line);padding:32px var(--gutter);margin:0;display:flex;flex-direction:column;gap:22px;z-index:30;font:36px/1.2 var(--serif-text)}.site-header nav.open{visibility:visible}.hero{grid-template-columns:1fr;gap:28px;padding-top:46px;padding-bottom:40px}.hero-copy p{font-size:18px;margin-bottom:12px}.hero-copy span{font-size:14px}.desktop-break{display:none}.example-nav{overflow:auto;scrollbar-width:thin;gap:24px}.example-nav button{flex:none;padding:20px 0;font-size:14px}.workbench{grid-template-columns:1fr}#stage{height:650px}#viewport{bottom:150px}.stage-caption{bottom:84px;display:flex}#orbit-hint{max-width:130px;text-align:right;margin:0}aside{max-height:none;border-left:0;border-top:1px solid var(--line);padding:28px}.panel-heading>p:last-child{max-width:50ch}.panel-heading h2{font-size:28px}#interactive-controls{display:grid;grid-template-columns:1fr 1fr;gap:0 32px}.control-section:first-child{grid-column:1}.control-section:nth-child(2){grid-column:2;grid-row:1/3}.control-section:nth-child(3){grid-column:1}.panel-foot{margin-top:20px}.study-caption{flex-direction:column;gap:8px}.data-section{padding-top:70px}.section-heading{grid-template-columns:1fr;gap:26px}.data-grid{grid-template-columns:1fr 1fr}.observation{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr}.observation>div{aspect-ratio:auto;min-height:260px}.observation figcaption{border-top:0;border-left:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.foot-top{grid-template-columns:1fr 1fr 1fr}.foot-brand{grid-column:1/-1}.foot-brand p{max-width:none}.data-controls>div{width:calc(50% - 8px)}}
@media(max-width:480px){.site-header{height:74px;gap:12px}.brand img{height:40px;width:auto}.header-cta{display:none}.menu{margin-left:auto}.hero{padding-top:36px}.hero .eyebrow{margin-bottom:18px}h1{font-size:43px}.hero-copy p{font-size:17px}.hero-copy span{font-size:14px}.example-nav{gap:24px}#stage{height:570px}.stage-heading{left:16px;right:16px;top:20px}.stage-heading .eyebrow{font-size:12px;letter-spacing:.08em}.stage-caption{left:16px;right:16px;bottom:118px;display:block}.stage-caption h2{font-size:26px}.stage-caption p{font-size:13px}#orbit-hint{margin-top:8px;text-align:left;max-width:none;font-size:12px}.stage-tools{left:16px;right:16px;bottom:22px;gap:8px}.stage-tools button{font-size:12px;padding:9px 12px}#viewport{top:50px;bottom:195px}#branch-image{padding:50px 0 190px}aside{padding:26px 20px}#interactive-controls{display:block}.panel-heading .eyebrow{font-size:12px}.data-grid{grid-template-columns:1fr;gap:20px}.observation{display:block;grid-column:auto}.observation>div{min-height:260px}.observation figcaption{border-left:0;border-top:1px solid var(--line)}.data-controls .btn{width:100%;white-space:normal}.data-section{padding-bottom:60px}.section-heading h2{font-size:42px}.section-heading>p{font-size:16px}.foot-top{grid-template-columns:1fr 1fr;gap:36px 20px}.site-footer{padding-top:45px}.foot-brand img{height:52px}.foot-bottom{gap:20px}.foot-brand p{font-size:19px}dialog{padding:22px}dialog h2{font-size:24px}.study-caption{font-size:12px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Site header: the full prismlabs.solutions navigation; in-page links live in the hero. */
.site-header nav a { white-space:nowrap }
.hero-actions { display:flex;flex-wrap:wrap;gap:10px;margin-top:26px }
@media(min-width:861px) and (max-width:1240px){ .site-header nav { gap:14px;font-size:14px } .site-header nav a:nth-child(n+7) { display:none } }
@media(max-width:860px){ .site-header nav a:nth-child(n+7) { display:block } }

/* Embed mode (?embed=1), for an iframe on another page: the example tabs, the 3D window and its side controls.
   Wide frames: tabs on top, window and controls fill the frame, controls scroll. Narrow frames: the page scrolls. */
html.embed .skip,html.embed .site-header,html.embed .hero,html.embed .site-footer,html.embed #dataset-section,html.embed .study-caption{display:none!important}
html.embed .examples{padding:0}
html.embed .example-nav{border-top:0;padding:0 16px}
@media(min-width:861px){
 html.embed,html.embed body{height:100%;overflow:hidden}
 html.embed main,html.embed .examples{height:100%;display:flex;flex-direction:column}
 html.embed .example-nav{flex:none}
 html.embed .workbench{flex:1;min-height:0;border-bottom:0}
 html.embed #stage,html.embed .workbench>aside{height:100%!important;max-height:none!important}
}
@media(max-width:860px){html.embed #stage{height:62vh}}
