.shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.shelf .feat{grid-column:1/-1}@media(max-width:860px){.shelf{grid-template-columns:1fr}}.hue-coral{--hue:#FF6A2B;--hue-2:#C23A00;--hue-deep:#1A0902}.hue-lime{--hue:#A8DC4E;--hue-2:#2C7A30;--hue-deep:#081A0C}.hue-blue{--hue:#4F86FF;--hue-2:#1C3FA8;--hue-deep:#06112B}.hue-violet{--hue:#A487FF;--hue-2:#5A2FC2;--hue-deep:#130A2C}.card.prod{--mx:50%;--my:50%;--rx:0deg;--ry:0deg;--lift:0px;display:flex;flex-direction:column;padding:0;overflow:hidden;isolation:isolate;color:inherit;text-decoration:none;cursor:pointer;transform:perspective(900px) translateY(var(--lift)) rotateX(var(--rx)) rotateY(var(--ry));transition:transform .6s var(--ease),box-shadow .3s,border-color .2s}.prod:before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit;background:radial-gradient(380px circle at var(--mx) var(--my),color-mix(in srgb,var(--hue) 15%,transparent),transparent 70%);opacity:0;transition:opacity .35s}.prod:hover,.prod:focus-visible{--lift:-4px;border-color:var(--line-2);box-shadow:var(--shadow-lg)}.prod:after{content:"";position:absolute;inset:-1px;z-index:3;pointer-events:none;border-radius:inherit;padding:1px;background:radial-gradient(240px circle at var(--mx) var(--my),var(--hue),transparent 70%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);opacity:0;transition:opacity .35s}.prod:hover:before,.prod:focus-visible:before,.prod:hover:after,.prod:focus-visible:after{opacity:1}.prod:focus-visible{border-radius:22px;outline-offset:4px}.prod.tilt{transition:transform .14s linear,box-shadow .3s,border-color .2s}.prod-art{position:relative;z-index:1;margin:8px 8px 0;border-radius:16px;aspect-ratio:16/9;overflow:hidden;isolation:isolate;background:radial-gradient(70% 95% at 88% 0%,color-mix(in srgb,var(--hue) 80%,transparent),transparent 62%),radial-gradient(85% 95% at 0% 100%,color-mix(in srgb,var(--hue-2) 90%,transparent),transparent 72%),linear-gradient(160deg,var(--hue-deep),color-mix(in srgb,var(--hue-deep) 65%,var(--hue-2)));box-shadow:inset 0 0 0 1px #ffffff14}.prod-art:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(rgba(255,255,255,.1) 1px,transparent 1.3px) 0 0/14px 14px;-webkit-mask-image:linear-gradient(180deg,#000,transparent 85%);mask-image:linear-gradient(180deg,#000,transparent 85%)}.prod-art:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(220px circle at var(--ax,50%) var(--ay,40%),rgba(255,255,255,.16),transparent 70%);opacity:0;transition:opacity .35s}.prod:hover .prod-art:after,.prod:focus-visible .prod-art:after{opacity:1}.prod-art svg{position:absolute;inset:0;width:100%;height:100%;display:block}.prod-body{position:relative;z-index:1;display:flex;flex-direction:column;flex:1;padding:18px 22px 20px}.prod .top{display:flex;justify-content:space-between;align-items:center;gap:8px}.prod h3{font:500 20px/1.2 var(--f-display);letter-spacing:-.01em;margin-top:14px}.prod p{font-size:14px;color:var(--ink-2);margin-top:6px}.prod-go{margin-top:auto;padding-top:18px;display:flex;align-items:center;justify-content:space-between;gap:12px;font:500 14px/1.25 var(--f-ui);color:var(--ink)}.prod:hover .go,.prod:focus-visible .go{background:var(--ink);color:var(--bg);border-color:var(--ink);transform:translate(3px)}.prod.feat{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);background:var(--ink);color:var(--bg);border-color:var(--ink);min-height:340px}.prod.feat .prod-art{order:2;margin:10px;aspect-ratio:auto;min-height:300px}.prod.feat .prod-body{padding:28px 30px 26px}.prod.feat h3{font:400 clamp(28px,2.6vw,36px)/1.05 var(--f-display);letter-spacing:-.025em;margin-top:auto;padding-top:40px}.prod.feat p{font-size:15px;max-width:40ch;margin-top:10px}.prod.feat .meta,.prod.feat p{color:color-mix(in srgb,var(--bg) 72%,transparent)}.prod.feat .prod-go{margin-top:0;padding-top:28px;justify-content:flex-start;color:var(--bg)}.prod.feat .go{color:var(--bg);border-color:color-mix(in srgb,var(--bg) 40%,transparent)}.prod.feat:hover .go,.prod.feat:focus-visible .go{background:var(--bg);color:var(--ink);border-color:var(--bg)}.prod.feat:hover,.prod.feat:focus-visible{border-color:var(--ink)}.prod.feat .chip-ok{background:#62d3942e;color:#7fe0a8}:root[data-theme=dark] .prod.feat .chip-ok{background:#1d744629;color:#155c36}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .prod.feat .chip-ok{background:#1d744629;color:#155c36}}.prod.feat .chip-line{border-color:color-mix(in srgb,var(--bg) 40%,transparent);color:var(--bg)}@media(max-width:860px){.prod.feat{grid-template-columns:1fr;min-height:0}.prod.feat .prod-art{order:0;margin:8px 8px 0;aspect-ratio:16/10;min-height:0}.prod.feat .prod-body{padding:18px 22px 20px}.prod.feat h3{margin-top:14px;padding-top:0}}.prod-art{--k:1}.stage-building .prod-art{--k:1.25;filter:saturate(.9)}.stage-research .prod-art{--k:1.5;filter:saturate(.75)}.stage-idea .prod-art{--k:1.8;filter:saturate(.55)}.stage-idea .prod-art .sketch{display:block}.prod-art .sketch{display:none;position:absolute;inset:8px;border:1.5px dashed rgba(255,255,255,.35);border-radius:10px;pointer-events:none}.th text{font-family:var(--f-ui);font-weight:600}.th .mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-weight:500}.th .fb{transform-box:fill-box;transform-origin:50% 50%}.th .fl{transform-box:fill-box;transform-origin:0 50%}.th .fbot{transform-box:fill-box;transform-origin:50% 100%}.th .ftl{transform-box:fill-box;transform-origin:0 0}.th .ux-rip,.th .pf-scan{opacity:0}.th .ux-b{opacity:.5}@media(prefers-reduced-motion:no-preference){html.js .th .an{animation-duration:calc(var(--loop,7s) * var(--k,1));animation-iteration-count:infinite;animation-timing-function:var(--ease);animation-play-state:paused}html.js .prod-art.in .th .an{animation-play-state:running}html.js.tab-hidden .prod-art .th .an{animation-play-state:paused}.th-ux{--loop:7s}html.js .th-ux .ux-scene{animation-name:th-scene}html.js .th-ux .ux-a{animation-name:ux-a}html.js .th-ux .ux-b{animation-name:ux-b}html.js .th-ux .ux-cur{animation-name:ux-cur}html.js .th-ux .ux-rip{animation-name:ux-rip;animation-timing-function:ease-out}html.js .th-ux .ux-ring{animation-name:ux-ring}html.js .th-ux .ux-tick{animation-name:ux-tick}html.js .th-ux .ux-law{animation-name:ux-law}html.js .th-ux .ux-spark{animation:ux-spark 9s ease-in-out infinite alternate paused}.th-pr{--loop:7s}html.js .th-pr .pr-scene{animation-name:th-scene}html.js .th-pr .pr-k1{animation-name:pr-k1}html.js .th-pr .pr-w1{animation-name:pr-w1}html.js .th-pr .pr-k2{animation-name:pr-k2}html.js .th-pr .pr-w2{animation-name:pr-w2}html.js .th-pr .pr-k3{animation-name:pr-k3}html.js .th-pr .pr-w3{animation-name:pr-w3}html.js .th-pr .pr-k4{animation-name:pr-k4}html.js .th-pr .pr-w4{animation-name:pr-w4}html.js .th-pr .pr-d{animation-name:pr-d}html.js .th-pr .pr-run{animation:pr-run 1.4s ease-in-out infinite alternate paused}.th-pf{--loop:7s}html.js .th-pf .pf-scene{animation-name:th-scene}html.js .th-pf .pf-scan{animation-name:pf-scan;animation-timing-function:cubic-bezier(.45,0,.55,1)}html.js .th-pf .pf-g1{animation-name:pf-g1}html.js .th-pf .pf-g2{animation-name:pf-g2}html.js .th-pf .pf-g3{animation-name:pf-g3}html.js .th-pf .pf-stamp{animation-name:pf-stamp}.th-da{--loop:7s}html.js .th-da .da-scene{animation-name:th-scene}html.js .th-da .da-dot{animation-name:da-dot}html.js .th-da .da-bar{animation-name:da-bar}html.js .th-da .da-line{animation-name:da-line}html.js .th-da .da-catch{animation-name:da-catch}html.js .th-da .da-note{animation-name:da-note}html.js .prod-art.in .th .ux-spark,html.js .prod-art.in .th .pr-run{animation-play-state:running}html.js.tab-hidden .prod-art .th .ux-spark,html.js.tab-hidden .prod-art .th .pr-run{animation-play-state:paused}}@keyframes th-scene{0%{opacity:0}5%,90%{opacity:1}97%,to{opacity:0}}@keyframes ux-a{0%,3%{transform:scaleX(0)}11%,to{transform:scaleX(1)}}@keyframes ux-b{0%,8%{transform:scaleX(0);opacity:1}16%,42%{transform:scaleX(1);opacity:1}52%,to{transform:scaleX(1);opacity:.5}}@keyframes ux-cur{0%,16%{transform:translate(120px,70px) scale(1);opacity:0}22%{opacity:1}38%{transform:translate(0) scale(1)}41%{transform:translate(0) scale(.8)}45%,to{transform:translate(0) scale(1);opacity:1}}@keyframes ux-rip{0%,40%{opacity:0;transform:scale(.3)}42%{opacity:.9;transform:scale(.4)}58%,to{opacity:0;transform:scale(1.7)}}@keyframes ux-ring{0%,42%{opacity:0;transform:scale(1.06)}50%,to{opacity:1;transform:scale(1)}}@keyframes ux-tick{0%,46%{opacity:0;transform:scale(.3)}52%{opacity:1;transform:scale(1.15)}56%,to{opacity:1;transform:scale(1)}}@keyframes ux-law{0%,56%{opacity:0;transform:translateY(22px)}64%{opacity:1;transform:translateY(-3px)}68%,to{opacity:1;transform:translateY(0)}}@keyframes ux-spark{0%{transform:rotate(-12deg) scale(.96)}to{transform:rotate(8deg) scale(1.04)}}@keyframes pr-k1{0%,12%{opacity:0;transform:scale(.3)}16%,to{opacity:1;transform:scale(1)}}@keyframes pr-w1{0%,8%{transform:scaleX(0)}15%,to{transform:scaleX(1)}}@keyframes pr-k2{0%,24%{opacity:0;transform:scale(.3)}28%,to{opacity:1;transform:scale(1)}}@keyframes pr-w2{0%,19%{transform:scaleX(0)}27%,to{transform:scaleX(1)}}@keyframes pr-k3{0%,36%{opacity:0;transform:scale(.3)}40%,to{opacity:1;transform:scale(1)}}@keyframes pr-w3{0%,31%{transform:scaleX(0)}39%,to{transform:scaleX(1)}}@keyframes pr-k4{0%,48%{opacity:0;transform:scale(.3)}52%,to{opacity:1;transform:scale(1)}}@keyframes pr-w4{0%,43%{transform:scaleX(0)}51%,to{transform:scaleX(1)}}@keyframes pr-d{0%,58%{opacity:0;transform:scaleX(.6)}66%,to{opacity:1;transform:scaleX(1)}}@keyframes pr-run{0%{opacity:.35}to{opacity:1}}@keyframes pf-scan{0%,5%{transform:translate(0);opacity:0}8%{opacity:1}46%{transform:translate(228px);opacity:1}50%,to{transform:translate(228px);opacity:0}}@keyframes pf-g1{0%,14%{opacity:0;transform:scale(1.08)}20%,to{opacity:1;transform:scale(1)}}@keyframes pf-g2{0%,26%{opacity:0;transform:scaleY(0)}33%,to{opacity:1;transform:scaleY(1)}}@keyframes pf-g3{0%,38%{opacity:0;transform:translate(-6px)}44%,to{opacity:1;transform:translate(0)}}@keyframes pf-stamp{0%,52%{opacity:0;transform:scale(1.8)}58%{opacity:1;transform:scale(.94)}62%,to{opacity:1;transform:scale(1)}}@keyframes da-dot{0%,6%{transform:translate(var(--dx),var(--dy))}28%,to{transform:translate(0)}}@keyframes da-bar{0%,26%{transform:scaleY(0)}40%,to{transform:scaleY(1)}}@keyframes da-line{0%,40%{stroke-dashoffset:1}52%,to{stroke-dashoffset:0}}@keyframes da-catch{0%,58%{opacity:0;transform:scale(1.9)}64%{opacity:1;transform:scale(1)}70%{transform:scale(1.14)}76%,to{opacity:1;transform:scale(1)}}@keyframes da-note{0%,64%{opacity:0;transform:translateY(6px)}70%,to{opacity:1;transform:translateY(0)}}
