/* Motion is an enhancement. Resting styles remain visible without JavaScript. */
.section-heading>div{min-width:0;max-width:100%}main h1,main h2,.heading-line{overflow-wrap:anywhere}.eyebrow .label-text{min-width:0;overflow-wrap:anywhere}
:root{--machine-ease:cubic-bezier(.18,.68,.2,1);--signal-ease:cubic-bezier(.6,0,.15,1)}
.object-body{position:relative;transform:perspective(1800px) translate3d(var(--object-x,0px),var(--object-y,0px),0) rotateX(var(--object-rx,0deg)) rotateY(var(--object-ry,0deg));transform-origin:50% 55%}
.object-light{position:absolute;inset:0;z-index:2;pointer-events:none;mask:url('/assets/brand/r3vanta-mark-premium-1600.webp') center/contain no-repeat;background:linear-gradient(115deg,transparent 35%,color-mix(in srgb,var(--r3-white) 13%,transparent) 49%,color-mix(in srgb,var(--r3-cyan) 6%,transparent) 54%,transparent 65%);background-size:200% 100%;background-position:var(--light-x,50%) 50%;opacity:0;transition:opacity 350ms}
.pointer-active .object-light{opacity:.75}.hero-signal{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;opacity:0}.hero-signal path{fill:none;stroke:var(--r3-cyan);stroke-width:1;stroke-dasharray:1550;stroke-dashoffset:1550}.hero-copy{isolation:isolate}.hero-copy h1,.hero-copy .hero-title,.hero-copy .hero-description{clip-path:inset(-2% -10% -2% -10%)}
.hero-sequence .hero-object-grid{animation:grid-wake 420ms 40ms both}.hero-sequence .hero-signal{animation:signal-presence 850ms 120ms both}.hero-sequence .hero-signal path{animation:signal-draw 650ms 150ms var(--signal-ease) both}.hero-sequence .object-body picture{animation:object-scan 800ms 390ms var(--machine-ease) both}.hero-sequence .object-light{opacity:0!important}.hero-sequence .initialization-cut{animation:junction-presence 620ms 900ms both}.hero-sequence .initialization-cut path{animation:cut-draw 550ms 930ms var(--signal-ease) both}.hero-sequence .hero-copy h1{animation:type-scan 510ms 1120ms var(--machine-ease) both}.hero-sequence .hero-title{animation:type-rise 450ms 1290ms var(--machine-ease) both}.hero-sequence .hero-description{animation:body-arrive 350ms 1450ms var(--machine-ease) both}.hero-sequence .hero-eyebrow,.hero-sequence .object-reference,.hero-sequence .object-caption{animation:annotation-arrive 330ms 1700ms both}
@keyframes grid-wake{from{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}
@keyframes signal-presence{0%,100%{opacity:0}12%,70%{opacity:.65}}
@keyframes signal-draw{to{stroke-dashoffset:0}}
@keyframes object-scan{0%{clip-path:polygon(0 0,0 0,0 0,0 0)}45%{clip-path:polygon(0 0,82% 0,29% 100%,0 100%)}100%{clip-path:polygon(0 0,155% 0,100% 100%,0 100%)}}
@keyframes junction-presence{0%,100%{opacity:0}15%,72%{opacity:.9}}
@keyframes type-scan{from{clip-path:inset(0 105% 0 -10%)}to{clip-path:inset(-2% -10% -2% -10%)}}
@keyframes type-rise{from{clip-path:inset(100% -2% 0 -2%);transform:translateY(12px)}to{clip-path:inset(0 -2% 0 -2%);transform:none}}
@keyframes body-arrive{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes annotation-arrive{from{opacity:0;clip-path:inset(0 100% 0 0)}to{opacity:1;clip-path:inset(0)}}
.ambient-node{position:absolute;width:3px;height:3px;left:24%;top:32%;background:var(--r3-cyan);opacity:.04;animation:node-wake 14s 2s infinite;animation-play-state:paused}.ambient-node+ .ambient-node{left:82%;top:68%;animation-delay:8s}.hero.is-in-view .ambient-node{animation-play-state:running}@keyframes node-wake{0%,65%,100%{opacity:.015}75%,80%{opacity:.09}}
/* Labels, masked headlines and independent media choreography. */
.label-rule{height:1px;width:22px;background:var(--r3-steel);transform-origin:left;flex:none;opacity:.6}.eyebrow .label-text{color:var(--r3-titanium)}.heading-mask{display:block;overflow:clip;padding-bottom:.08em;margin-bottom:-.08em}.heading-mask:focus-within{overflow:visible}.heading-line{display:block;transform-origin:left bottom}.motion-ready:not(.motion-active) .choreo-heading .heading-line{transform:translateY(108%)}.motion-ready:not(.motion-active) .choreo-label .label-number{opacity:0}.motion-ready:not(.motion-active) .choreo-label .label-rule{transform:scaleX(0)}.motion-ready:not(.motion-active) .choreo-label .label-text{clip-path:inset(0 100% 0 0)}.motion-ready:not(.motion-active) .choreo-body{opacity:0;transform:translateY(14px)}
.motion-active .choreo-label .label-number{animation:number-register 180ms both}.motion-active .choreo-label .label-rule{animation:line-extend 330ms 70ms var(--machine-ease) both}.motion-active .choreo-label .label-text{animation:annotation-arrive 320ms 160ms both}.motion-active .choreo-heading .heading-line{animation:heading-arrive 560ms 190ms var(--machine-ease) both}.motion-active .choreo-heading .heading-mask:nth-child(2) .heading-line{animation-delay:270ms}.motion-active .choreo-body{animation:body-arrive 420ms 310ms var(--machine-ease) both}
@keyframes number-register{from{opacity:0;transform:translateX(-3px)}to{opacity:1;transform:none}}@keyframes line-extend{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes heading-arrive{from{transform:translateY(108%)}to{transform:translateY(0)}}
.section-divider{overflow:visible}.section-divider::before,.section-divider::after{content:"";position:absolute;top:0;height:1px;background:var(--r3-cyan);width:calc(68% - 26px);transform-origin:left;transform:scaleX(0);opacity:.65}.section-divider::after{left:calc(68% + 26px);width:calc(32% - 26px)}.motion-active>.section-divider::before{animation:cut-first 560ms var(--signal-ease) both}.motion-active>.section-divider::after{animation:cut-second 490ms 230ms var(--signal-ease) both}@keyframes cut-first{0%{transform:scaleX(0);opacity:.7}65%{transform:scaleX(1);opacity:.7}100%{transform:scaleX(1);opacity:0}}@keyframes cut-second{0%{transform:translateY(6px) scaleX(0);opacity:.65}60%{transform:translateY(0) scaleX(1);opacity:.65}100%{transform:translateY(0) scaleX(1);opacity:0}}
.project-card.motion-ready:not(.motion-active) .project-visual{clip-path:polygon(0 0,0 0,0 100%,0 100%)}.project-card.motion-ready:not(.motion-active) .project-register{opacity:0}.project-card.motion-ready:not(.motion-active) .project-meta{opacity:0;transform:translateY(12px)}.project-card.motion-active .project-visual{animation:panel-open 750ms 40ms var(--machine-ease) both}.project-card.motion-active .project-register{animation:number-register 250ms 100ms both}.project-card.motion-active .project-meta{animation:body-arrive 420ms 420ms both}.project-card.motion-active .choreo-heading .heading-line{animation-delay:300ms}.project-visual{transform:perspective(1500px) rotateX(var(--panel-rx,0deg)) rotateY(var(--panel-ry,0deg));transform-origin:50% 50%;isolation:isolate}.project-visual::before{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(ellipse 330px 220px at var(--panel-x,50%) var(--panel-y,50%),color-mix(in srgb,var(--r3-white) 7%,transparent),transparent 72%);opacity:0;transition:opacity 280ms}.project-visual:hover::before{opacity:1}.project-open{z-index:3}.project-visual>.project-fallback{transition:transform 450ms var(--machine-ease),filter 300ms}.project-visual:hover>.project-fallback{transform:scale(1.018);filter:brightness(1.06)}.project-visual:focus-visible .project-open{opacity:1}.project-card.motion-active .project-visual::after{animation:edge-trace 700ms 430ms both}.project-card.motion-finished .project-visual::after{animation:none}.project-card:hover .project-meta dt{color:var(--r3-titanium)}
@keyframes panel-open{from{clip-path:polygon(0 0,0 0,0 100%,0 100%)}65%{clip-path:polygon(0 0,95% 0,65% 100%,0 100%)}to{clip-path:polygon(0 0,calc(100% - 28px) 0,100% 28px,100% 100%,0 100%)}}@keyframes edge-trace{0%{transform:rotate(45deg) translateX(120%);opacity:0}30%,65%{transform:rotate(45deg) translateX(0);opacity:.7}100%{transform:rotate(45deg) translateX(-180%);opacity:0}}
/* Archive selections and a stable, conditional image preview. */
.archive-row{transition:opacity 220ms,background 220ms}.project-archive.has-active .archive-row:not(.is-selected){opacity:.58}.archive-row.is-selected{background:color-mix(in srgb,var(--r3-graphite) 45%,transparent)}.archive-row.is-selected .archive-detail{max-height:180px;opacity:1;padding-block:12px}.archive-detail{transform:translateX(-5px);transition:max-height 250ms,opacity 250ms,padding 250ms,transform 250ms}.archive-row.is-selected .archive-detail,.archive-row:focus-within .archive-detail{transform:none}.project-archive{position:relative}.archive-preview{position:absolute;right:0;bottom:calc(100% + 25px);width:275px;aspect-ratio:16/9;pointer-events:none;opacity:0;transition:opacity 220ms;z-index:2;clip-path:polygon(0 0,calc(100% - 17px) 0,100% 17px,100% 100%,0 100%);background:var(--r3-carbon)}.archive-preview.is-visible{opacity:1}.archive-preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity 300ms,clip-path 350ms;clip-path:inset(0 0 100% 0)}.archive-preview img.is-current{opacity:1;clip-path:inset(0)}
/* Native details: progressive intrinsic-size interpolation, never scripted semantics. */
.engineering-row summary{position:relative}.engineering-row summary::after{content:"";position:absolute;bottom:0;left:52px;right:0;height:1px;background:color-mix(in srgb,var(--r3-cyan) 55%,transparent);transform:scaleX(0);transform-origin:left;transition:transform 340ms var(--machine-ease)}.engineering-row[open] summary::after{transform:scaleX(1)}.engineering-row[open] .row-index{color:var(--r3-cyan)}.engineering-row[open] .cut-indicator{transform:rotate(180deg)}.cut-indicator{transition:transform 300ms var(--machine-ease)}.engineering-row[open]>p{animation:engineering-open 320ms var(--machine-ease) both;background:linear-gradient(132deg,transparent 76%,color-mix(in srgb,var(--r3-steel) 5%,transparent) 76.15%,transparent 76.4%);padding-top:17px}@keyframes engineering-open{from{opacity:.2;clip-path:inset(0 0 100% 0);transform:translateY(-5px)}to{opacity:1;clip-path:inset(0);transform:none}}
@supports(interpolate-size:allow-keywords){.engineering-row{interpolate-size:allow-keywords}.engineering-row::details-content{block-size:0;overflow:clip;transition:block-size 320ms var(--machine-ease),content-visibility 320ms allow-discrete}.engineering-row[open]::details-content{block-size:auto}}
.engineering-rows.motion-ready:not(.motion-active) .engineering-row{clip-path:inset(0 100% 0 0)}.engineering-rows.motion-active .engineering-row{animation:row-register 420ms var(--row-delay,0ms) var(--machine-ease) both}@keyframes row-register{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
/* Connected technical groups: three activation beats, one architecture. */
.focus-grid{position:relative}.focus-grid::before{content:"";position:absolute;top:-1px;left:0;right:0;height:1px;background:var(--r3-titanium);transform-origin:left;opacity:.55}.focus-grid.motion-ready:not(.motion-active)::before{transform:scaleX(0)}.focus-grid.motion-active::before{animation:line-extend 900ms var(--machine-ease) both}.focus-grid article{transition:opacity 250ms,background 250ms}.focus-grid article::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--r3-cyan);transform:scaleX(0);transform-origin:left;transition:transform 320ms;opacity:.65}.focus-grid article::after{content:"";position:absolute;top:-3px;left:0;width:5px;height:5px;background:var(--r3-steel);transform:rotate(-45deg);transition:background 250ms}.focus-grid article:hover::before,.focus-grid article:focus-within::before{transform:scaleX(1)}.focus-grid article:hover::after{background:var(--r3-cyan)}.focus-grid:has(article:hover) article:not(:hover){opacity:.66}.focus-grid.motion-ready:not(.motion-active) article{opacity:0;transform:translateY(10px)}.focus-grid.motion-active article{animation:group-connect 530ms var(--machine-ease) both}.focus-grid article:nth-child(1){--group-delay:100ms}.focus-grid article:nth-child(2){--group-delay:260ms}.focus-grid article:nth-child(3){--group-delay:420ms}.focus-grid.motion-active article{animation-delay:var(--group-delay)}.focus-grid.motion-active article::after{animation:node-connect 800ms var(--group-delay) both}@keyframes group-connect{from{opacity:.15;transform:translateY(10px);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:none;clip-path:inset(0)}}@keyframes node-connect{0%,100%{background:var(--r3-steel)}40%,70%{background:var(--r3-cyan)}}
.tags{gap:8px}.tags>span,.technical-tag{position:relative;padding:4px 8px;border:1px solid var(--r3-graphite);transition:color 220ms}.tags>span+span::before{content:none}.tags>span::after,.technical-tag::after{content:"";position:absolute;right:-1px;top:-1px;width:22%;height:9px;border-top:1px solid var(--r3-cyan);border-right:1px solid var(--r3-cyan);opacity:0;clip-path:inset(0 100% 0 0)}.tags>span:hover,.technical-tag:hover{color:var(--r3-white)}.tags>span:hover::after,.technical-tag:hover::after{opacity:.8;animation:tag-signal 400ms var(--signal-ease) both}.motion-active .tags>span{animation:tag-arrive 320ms calc(var(--tag-delay,0ms) + 380ms) both}@keyframes tag-arrive{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}@keyframes tag-signal{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0)}}
.focus-grid.motion-finished article,.focus-grid.motion-finished article::after{animation:none}
/* Ghosts use the approved asset and move at most 24px; foreground stays fixed. */
.about-strip,.contact-band{position:relative;isolation:isolate}.ghost-mark{position:absolute;right:-10px;top:15px;width:min(42%,460px);height:auto;opacity:.025;pointer-events:none;z-index:-1;transform:translate3d(0,var(--ghost-y,0px),0)} .contact-band{overflow:clip}.contact-ghost{width:min(42%,480px);right:70px;top:35px;opacity:.022}.rul3r-ghost{right:auto;left:-30px;top:20px;width:min(40%,360px)}.about-strip>.section-divider{position:relative;z-index:1}.contact-band-inner{position:relative}.contact-band h2>.heading-mask:first-child{color:var(--r3-white)}.contact-band h2>.heading-mask:nth-child(2){color:var(--r3-steel)}.contact-band-inner>.finale-signal{position:absolute;left:0;right:0;top:52%;height:1px;pointer-events:none;background:linear-gradient(90deg,transparent 8%,var(--r3-cyan) 44%,transparent 74%);transform:scaleX(0);transform-origin:left;opacity:0;min-width:0;padding:0}.contact-band.motion-active .finale-heading .heading-mask:first-child .heading-line{animation-delay:90ms}.contact-band.motion-active .finale-signal{animation:finale-connect 680ms 290ms var(--signal-ease) both}.contact-band.motion-active .finale-heading .heading-mask:nth-child(2) .heading-line{animation-delay:570ms}.contact-band.motion-finished:has(.button:hover) .finale-signal,.contact-band.motion-finished:has(.button:focus-visible) .finale-signal{animation:cta-connect 600ms var(--signal-ease) both}@keyframes finale-connect{0%{transform:scaleX(0);opacity:0}40%{opacity:.55}100%{transform:scaleX(1);opacity:0}}@keyframes cta-connect{0%{transform:scaleX(.3);opacity:0}40%{opacity:.4}100%{transform:scaleX(1);opacity:0}}
.button{overflow:hidden;isolation:isolate}.button>span{position:relative;z-index:2}.button:not(.secondary)::before{content:"";position:absolute;inset:-1px;background:var(--r3-graphite);clip-path:polygon(-30% 0,0 0,-30% 100%,-60% 100%);z-index:1;transition:clip-path 350ms var(--machine-ease)}.button:not(.secondary):hover::before,.button:not(.secondary):focus-visible::before{clip-path:polygon(0 0,135% 0,100% 100%,-35% 100%)}.button:not(.secondary):hover,.button:not(.secondary):focus-visible{color:var(--r3-white);background:var(--r3-white)}.button:not(.secondary):hover .arrow{color:var(--r3-white);transform:translate(3px,-2px)}.button.secondary::before{content:"";position:absolute;bottom:0;left:0;width:24px;height:13px;border-left:1px solid var(--r3-cyan);border-bottom:1px solid var(--r3-cyan);clip-path:inset(100% 100% 0 0);transition:clip-path 240ms var(--signal-ease)}.button.secondary:hover::before,.button.secondary:focus-visible::before{clip-path:inset(0)}
.footer-signal{display:inline-block;width:4px;height:4px;background:var(--r3-cyan);margin:0 10px 2px 0;opacity:.65}.site-footer.is-in-view .footer-signal{animation:footer-breathe 9s 1s infinite}@keyframes footer-breathe{0%,60%,100%{opacity:.45}70%,78%{opacity:.9}}
/* A five-node edge signal, not a top progress bar. */
.system-progress{display:none;position:fixed;left:15px;top:42%;z-index:20}.system-progress a{display:block;position:relative;width:23px;height:39px}.system-progress a::before{content:"";position:absolute;left:7px;top:8px;width:1px;height:31px;background:var(--line)}.system-progress a:last-child::before{display:none}.system-progress a::after{content:"";position:absolute;left:5px;top:3px;width:5px;height:5px;background:var(--r3-graphite);border:1px solid var(--r3-steel);transform:rotate(-45deg)}.system-progress a.is-complete::before{background:var(--r3-steel)}.system-progress a[aria-current]::after{background:var(--r3-cyan);border-color:var(--r3-cyan);animation:progress-node 500ms both}.system-progress a span{position:absolute;left:24px;top:-5px;white-space:nowrap;background:var(--bg);font:9px var(--mono);letter-spacing:.13em;padding:7px 10px;opacity:0;pointer-events:none;transform:translateX(-4px);transition:opacity 180ms,transform 180ms}.system-progress a:hover span,.system-progress a:focus-visible span{opacity:1;transform:none}.system-progress a:focus-visible{outline-offset:2px}@keyframes progress-node{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--r3-cyan) 45%,transparent)}100%{box-shadow:0 0 0 5px transparent}}
/* Native cross-document transitions preserve links, history and new tabs. */
@media(prefers-reduced-motion:no-preference){@view-transition{navigation:auto}::view-transition{pointer-events:none}::view-transition-old(root){animation:page-out 280ms var(--machine-ease) both}::view-transition-new(root){animation:page-cut-in 350ms var(--machine-ease) both}.site-header{view-transition-name:r3-header}::view-transition-group(r3-header){animation-duration:350ms}@keyframes page-out{to{opacity:.55;transform:translateX(-4px)}}@keyframes page-cut-in{from{clip-path:polygon(0 0,12% 0,0 100%,0 100%)}to{clip-path:polygon(0 0,145% 0,100% 100%,0 100%)}}}
.motion-skip .heading-line,.motion-skip .choreo-body,.motion-skip .label-number,.motion-skip .label-text,.motion-skip .label-rule,.motion-skip .project-meta,.motion-skip .project-register,.motion-skip .engineering-row,.motion-skip .tags>span{animation:none!important;opacity:1!important;transform:none!important;clip-path:none!important}.motion-skip article{animation:none!important;transform:none!important;clip-path:none!important}
.motion-skip .project-visual::after,.motion-skip::before,.motion-skip::after,.motion-skip .section-divider::before,.motion-skip .section-divider::after,.motion-skip .finale-signal{animation:none!important}.motion-skip .project-visual{animation:none!important;opacity:1;clip-path:polygon(0 0,calc(100% - 28px) 0,100% 28px,100% 100%,0 100%)!important}
@media(min-width:1180px){.system-progress{display:block}}
@media(max-width:900px),(hover:none),(pointer:coarse){.object-body,.project-visual{transform:none!important}.object-light,.project-visual::before,.archive-preview,.ambient-node{display:none!important}.ghost-mark{transform:none}.focus-grid:has(article:hover) article:not(:hover){opacity:1}.focus-grid::before{width:1px;height:100%;right:auto;transform-origin:top}.focus-grid.motion-active::before{animation:connection-down 800ms both}.focus-grid article::before{left:0;top:0;bottom:0;width:1px;height:100%;right:auto;transform-origin:top}.focus-grid article+article::after{left:-2px;top:0}.focus-grid article::after{left:-2px}.tags>span{padding:3px 6px}@keyframes connection-down{from{transform:scaleY(0)}to{transform:scaleY(1)}}}
@media(max-width:650px){.label-rule{width:14px}.eyebrow{gap:11px}.hero-sequence .object-body picture{animation-duration:650ms;animation-delay:220ms}.hero-sequence .initialization-cut{animation-delay:690ms}.hero-sequence .initialization-cut path{animation-delay:720ms}.hero-sequence .hero-copy h1{animation-delay:880ms}.hero-sequence .hero-title{animation-delay:1010ms}.hero-sequence .hero-description{animation-delay:1160ms}.hero-sequence .hero-eyebrow,.hero-sequence .object-reference,.hero-sequence .object-caption{animation-delay:1450ms}.hero-signal{height:75%;top:18%}.project-archive.has-active .archive-row:not(.is-selected){opacity:1}.archive-detail{transform:none}.ghost-mark{opacity:.015;right:0;left:auto;width:55%;top:65px}.contact-ghost{top:110px}.contact-band-inner>.finale-signal{top:27%}.engineering-row summary::after{left:42px}.object-light{mask-image:url('/assets/brand/r3vanta-mark-premium-1024.webp')}}
@media(prefers-reduced-motion:reduce){@view-transition{navigation:none}::view-transition-old(root),::view-transition-new(root),::view-transition-group(*){animation:none!important}.hero-sequence *,[class*=motion-] *,[class*=motion-]::before,[class*=motion-]::after{animation:none!important;transition:none!important}.object-body,.project-visual,.ghost-mark{transform:none!important}.object-light,.hero-signal,.initialization-cut,.ambient-node,.finale-signal,.system-progress,.archive-preview{display:none!important}.motion-ready .heading-line,.motion-ready .choreo-body,.motion-ready .label-number,.motion-ready .label-text,.motion-ready .label-rule,.motion-ready article,.motion-ready .project-meta,.motion-ready .project-register,.hero-sequence .hero-copy>*{opacity:1!important;transform:none!important;clip-path:none!important}.motion-ready .project-visual{clip-path:polygon(0 0,calc(100% - 28px) 0,100% 28px,100% 100%,0 100%)!important}.focus-grid.motion-ready::before{transform:none!important}.engineering-row::details-content{transition:none!important}.footer-signal{animation:none!important}.archive-row{opacity:1!important}}
