/* REN16 company site. The same family as Vander Labs (dark only, Open Sauce, frosted dark
   glass, calm motion) on a cooler palette: the darkest black and graphite, a cool faded white,
   and one accent, a light bright blue. No maroon and no other hue anywhere. */

@font-face{font-family:"Open Sauce Sans";src:url(/fonts/OpenSauceSans-Medium.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"Open Sauce Sans";src:url(/fonts/OpenSauceSans-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Open Sauce Sans";src:url(/fonts/OpenSauceSans-Bold.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Open Sauce One";src:url(/fonts/OpenSauceOne-Regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Open Sauce One";src:url(/fonts/OpenSauceOne-Medium.woff2) format("woff2");font-weight:500;font-display:swap}

:root{
  --paper:#08090B; --surface:#101216; --surface-2:#161920; --surface-3:#1D2129;
  --ink:#ECEFF3; --ink-2:#B6BCC6; --ink-3:#868D98;
  --line:rgba(236,239,243,.08); --line-2:rgba(236,239,243,.14);
  /* The accent: a light bright blue. blue fills (dark type on it), blue-hi draws lines, dots
     and focus rings, blue-deep is the darkest ember in the field. */
  --blue:#5EC8FF; --blue-hi:#8BD8FF; --blue-deep:#0B3552; --on-blue:#04121D;
  --sans:"Open Sauce Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --one:"Open Sauce One",system-ui,-apple-system,"Segoe UI",sans-serif;
  --ease:cubic-bezier(.16,1,.3,1);
  --gutter:24px;
  color-scheme:only dark;
}
@media (max-width:720px){:root{--gutter:18px}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--paper);color:var(--ink-2);font:400 17px/1.6 var(--one);font-variant-numeric:proportional-nums;-webkit-font-smoothing:antialiased;overflow-x:clip}
h1,h2,h3{margin:0;color:var(--ink);font-family:var(--sans);font-weight:600;line-height:1.08;letter-spacing:-.015em;text-wrap:balance}
p,dl,dd,figure{margin:0}
ul,ol{margin:0;padding:0}
a{color:inherit;text-decoration:none}
img,svg{display:block;max-width:100%}
:focus-visible{outline:2px solid var(--blue-hi);outline-offset:3px;border-radius:6px}
::selection{background:rgba(94,200,255,.35);color:#fff}
.skip{position:fixed;left:16px;top:-48px;z-index:60;background:var(--ink);color:var(--paper);padding:10px 14px;border-radius:12px;font-weight:500}
.skip:focus{top:12px}
.wrap{width:100%;max-width:1240px;margin:0 auto;padding:0 var(--gutter)}

/* Field: blue embers on black, painted once, plus a faint grain. */
.field{position:fixed;inset:0;z-index:-2;pointer-events:none;overflow:hidden}
.field i{position:absolute;border-radius:50%;background:radial-gradient(closest-side,rgba(var(--c),var(--o)) 0%,rgba(var(--c),calc(var(--o) * .6)) 40%,rgba(var(--c),calc(var(--o) * .22)) 70%,rgba(var(--c),0) 100%)}
.field i:nth-child(1){width:70vw;height:70vw;right:-22vw;top:-34vw;--c:94,200,255;--o:.2}
.field i:nth-child(2){width:60vw;height:60vw;left:-26vw;bottom:-30vw;--c:11,53,82;--o:.7}
.field i:nth-child(3){width:40vw;height:40vw;left:30vw;top:40vh;--c:236,239,243;--o:.03}
.grain{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px}

/* Topbar */
.top{position:sticky;top:0;z-index:40;border-bottom:1px solid var(--line);background:rgba(8,9,11,.72);-webkit-backdrop-filter:blur(18px) saturate(1.5);backdrop-filter:blur(18px) saturate(1.5)}
.top .wrap{display:flex;align-items:center;gap:28px;height:64px}
.mark{display:inline-flex;align-items:baseline;font:700 26px/1 var(--sans);letter-spacing:-.03em;color:var(--ink)}
.mark i,.poster i{position:relative;flex:none;background:var(--blue);border-radius:2px}
.mark i{width:7px;height:7px;margin-left:3px}
.mark i::after,.poster i::after{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 12px 2px rgba(94,200,255,.65);opacity:0;animation:glow 4.8s ease-in-out infinite}
@keyframes glow{50%{opacity:1}}
.top nav{display:flex;gap:6px;margin-left:auto}
.top nav a{padding:8px 12px;border-radius:10px;font:500 15px/1 var(--one);color:var(--ink-2);transition:background .2s,color .2s}
.top nav a:hover{color:var(--ink);background:rgba(236,239,243,.06)}
.top nav a[lang]{border:1px solid var(--line-2)}

/* Buttons */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 22px;border-radius:12px;font:500 16px/1 var(--one);color:var(--ink);background:rgba(236,239,243,.05);border:1px solid rgba(236,239,243,.12);overflow:hidden;isolation:isolate;transition:border-color .25s,transform .25s var(--ease)}
.btn:hover{border-color:rgba(236,239,243,.28)}
.btn:active{transform:scale(.98)}
.btn-blue{color:var(--on-blue);background:var(--blue);border-color:transparent;font-weight:600}
.btn-blue::after{content:"";position:absolute;inset:-20% auto -20% 0;width:40%;z-index:-1;background:linear-gradient(100deg,transparent,rgba(255,255,255,.55),transparent);transform:translateX(-160%) skewX(-18deg);animation:sheen 6s ease-in-out infinite}
@keyframes sheen{0%,60%{transform:translateX(-160%) skewX(-18deg)}90%,100%{transform:translateX(360%) skewX(-18deg)}}
.btn-row{display:flex;flex-wrap:wrap;gap:12px}

/* Hero */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr);gap:48px;align-items:center;padding:72px 0 40px;min-height:calc(100svh - 64px)}
.hero h1{font:700 clamp(42px,5.6vw,76px)/1.02 var(--sans);letter-spacing:-.03em}
.hero .lede{margin-top:24px;font-size:19px;line-height:1.55;max-width:56ch}
.hero .btn-row{margin-top:32px}

/* Orbit: REN16 at the core, its products on orbits around it. Decorative; the products
   section carries the same information. Every loop is a rotation or a fade. */
.orbit{position:relative;width:min(100%,560px);aspect-ratio:1;justify-self:center;contain:paint}
.ring{position:absolute;border-radius:50%;border:1px solid rgba(236,239,243,.09);inset:var(--in)}
.r1{--in:31%}.r2{--in:17%}.r3{--in:3%}
.comet{position:absolute;inset:var(--in);border-radius:50%;background:conic-gradient(from 0deg,rgba(94,200,255,0) 0deg,rgba(94,200,255,0) 250deg,rgba(94,200,255,.5) 330deg,#8BD8FF 354deg,#fff 360deg);-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 1.6px),#000 calc(100% - 1.2px));mask:radial-gradient(farthest-side,transparent calc(100% - 1.6px),#000 calc(100% - 1.2px));animation:turn var(--t) linear infinite}
.c1{--in:31%;--t:11s}.c2{--in:17%;--t:19s;animation-direction:reverse}.c3{--in:3%;--t:31s}
@keyframes turn{to{transform:rotate(360deg)}}
.arm{position:absolute;inset:var(--in);animation:turn var(--t) linear infinite;animation-delay:var(--d,0s)}
.arm > *{position:absolute;left:50%;top:0;translate:-50% -50%}
.a1{--in:17%;--t:64s}
.a2{--in:3%;--t:90s;--d:-30s}
.a3{--in:31%;--t:42s;--d:-20s}
.a4{--in:3%;--t:90s;--d:-72s}
/* The product label turns against its arm, so it stays upright the whole way round. */
.planet{display:flex;align-items:center;gap:9px;padding:9px 14px 9px 10px;border-radius:999px;background:rgba(22,25,32,.92);border:1px solid rgba(139,216,255,.45);box-shadow:0 0 0 4px rgba(94,200,255,.08),0 16px 34px -16px rgba(0,0,0,.9);font:600 14px/1 var(--sans);color:var(--ink);white-space:nowrap;animation:turn var(--t) linear infinite reverse;animation-delay:var(--d,0s)}
.planet b{width:8px;height:8px;border-radius:2px;background:var(--ink)}
.moon{width:9px;height:9px;border-radius:50%;background:var(--blue-hi);box-shadow:0 0 14px rgba(94,200,255,.8)}
.a3 .moon{width:6px;height:6px;background:var(--ink-3);box-shadow:none}
.core{position:absolute;inset:39%;display:grid;place-items:center;border-radius:50%;background:radial-gradient(circle at 50% 40%,#1A2533,#0D1117 70%);border:1px solid rgba(139,216,255,.3);box-shadow:0 0 60px -6px rgba(94,200,255,.45),inset 0 1px 0 rgba(255,255,255,.06);animation:breathe 6s ease-in-out infinite}
.core span{font:700 clamp(18px,3vw,30px)/1 var(--sans);letter-spacing:-.03em;color:var(--ink)}
@keyframes breathe{50%{transform:scale(1.035)}}
.pulse{position:absolute;inset:39%;border-radius:50%;border:1.5px solid rgba(94,200,255,.55);opacity:0;animation:ping 4.2s ease-out infinite}
.pulse + .pulse{animation-delay:2.1s}
@keyframes ping{0%{transform:scale(1);opacity:.6}100%{transform:scale(2.4);opacity:0}}

/* Marquee: what REN16 builds, drifting past in large graphite type. */
.marquee{margin:24px calc(50% - 50vw) 0;overflow:hidden;pointer-events:none;user-select:none;-webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.mq{display:flex;align-items:center;width:max-content;animation:run 60s linear infinite}
.mq span{font:700 clamp(40px,7vw,100px)/1.1 var(--sans);letter-spacing:-.04em;color:#1A1E25;white-space:nowrap;padding:0 .3em}
.mq span:nth-of-type(2n){color:#232833}
.mq i{flex:none;width:12px;height:12px;border-radius:2px;background:var(--blue);transform:rotate(45deg);box-shadow:0 0 18px rgba(94,200,255,.7)}
@keyframes run{to{transform:translate3d(-50%,0,0)}}

/* Sections */
section{scroll-margin-top:80px}
.sec{padding:96px 0 0}
.sec > .wrap > h2,.sec-head h2{font-size:clamp(32px,4vw,48px);letter-spacing:-.025em}
.sec h2::before{content:"";display:block;width:36px;height:2px;margin-bottom:18px;border-radius:2px;background:linear-gradient(90deg,var(--blue),var(--blue-hi));transform-origin:left;transform:scaleX(0);transition:transform 1s var(--ease) .15s}
.sec.is-in h2::before,.no-observer .sec h2::before{transform:none}
.sec-lede{margin-top:16px;max-width:60ch;font-size:18px}

/* Product card */
.product{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;align-items:center;margin-top:40px;padding:36px;border-radius:28px;background:rgba(16,18,22,.7);border:1px solid var(--line);box-shadow:inset 0 1px 0 rgba(236,239,243,.05),0 40px 80px -40px rgba(0,0,0,.95)}
.product::after{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;pointer-events:none;background:conic-gradient(from var(--spin,0deg),rgba(94,200,255,0) 0deg,rgba(94,200,255,0) 200deg,rgba(94,200,255,.5) 300deg,#8BD8FF 340deg,#fff 355deg,rgba(94,200,255,0) 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:spin-ring 10s steps(300) infinite}
@property --spin{syntax:"<angle>";inherits:false;initial-value:0deg}
@keyframes spin-ring{to{--spin:360deg}}
.product.is-idle::after{animation-play-state:paused}
.status{display:inline-flex;align-items:center;gap:8px;padding:6px 12px 6px 10px;border-radius:999px;border:1px solid rgba(139,216,255,.35);font:500 13px/1 var(--one);color:var(--blue-hi)}
.status i{position:relative;width:7px;height:7px;border-radius:50%;background:var(--blue)}
.status i::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 2px rgba(94,200,255,.6);animation:ping 2.4s ease-out infinite}
.product h3{margin-top:18px;font:700 clamp(36px,4.4vw,56px)/1 var(--sans);letter-spacing:-.04em}
.product .tag{margin-top:10px;font:500 20px/1.35 var(--sans);color:var(--ink)}
.product p.desc{margin-top:16px}
.facts{list-style:none;display:grid;gap:10px;margin-top:22px}
.facts li{position:relative;padding-left:22px}
.facts li::before{content:"";position:absolute;left:1px;top:.62em;width:7px;height:7px;border-radius:1.5px;background:var(--blue);transform:rotate(45deg);box-shadow:0 0 0 3px rgba(94,200,255,.16)}
.product .btn-row{margin-top:28px}
.more{margin-top:22px;color:var(--ink-3);font-size:15px}

/* Product preview: a request, the skill that loads, the answer, on a 12-second loop. */
.demo{position:relative;border-radius:20px;background:#0C0E12;border:1px solid var(--line);overflow:hidden;aspect-ratio:5/4;container-type:inline-size}
.demo-head{display:flex;align-items:center;gap:7px;height:12%;padding:0 5cqw;border-bottom:1px solid var(--line);font:500 3cqw/1 var(--one);color:var(--ink-3)}
.demo-head i{width:2cqw;height:2cqw;border-radius:50%;background:rgba(236,239,243,.16)}
.demo-head span{margin-left:2cqw}
.demo *{animation-duration:12s;animation-iteration-count:infinite;animation-timing-function:cubic-bezier(.65,0,.3,1);animation-fill-mode:both}
.d-ask{position:absolute;right:6%;top:18%;max-width:72%;padding:3cqw 4cqw;border-radius:4cqw 4cqw 1.4cqw 4cqw;background:var(--surface-3);color:var(--ink);font:500 3.6cqw/1.35 var(--one);animation-name:d-ask}
.d-skill{position:absolute;left:6%;top:42%;display:flex;align-items:center;gap:2.4cqw;height:9cqw;padding:0 4cqw 0 2.4cqw;border-radius:99px;border:1px solid rgba(139,216,255,.5);box-shadow:0 0 5cqw -1cqw rgba(94,200,255,.6);font:500 3.2cqw/1 var(--one);color:var(--ink);animation-name:d-skill}
.d-skill i{display:grid;place-items:center;width:5cqw;height:5cqw;border-radius:50%;background:var(--blue);color:var(--on-blue)}
.d-skill svg{width:68%;height:68%;fill:none;stroke:currentColor;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round}
.d-lines{position:absolute;left:6%;top:62%;width:76%;display:grid;gap:3cqw}
.d-lines i{display:block;height:3cqw;border-radius:99px;background:rgba(236,239,243,.14);transform-origin:left;animation-name:d-line}
.d-lines i:nth-child(2){animation-delay:.35s}
.d-lines i:nth-child(3){animation-delay:.7s}
.d-lines i:nth-child(1){width:94%;background:rgba(236,239,243,.22)}
.d-lines i:nth-child(2){width:84%}
.d-lines i:nth-child(3){width:58%}
@keyframes d-ask{0%,6%{opacity:0;transform:translateY(30%) scale(.94)}12%,92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
@keyframes d-skill{0%,20%{opacity:0;transform:translateY(40%)}27%,92%{opacity:1;transform:none}100%{opacity:0;transform:none}}
@keyframes d-line{0%,34%{opacity:0;transform:scaleX(0)}36%{opacity:1}46%,90%{opacity:1;transform:scaleX(1)}96%,100%{opacity:0;transform:scaleX(1)}}
.demo.is-idle *{animation-play-state:paused}
.orbit.is-idle *,.orbit.is-idle *::after{animation-play-state:paused}
.marquee.is-idle .mq{animation-play-state:paused}

/* Principles */
.ways{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:40px}
.way{padding:28px;border-radius:22px;border:1px solid var(--line);background:linear-gradient(180deg,rgba(236,239,243,.035),rgba(236,239,243,.01))}
.way svg{width:30px;height:30px;fill:none;stroke:var(--blue-hi);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.way h3{margin-top:18px;font-size:21px}
.way p{margin-top:10px;font-size:16px}

/* Footer */
.foot{margin-top:120px;border-top:1px solid var(--line);overflow:hidden}
.foot .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:16px 32px;padding-top:32px;padding-bottom:8px;font-size:14px;color:var(--ink-3)}
.foot nav{display:flex;flex-wrap:wrap;gap:8px 20px}
.foot nav a:hover{color:var(--ink)}
.poster{display:flex;align-items:baseline;margin:48px 0 -.03em -.04em;font:700 clamp(84px,26vw,360px)/.8 var(--sans);letter-spacing:-.06em;color:var(--ink);white-space:nowrap;user-select:none}
.poster i{width:.08em;height:.08em;margin-left:.03em;border-radius:.015em}
.poster i::after{box-shadow:0 0 .12em .02em rgba(94,200,255,.65)}

/* Entrances */
.rise{opacity:0;transform:translateY(16px)}
.rise.is-in{opacity:1;transform:none;transition:opacity .7s var(--ease) calc(var(--i,0) * 80ms),transform .9s var(--ease) calc(var(--i,0) * 80ms)}
.no-observer .rise{opacity:1;transform:none}
.hero-copy > *{animation:enter .9s var(--ease) both}
.hero-copy > :nth-child(2){animation-delay:90ms}
.hero-copy > :nth-child(3){animation-delay:180ms}
.hero-copy > :nth-child(4){animation-delay:270ms}
.hero-404{min-height:60svh;grid-template-columns:1fr}
@keyframes enter{from{opacity:0;transform:translateY(14px)}}

/* Responsive */
@media (max-width:980px){
  .hero{grid-template-columns:1fr;min-height:0;padding-top:48px;gap:24px}
  .orbit{width:min(100%,460px)}
  .product{grid-template-columns:1fr;padding:24px}
  .ways{grid-template-columns:1fr}
}
@media (max-width:620px){
  .top nav a:not([lang]){display:none}
  .hero .lede{font-size:17.5px}
  .planet{font-size:12.5px;padding:7px 11px 7px 8px}
  .sec{padding-top:72px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
  .rise{opacity:1;transform:none}
  .sec h2::before{transform:none}
  html{scroll-behavior:auto}
}
