/* Approved mineral/print roles, shared by the studio and product page. */
.rf-current::selection,.rf-current ::selection{background:var(--lab-lime);color:var(--lab-ink);text-shadow:none}
.rf-current{--lab-grey:#c4cbc6;--lab-ink:#26312e;--lab-paper:#eeeede;--lab-lime:#def34c;--lab-blue:#293fa8;--lab-orange:#f1764a;color:var(--lab-ink);background:#eee9df}
.rf-lab{--rf-accent:var(--lab-grey);--rf-header-height:76px!important}.rf-lab .rf-opening{color:var(--lab-ink);background:var(--lab-grey)}.material-root{position:relative;isolation:isolate;overflow:hidden}.rf-site.rf-studio.rf-lab main>.material-root{min-height:100svh;display:flex;flex-direction:column;align-items:stretch}.material-root::after,.rf-lab #main::after{content:'';position:absolute;inset:0;z-index:1;background:url('plaster-grey.jpg') center top/720px 720px repeat;mix-blend-mode:luminosity;filter:grayscale(1);opacity:.9;pointer-events:none}.material-root>header{position:relative;z-index:2;min-height:76px;flex:none;background:transparent!important}.rf-lab .rf-header{width:100%;padding-block:16px}.rf-lab .rf-header nav{gap:28px}.rf-lab .rf-header nav a{font-size:15px;position:relative}.rf-lab .rf-header nav a:hover{text-decoration:none}.rf-lab .rf-header nav a::after{content:'';position:absolute;bottom:5px;left:0;right:0;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform 180ms}.rf-lab .rf-header nav a:hover::after{transform:scaleX(1)}.rf-lab .material-root>.rf-hero{position:relative;z-index:2;flex:1;display:flex;flex-direction:column;justify-content:center;padding-bottom:56px}.surface{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0}canvas[hidden]{display:none}.material-root[data-surface-active=true] .wordmark,.material-root[data-surface-active=true] .block-scene{visibility:hidden}.surface-word{display:inline-block;transform-origin:center}.rf-lab #hero-title .surface-word{display:inline-block}.rf-lab #hero-title{font-size:clamp(44px,4.3vw,62px);line-height:1.02}.rf-lab .rf-hero .rf-intro{grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:8.33%;padding-top:42px;align-items:center}.pub-intro{min-width:0}.pub-kicker{font:500 13px/1.3 var(--rf-text);margin:0 0 20px!important}.pub-feature{position:relative;min-width:0}.pub-index{display:flex;gap:8px;margin-bottom:12px}.pub-index a{font:500 19px/1.2 var(--rf-text);display:inline-flex;align-items:center;min-height:44px;position:relative;text-decoration:none;padding:8px 14px;isolation:isolate}.pub-index a::after{content:'';position:absolute;inset:0;background:var(--lab-lime);z-index:-1;transform:scaleX(0);transform-origin:left;transition:transform 180ms ease-out}.pub-index a[aria-selected=true]::after,.pub-index a:hover::after{transform:scaleX(1)}.pub-index a:hover::after{transform:scaleX(1) translateY(-2px)}.pub-index a:focus-visible{outline-color:var(--lab-blue)}.project-object{position:relative;isolation:isolate;background:var(--lab-ink);padding:18px 18px 16px;color:var(--lab-paper);border:1px solid var(--lab-ink)}.project-object::before{content:'';position:absolute;inset:0;background:var(--lab-blue);transform:translate(6px,6px);z-index:-2}.object-material{position:absolute;inset:0;z-index:-1;background:#727f76 url('mineral.svg') center/cover;background-blend-mode:multiply;opacity:.62}.panel-frame{position:relative;background:var(--lab-ink);border:1px solid #b8c7b6}.edge-meta{position:relative;display:flex;justify-content:space-between;align-items:center;gap:16px;box-sizing:border-box;height:32px;min-height:32px;margin:-9px 12px 0;padding:7px 12px;font:500 12px/1.4 var(--rf-text);letter-spacing:.02em;background:var(--lab-blue);color:#f0f1e5}.edge-meta [data-edge-description]{margin-left:auto}.pub-messages{display:grid}.pub-messages article{grid-area:1/1;min-width:0;display:flex;flex-direction:column}.enhanced .pub-messages article[hidden]{display:flex;visibility:hidden;pointer-events:none}.object-copy{padding:26px 26px 24px;flex:1}.rf-lab .object-copy p{font:400 22px/1.35 var(--rf-text);max-width:36ch;margin:0}.pub-action{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:52px;padding:8px 26px;text-decoration:none;color:var(--lab-paper)!important;font:500 16px/1.3 var(--rf-text);border-top:1px solid #b8c7b650;margin:0}.action-label{text-decoration:underline;text-underline-offset:5px}.action-arrow{display:flex;align-items:center;justify-content:center;width:34px;height:34px;font-size:26px;background:var(--lab-orange);color:var(--lab-ink);transition:transform 180ms}.pub-action:hover .action-arrow{transform:translate(3px,-3px)}.pub-action:focus-visible{outline-color:var(--lab-paper)!important;outline-offset:-4px!important}
/* The hero and letter share one texture origin and the same material layers. */
.rf-lab #main{position:relative;isolation:isolate;background:var(--lab-grey)}
.rf-lab #main::before{z-index:-2}
.rf-lab #main::after{z-index:-1}
/* A level paper letter over a separate, slightly turned blue sheet. */
.rf-current .rf-mission{position:relative;isolation:isolate;overflow:hidden;max-width:none;background:transparent;color:var(--lab-ink);padding:clamp(88px,9vw,144px) var(--rf-page-gutter) 56px;scroll-margin-top:0}
.letter-sheet{position:relative;isolation:isolate;max-width:980px;margin-inline:auto}
.letter-sheet::before{content:"";position:absolute;inset:-32px 24px 20px -44px;z-index:-1;background:var(--lab-blue);transform:rotate(-1deg);transform-origin:top right}
.rf-current .rf-mission-note{--letter-inset:clamp(40px,7vw,112px);position:relative;max-width:none;margin:0;background:var(--rf-paper);padding:clamp(48px,6vw,88px) var(--letter-inset) 0;box-shadow:0 2px 5px #26312e20}
.rf-current .rf-mission-note h2,.rf-current .rf-mission-note p{margin:0 0 1.5em;font:400 clamp(22px,2.5vw,32px)/1.45 var(--rf-text);letter-spacing:-.015em;text-wrap:pretty}
.rf-current .rf-mission-note p:last-of-type{margin-bottom:0}
.rf-current .letter-access{display:grid;gap:16px;margin:56px calc(-1 * var(--letter-inset)) 0;padding:24px var(--letter-inset) 32px;background:var(--lab-ink);color:var(--lab-paper)}
.rf-current .letter-access .rf-label{margin:0;color:var(--lab-paper)}
.rf-current .letter-access .encie-button{width:100%;max-width:none;justify-self:stretch;background:transparent;color:var(--lab-paper)!important;border:0;font-size:clamp(22px,2.5vw,32px);line-height:1.3;padding:0;min-height:48px}
.rf-current .letter-access .rf-arrow{box-sizing:content-box;width:24px;height:24px;padding:10px;background:var(--lab-orange);color:var(--lab-ink);flex-shrink:0}
.rf-lab .lab-footer{margin-top:0}
.rf-current .rf-mission-margin{display:none}
@media(min-width:1200px){.letter-sheet{left:24px}}
@media(max-width:600px){
 .rf-current .rf-mission{padding:64px 20px 40px}
 .letter-sheet::before{inset:-14px 8px 10px -8px;transform:rotate(-.35deg)}
 .rf-current .rf-mission-note{--letter-inset:24px;padding-top:36px}
 .rf-current .letter-access{margin-top:40px;padding-block:20px 24px}
 .rf-current .letter-access .encie-button{gap:12px}
 .rf-current .letter-access .rf-arrow{width:20px;height:20px;padding:8px}
 .rf-lab .rf-header nav .rf-nav-studio{display:inline-flex}
}
@media print{.rf-current .rf-mission{padding-block:24px;background:white}.rf-lab #main::before,.rf-lab #main::after,.letter-sheet::before{display:none}.rf-current .rf-mission-note{--letter-inset:24px;box-shadow:none}.rf-current .rf-mission-note h2,.rf-current .rf-mission-note p{font-size:18px}}

.lab-footer{background:var(--lab-ink);color:var(--lab-paper);padding:56px 0;margin-top:64px}.lab-footer-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:56px}.lab-footer-brand{display:block;width:300px;max-width:45%;text-decoration:none}.lab-footer-brand img{display:block;width:100%;height:auto}.lab-footer-brand img+img{margin-top:16px;filter:invert(1)}.lab-footer-copy p{font:500 18px/1.4 var(--rf-text);margin:0 0 18px}.lab-footer nav{display:flex;gap:28px;flex-wrap:wrap;margin-bottom:20px}.lab-footer nav a{min-height:44px;display:inline-flex;align-items:center;gap:12px;font:500 16px/1.4 var(--rf-text);text-underline-offset:5px}.lab-footer nav a:last-child span{color:var(--lab-orange);font-size:24px}.lab-footer small{font-size:12px;color:#c4cbc6}
/* Product pages share material roles without putting texture behind long copy. */
.encie-site.rf-current .encie-header{padding-block:24px;border-bottom:1px solid #26312e35}.encie-site.rf-current .encie-hero{display:grid;grid-template-columns:180px minmax(0,1fr);align-items:center;gap:48px;padding-block:64px}.encie-site.rf-current .encie-portrait{margin:0}.encie-site.rf-current .encie-portrait img{width:180px}.encie-site.rf-current #product-title{font-size:clamp(42px,4.7vw,66px);line-height:1.02}.encie-site.rf-current .rf-label{color:var(--lab-blue)}.encie-site.rf-current .encie-details{grid-template-columns:1.3fr 1fr;gap:64px}.encie-site.rf-current .encie-coordination{border:1px solid #26312e60;padding:22px 24px;background:#dce0d7;align-self:start}.encie-site.rf-current .encie-table caption{text-align:left;color:var(--lab-blue);padding-bottom:16px}.encie-site.rf-current .encie-table th,.encie-site.rf-current .encie-table td{border-color:#26312e40}.rf-current .encie-access{background:var(--lab-ink);color:var(--lab-paper);border:1px solid var(--lab-blue);box-shadow:6px 6px 0 var(--lab-blue);padding:32px}.rf-current .encie-access .rf-label{color:var(--lab-lime)}.rf-current .encie-access .encie-button{background:var(--lab-lime);color:var(--lab-ink)!important;border:0}.rf-current .encie-access .encie-button:hover{background:#e6f78b}.encie-site.rf-current .encie-main{padding-bottom:16px}
@media(max-width:1000px){.rf-lab .rf-hero .rf-intro{grid-template-columns:1fr;gap:32px}.rf-lab .material-root>.rf-hero{justify-content:flex-start}.pub-feature{width:100%;max-width:620px;justify-self:end}.rf-lab #hero-title{font-size:clamp(42px,6vw,60px)}.encie-site.rf-current .encie-details{grid-template-columns:1fr;gap:32px}.rf-current .encie-access{grid-template-columns:1fr;gap:24px}.encie-site.rf-current .encie-button{max-width:420px}}
@media(max-width:600px){.rf-lab .rf-hero .rf-intro{padding-top:28px;gap:24px}.rf-lab #hero-title{font-size:clamp(36px,9.5vw,48px)}.pub-kicker{font-size:12px;margin-bottom:14px!important}.pub-index a{font-size:18px;padding:8px 12px}.project-object{padding:14px 12px 12px}.edge-meta{height:32px;min-height:32px;font-size:10px;gap:8px;margin-left:8px;margin-right:8px;padding:7px 9px;letter-spacing:0}.object-copy{padding:22px 18px}.rf-lab .object-copy p{font-size:19px;line-height:1.35}.pub-action{padding:8px 18px;font-size:15px}.rf-lab .material-root>.rf-hero{padding-bottom:64px}.lab-footer{padding-block:36px}.lab-footer-inner{flex-direction:column;gap:32px}.lab-footer-brand{max-width:100%;width:240px}.lab-footer nav{gap:20px}.encie-site.rf-current .encie-hero{grid-template-columns:1fr;gap:24px;padding-block:36px}.encie-site.rf-current .encie-portrait img{width:120px}.encie-site.rf-current .encie-coordination{padding:18px}.rf-current .encie-access{padding:24px}.encie-site.rf-current .encie-button{font-size:15px;padding:12px 14px;gap:12px}.encie-site.rf-current #product-title{font-size:42px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}.pub-action:hover .action-arrow{transform:none}}
/* Keep the same card size before scripts load. Hash links also work without scripts. */
html:not(.enhanced) .pub-messages article{visibility:hidden;pointer-events:none}
html:not(.enhanced) .pub-feature:not(:has(#encie:target,#more:target)) #mission,
html:not(.enhanced) .pub-feature:has(#encie:target) #encie,
html:not(.enhanced) .pub-feature:has(#more:target) #more{visibility:visible;pointer-events:auto}
html:not(.enhanced) .pub-feature:not(:has(#encie:target,#more:target)) #tab-mission::after,
html:not(.enhanced) .pub-feature:has(#encie:target) #tab-encie::after,
html:not(.enhanced) .pub-feature:has(#more:target) #tab-more::after{transform:scaleX(1)}
/* The existing product grid places copy first and the portrait second. */
.encie-site.rf-current .encie-hero{grid-template-columns:minmax(0,1fr) 180px}
@media(max-width:600px){.encie-site.rf-current .encie-hero{grid-template-columns:1fr}}
.lab-footer nav a{text-decoration:none}.lab-footer .footer-label{text-decoration:underline;text-underline-offset:5px}.lab-footer nav a:last-child .footer-label{color:inherit;font-size:16px}
/* Mobile has three clear groups, distributed within the full-height opening. */
@media(max-width:600px){
 .rf-lab .material-root>.rf-hero{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto;align-content:space-between;gap:28px;padding-top:20px;padding-bottom:36px}
 .rf-lab .rf-hero .rf-intro{display:contents}
 .rf-lab .rf-lockup{width:100%;justify-self:center}
 .rf-lab .pub-feature{justify-self:stretch}
}
.lab-footer-brand{order:-1}
@media(max-width:600px){.lab-footer-brand{order:0;align-self:center;margin-inline:auto}.lab-footer-copy{width:100%}}

/* Centre the lower group in the remaining space below the desktop lockup. */
@media(min-width:1001px){
 .rf-lab .material-root>.rf-hero{justify-content:flex-start;padding-bottom:0}
 .rf-lab .rf-hero .rf-intro{flex:1;align-content:center;padding-block:42px}
}
.lab-footer nav .rf-arrow{color:var(--lab-orange);width:24px;height:24px}

/* Keep a local grain below the image while it loads, including without scripts.
   The image and canvas cover this layer once they are ready. */
.material-root::before,.rf-lab #main::before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;opacity:.22;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180' viewBox='0 0 180 180'%3E%3Cfilter id='grain'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.45' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Cpath fill='%23808080' filter='url(%23grain)' d='M0 0h180v180H0z'/%3E%3C/svg%3E") repeat}

/* The active canvas includes the plaster below the logo and surface lighting. */
.material-root[data-surface-active=true]::before,.material-root[data-surface-active=true]::after{visibility:hidden}

.rf-lab .hero-waitlist{width:fit-content;max-width:100%;margin-top:28px;background:var(--lab-lime);color:var(--lab-ink)!important;border:0;font-size:16px;line-height:1.4}
.rf-lab .hero-waitlist:hover{text-decoration:underline}
html:not(.enhanced) .pub-feature:has(#encie:target,#more:target) [data-edge-description]{display:none}
html:not(.enhanced) .pub-feature:has(#encie:target) .edge-meta::after{content:"An agent by radiofuture";margin-left:auto}
html:not(.enhanced) .pub-feature:has(#more:target) .edge-meta::after{content:"Experiments";margin-left:auto}

/* One canvas responds across the mineral surface; paper stays above it. */
.rf-lab #main>.material-root{z-index:1;background:transparent}
.rf-lab #main>.material-root::before,.rf-lab #main>.material-root::after{display:none}
.rf-lab #main>.rf-mission{z-index:1}
.rf-lab #main[data-surface-active=true]::before,.rf-lab #main[data-surface-active=true]::after{visibility:hidden}
.rf-current .letter-access .encie-button:hover .rf-arrow{transform:translate(2px,-2px)}
@media(prefers-reduced-motion:reduce){.rf-current .letter-access .encie-button:hover .rf-arrow{transform:none}}

/* Keep one raster at rest and during motion to avoid a texture switch on hover. */
.rf-lab #main[data-surface-rendered=true]::before,.rf-lab #main[data-surface-rendered=true]::after,
.rf-lab #main[data-surface-rendered=true] .wordmark,.rf-lab #main[data-surface-rendered=true] .block-scene{visibility:hidden}
