{"id":15741,"date":"2026-10-21T16:50:35","date_gmt":"2026-10-21T14:50:35","guid":{"rendered":"https:\/\/www.ok3d.fr\/?page_id=15741"},"modified":"2026-10-21T16:53:32","modified_gmt":"2026-10-21T14:53:32","slug":"ressources","status":"publish","type":"page","link":"https:\/\/www.ok3d.fr\/en\/ressources\/","title":{"rendered":"Resources"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15741\" class=\"elementor elementor-15741\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-bbe5d3c e-con e-atomic-element e-flexbox-base e-default-div e-ba436fd \" data-id=\"bbe5d3c\" data-element_type=\"e-flexbox\" data-e-type=\"e-flexbox\" data-interaction-id=\"bbe5d3c\" data-e-type=\"e-flexbox\" data-id=\"bbe5d3c\">\n    \t\t<div class=\"elementor-element elementor-element-c1d60fd elementor-widget elementor-widget-html\" data-id=\"c1d60fd\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- Ressources by OK3D \u00b7 \u00e0 coller tel quel dans un widget \u00ab HTML \u00bb d'Elementor (section pleine largeur) -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Unbounded:wght@500;700;800&family=Geist:wght@400;500;600;700;800&family=Geist+Mono:wght@500;600&display=swap\">\n<style>\nhtml,body{overflow-x:clip}\n.elementor-widget:has(.okk-scope){margin-bottom:0!important}\n.elementor-widget:has(> .okk-scope),.elementor-widget:has(> .elementor-widget-container > .okk-scope){width:100%!important;max-width:100%!important;flex:1 1 100%!important;align-self:stretch!important}\n.elementor-widget-container:has(> .okk-scope),.elementor-widget-wrap:has(.okk-scope),.elementor-column-wrap:has(.okk-scope),.elementor-section:has(.okk-scope),.elementor-section:has(.okk-scope) > .elementor-container,.e-con:has(.okk-scope),.e-con-inner:has(.okk-scope){padding:0!important;margin-top:0!important;margin-bottom:0!important;--padding-top:0px;--padding-bottom:0px;--padding-left:0px;--padding-right:0px;--gap:0px}\n.okk-scope{display:block;position:relative;left:auto;width:100vw!important;max-width:100vw!important;margin-left:calc(50% - 50vw)!important;margin-right:calc(50% - 50vw)!important;font-family:var(--f-body);font-size:15px;line-height:1.5;color:var(--ink);background:var(--bg);text-align:left;-webkit-font-smoothing:antialiased}\n.okk-scope *,.okk-scope *::before,.okk-scope *::after{box-sizing:border-box}\n.okk-scope [hidden]{display:none!important}\n.okk-scope > .okk{min-height:100vh;min-height:100svh}\n.okk-scope img{max-width:100%;height:auto}\n.okk-scope button,.okk-scope input{font-family:inherit;text-transform:none;letter-spacing:normal;min-height:0;box-shadow:none;margin:0}\n.okk-scope h1,.okk-scope h2,.okk-scope h3{color:inherit;text-transform:none;padding:0}\n.okk-scope p{margin:0}\n.okk-scope a{text-decoration:none}\n.okk-scope{\n  color-scheme:dark;\n  --bg:#06080C; --ink:#EEF2F8; --muted:#8792A6; --faint:#566074; --line:#1C2433; --line2:#2A3549; --panel:#0B0F17;\n  --brand:#2E6BFF; --brand-hi:#4F86FF; --brand2:#7CC4FF; --glow:rgba(46,107,255,.45); --good:#35E0A1;\n  --f-display:\"Unbounded\",\"Arial Black\",system-ui,sans-serif; --f-body:\"Geist\",system-ui,-apple-system,\"Segoe UI\",sans-serif; --f-mono:\"Geist Mono\",ui-monospace,Menlo,Consolas,monospace;\n}\n.okk-scope{background:var(--bg);color:var(--ink)}\n.okk-scope{font-family:var(--f-body);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}\n.okk-scope *{box-sizing:border-box}\n.okk-scope [hidden]{display:none!important}\n.okk-scope button{font:inherit;color:inherit;cursor:pointer;background:none;border:0;padding:0}\n.okk-scope button:hover,.okk-scope button:focus{background-color:transparent;color:inherit}\n.okk-scope a{color:inherit;text-decoration:none}\n.okk-scope img{border:0}\n.okk-scope h4{color:inherit}\n.okk-scope :focus-visible{outline:2px solid var(--brand2);outline-offset:3px;border-radius:8px}\n.okk-scope .okk{position:relative;overflow:hidden;min-height:100%;padding-left:max(clamp(22px,5vw,88px),env(safe-area-inset-left,0px));padding-right:max(clamp(22px,5vw,88px),env(safe-area-inset-right,0px));padding-top:calc(var(--okk-header-offset,94px) + clamp(28px,4vw,54px));padding-bottom:72px;\n  background:radial-gradient(900px 520px at 88% -12%,rgba(46,107,255,.22),transparent 62%),radial-gradient(760px 460px at -5% 8%,rgba(124,196,255,.08),transparent 60%),var(--bg)}\n.okk-scope .wrap{position:relative;max-width:1440px;margin:0 auto}\n.okk-scope .eyebrow{font:600 11px var(--f-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--brand2);display:inline-flex;align-items:center;gap:8px}\n.okk-scope .eyebrow::before{content:\"\";width:6px;height:6px;border-radius:2px;background:var(--brand2);box-shadow:0 0 10px var(--brand2)}\n.okk-scope h1,.okk-scope h2,.okk-scope h3{margin:0;font-family:var(--f-display);letter-spacing:-.035em;text-wrap:balance;color:inherit}\n.okk-scope p{margin:0}\n.okk-scope .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:46px;padding:0 22px;border-radius:999px;font-weight:600;font-size:14.5px;transition:transform .15s,border-color .2s;white-space:nowrap}\n.okk-scope .btn.pri{background:linear-gradient(180deg,var(--brand-hi),#2152E0);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 12px 30px -10px var(--glow),0 0 0 1px rgba(46,107,255,.6)}\n.okk-scope .btn.pri:hover{transform:translateY(-1px)}\n.okk-scope .btn.gho{border:1px solid var(--line2);background:rgba(255,255,255,.02)}\n.okk-scope .btn.gho:hover{border-color:var(--muted)}\n.okk-scope .glass{background:linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.012));border:1px solid var(--line);border-radius:26px;box-shadow:inset 0 1px 0 rgba(255,255,255,.045)}\n.okk-scope .intro{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:end;padding-block:6px 30px}\n.okk-scope .intro h1{font-size:clamp(34px,5.6vw,74px);line-height:1.02;font-weight:800;margin-top:16px}\n.okk-scope .intro h1 .c{background:linear-gradient(100deg,#4F86FF,#7CC4FF 55%,#E9F5FF);-webkit-background-clip:text;background-clip:text;color:transparent}\n.okk-scope .intro p{color:var(--muted);max-width:58ch;margin-top:18px;font-size:clamp(15px,1.3vw,16.5px)}\n.okk-scope .kpis{display:flex;gap:10px}\n.okk-scope .kpis div{padding:12px 16px;border-radius:18px;border:1px solid var(--line);background:rgba(255,255,255,.025);min-width:96px}\n.okk-scope .kpis b{display:block;font:700 22px var(--f-display);letter-spacing:-.03em}\n.okk-scope .kpis span{font:500 11px var(--f-mono);color:var(--muted);letter-spacing:.06em}\n.okk-scope .filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:26px;padding:5px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.02);width:max-content;max-width:100%}\n.okk-scope .filters button{height:38px;padding:0 16px;border-radius:999px;font:600 13px var(--f-body);color:var(--muted);transition:background .2s,color .2s}\n.okk-scope .filters button:hover{color:var(--ink)}\n.okk-scope .filters button[aria-pressed=\"true\"]{background:var(--ink)!important;color:var(--bg)!important}\n.okk-scope .filters b{font:600 11px var(--f-mono);opacity:.6;margin-left:6px}\n.okk-scope .group{margin-top:10px}\n.okk-scope .group+.group{margin-top:46px}\n.okk-scope .ghead{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:16px}\n.okk-scope .ghead h2{font-size:clamp(22px,2.8vw,32px);font-weight:700;margin-top:10px}\n.okk-scope .ghead p{color:var(--muted);max-width:46ch;font-size:14px}\n.okk-scope .grid{display:grid;gap:14px}\n.okk-scope .grid.g2{grid-template-columns:repeat(2,minmax(0,1fr))}\n.okk-scope .grid.g2 .card.wide{grid-column:1\/-1;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:8px;align-items:stretch}\n.okk-scope .grid.g2 .card.wide .vis{aspect-ratio:auto;min-height:260px}\n.okk-scope .grid.g2 .card.wide .body{padding:22px 18px 14px;justify-content:center}\n.okk-scope .grid.g2 .card.wide h3{font-size:clamp(22px,2.4vw,30px)}\n.okk-scope .grid.g2 .card.wide p{font-size:15px}\n.okk-scope .grid.g3{grid-template-columns:repeat(3,minmax(0,1fr))}\n.okk-scope .card{position:relative;display:flex;flex-direction:column;padding:12px;border-radius:26px;overflow:hidden;transition:transform .3s cubic-bezier(.2,.9,.3,1),border-color .25s,box-shadow .3s}\n.okk-scope .card:hover{transform:translateY(-3px);border-color:var(--line2);box-shadow:0 30px 60px -30px rgba(0,0,0,.8),0 0 0 1px color-mix(in srgb,var(--c) 35%,transparent)}\n.okk-scope .vis{position:relative;aspect-ratio:16\/8.4;border-radius:18px;overflow:hidden;background:radial-gradient(120% 100% at 50% 0%,color-mix(in srgb,var(--c) 16%,#0B0F17),#080B12 70%);border:1px solid var(--line);display:grid;place-items:center;isolation:isolate}\n.okk-scope .g3 .vis{aspect-ratio:16\/11}\n.okk-scope .vis::after{content:\"\";position:absolute;inset:0;background:linear-gradient(transparent 60%,rgba(6,8,12,.35));pointer-events:none}\n.okk-scope .badge{position:absolute;top:12px;left:12px;z-index:3;font:700 10.5px var(--f-mono);letter-spacing:.1em;padding:5px 9px;border-radius:8px;background:var(--c);color:#06080C}\n.okk-scope .body{padding:16px 8px 8px;display:flex;flex-direction:column;gap:10px;flex:1}\n.okk-scope .ttl{display:flex;align-items:center;justify-content:space-between;gap:10px}\n.okk-scope .card h3{font-size:clamp(18px,1.8vw,22px);font-weight:700;letter-spacing:-.025em}\n.okk-scope .card .kind{font:600 10.5px var(--f-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--c)}\n.okk-scope .card p{color:var(--muted);font-size:14px}\n.okk-scope .tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:auto;padding-top:4px}\n.okk-scope .tags span{font:600 10.5px var(--f-mono);padding:4px 8px;border-radius:7px;background:rgba(255,255,255,.05);color:var(--muted)}\n.okk-scope .go{display:inline-flex;align-items:center;gap:8px;font-weight:600;font-size:13.5px;color:var(--ink);white-space:nowrap}\n.okk-scope .go i{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line2);transition:all .25s;font-style:normal}\n.okk-scope .card:hover .go i{background:var(--c);border-color:transparent;color:#06080C;transform:translateX(3px)}\n.okk-scope .v-fmt{display:flex;align-items:center;gap:clamp(14px,3vw,30px)}\n.okk-scope .file{width:clamp(70px,9vw,98px);aspect-ratio:.78;border-radius:12px;position:relative;background:linear-gradient(160deg,#1A2233,#0F1522);border:1px solid #2A3549;display:grid;place-items:end center;padding-bottom:14px;box-shadow:0 20px 40px -20px #000}\n.okk-scope .file::before{content:\"\";position:absolute;top:-1px;right:-1px;width:26%;aspect-ratio:1;background:linear-gradient(225deg,var(--bg) 50%,#2A3549 50%);border-top-right-radius:12px}\n.okk-scope .file b{font:700 clamp(13px,1.5vw,16px) var(--f-mono);padding:4px 8px;border-radius:7px;background:var(--fc,#7CC4FF);color:#06080C;transition:transform .35s cubic-bezier(.3,1.6,.5,1)}\n.okk-scope .file .ln{position:absolute;left:16%;right:16%;top:22%;display:flex;flex-direction:column;gap:6px}\n.okk-scope .file .ln i{height:4px;border-radius:2px;background:#26304A}\n.okk-scope .file .ln i:nth-child(2){width:70%}\n.okk-scope .file .ln i:nth-child(3){width:85%}\n.okk-scope .file.out{border-color:color-mix(in srgb,var(--fc) 60%,#2A3549);box-shadow:0 0 0 4px color-mix(in srgb,var(--fc) 12%,transparent),0 20px 40px -20px #000}\n.okk-scope .flow{display:flex;gap:5px}\n.okk-scope .flow i{width:7px;height:7px;border-radius:50%;background:var(--brand2);animation:flow 1.2s infinite}\n.okk-scope .flow i:nth-child(2){animation-delay:.15s}\n.okk-scope .flow i:nth-child(3){animation-delay:.3s}\n@keyframes flow{0%,100%{opacity:.15;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}\n.okk-scope .flip b{transform:rotateX(90deg)}\n.okk-scope .v-logo{perspective:600px}\n.okk-scope .v-logo .word{font:800 clamp(56px,8vw,92px)\/1 var(--f-display);letter-spacing:-.04em;color:#E8EEF8;animation:sway 6s ease-in-out infinite;transform-style:preserve-3d;\n  background:linear-gradient(115deg,#9FB4D6 10%,#FFFFFF 38%,#8EA5C9 52%,#E9F0FA 70%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;\n  filter:drop-shadow(1px 1px 0 #5D6F8E) drop-shadow(1px 1px 0 #4F6080) drop-shadow(1px 1px 0 #43536F) drop-shadow(1px 1px 0 #384761) drop-shadow(1px 1px 0 #2E3B52) drop-shadow(1px 1px 0 #253045) drop-shadow(0 18px 18px rgba(0,0,0,.6))}\n@keyframes sway{0%,100%{transform:rotateY(-18deg) rotateX(8deg)}50%{transform:rotateY(18deg) rotateX(4deg)}}\n.okk-scope .v-logo .floor{position:absolute;bottom:12%;width:55%;height:14%;border-radius:50%;background:radial-gradient(closest-side,rgba(124,196,255,.25),transparent);filter:blur(4px)}\n.okk-scope .v-light .ball{width:clamp(90px,12vw,130px);aspect-ratio:1;border-radius:50%;position:relative;z-index:2;background:radial-gradient(circle at var(--lx,30%) var(--ly,30%),#FFFFFF 0,#F5D9B8 8%,#C98D5C 30%,#5B3824 62%,#160D08 100%);box-shadow:0 26px 30px -14px rgba(0,0,0,.8)}\n.okk-scope .v-light .sh{position:absolute;bottom:22%;left:50%;width:clamp(100px,14vw,150px);height:16px;margin-left:calc(clamp(100px,14vw,150px)\/-2);border-radius:50%;background:radial-gradient(closest-side,rgba(0,0,0,.7),transparent);transform:translateX(var(--sx,0px))}\n.okk-scope .v-light .lamp{position:absolute;width:16px;height:16px;border-radius:50%;background:#FFE6C4;box-shadow:0 0 24px 8px rgba(255,214,160,.55);left:var(--px,20%);top:var(--py,20%);z-index:3}\n.okk-scope .v-light .cone{position:absolute;inset:0;background:radial-gradient(60% 70% at var(--px,20%) var(--py,20%),rgba(255,214,160,.16),transparent 70%)}\n.okk-scope .v-pal{display:flex;align-items:center;gap:clamp(14px,2.4vw,24px)}\n.okk-scope .v-pal .ph{width:clamp(96px,13vw,140px);aspect-ratio:.8;border-radius:14px;background:radial-gradient(70% 50% at 70% 25%,#F6B38E,transparent),radial-gradient(80% 60% at 20% 80%,#1E5D6B,transparent),linear-gradient(170deg,#E9D3B0,#C0603A 60%,#2B2424);box-shadow:0 20px 40px -18px #000;position:relative}\n.okk-scope .v-pal .ph i{position:absolute;width:14px;height:14px;border-radius:50%;border:2.5px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.5);transform:scale(0);animation:pop 4.8s infinite}\n.okk-scope .v-pal .sws{display:flex;flex-direction:column;gap:6px}\n.okk-scope .v-pal .sws span{display:block;height:clamp(16px,2vw,22px);border-radius:7px;width:0;animation:grow 4.8s infinite cubic-bezier(.2,.9,.3,1)}\n@keyframes grow{0%,8%{width:0}22%,88%{width:clamp(80px,11vw,130px)}100%{width:0}}\n@keyframes pop{0%,8%{transform:scale(0)}16%,88%{transform:scale(1)}100%{transform:scale(0)}}\n.okk-scope .v-keys{display:flex;flex-direction:column;align-items:center;gap:14px}\n.okk-scope .keys{display:flex;align-items:center;gap:8px;font:600 15px var(--f-mono);color:var(--muted)}\n.okk-scope .key{min-width:clamp(46px,5vw,58px);height:clamp(46px,5vw,58px);padding:0 12px;border-radius:12px;display:grid;place-items:center;font:700 clamp(13px,1.4vw,16px) var(--f-mono);color:#E8EEF8;background:linear-gradient(180deg,#232C40,#161D2B);border:1px solid #2F3B55;box-shadow:0 6px 0 #0C111B,0 12px 20px -6px #000;transition:transform .12s,box-shadow .12s,background .2s}\n.okk-scope .key.dn{transform:translateY(5px);box-shadow:0 1px 0 #0C111B,0 4px 10px -4px #000;background:linear-gradient(180deg,#2E6BFF,#2152E0);border-color:#4F86FF}\n.okk-scope .v-keys .lab{font:600 12px var(--f-mono);letter-spacing:.08em;color:var(--good);min-height:16px;text-transform:uppercase}\n.okk-scope .v-keys .app{font:600 10.5px var(--f-mono);letter-spacing:.12em;color:var(--faint);text-transform:uppercase}\n.okk-scope .v-eye svg{width:min(78%,300px);height:auto;overflow:visible}\n.okk-scope .v-eye .mk{animation:seek 4.5s infinite cubic-bezier(.5,0,.2,1)}\n@keyframes seek{0%{transform:translate(-60px,-34px)}30%{transform:translate(18px,22px)}55%,100%{transform:translate(0,0)}}\n.okk-scope .v-eye .sc{opacity:0;animation:scr 4.5s infinite}\n@keyframes scr{0%,58%{opacity:0}66%,92%{opacity:1}100%{opacity:0}}\n.okk-scope .v-crash{display:flex;gap:clamp(10px,1.6vw,16px);align-items:center}\n.okk-scope .v-crash .tile{width:clamp(70px,8.5vw,96px);aspect-ratio:.82;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;position:relative;box-shadow:0 18px 30px -16px #000;border:1px solid rgba(255,255,255,.08)}\n.okk-scope .v-crash svg{width:42%;animation:shrink 4.2s ease-in-out infinite;animation-delay:inherit}\n@keyframes shrink{0%,15%{transform:scale(1)}45%,70%{transform:scale(.38)}100%{transform:scale(1)}}\n.okk-scope .v-crash b{font:700 9.5px var(--f-mono);letter-spacing:.1em;color:var(--fg);opacity:.75;text-transform:uppercase}\n.okk-scope .v-crash i{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;background:#86E2BC;color:#06080C;font:700 12px var(--f-body);font-style:normal;display:grid;place-items:center;transform:scale(0);animation:ok 4.2s infinite;animation-delay:inherit}\n@keyframes ok{0%,50%{transform:scale(0)}58%,90%{transform:scale(1)}100%{transform:scale(0)}}\n.okk-scope .v-sculpt .blob{width:clamp(110px,14vw,150px);aspect-ratio:1;background:conic-gradient(from 0deg,#9FE8FF,#C6A8FF,#FFB8E3,#FFE4A8,#A8FFD8,#9FE8FF);animation:morph 9s ease-in-out infinite,hue 12s linear infinite;box-shadow:inset -14px -18px 30px rgba(20,10,40,.55),inset 10px 12px 26px rgba(255,255,255,.55),0 30px 40px -20px rgba(0,0,0,.7);position:relative}\n.okk-scope .v-sculpt .blob::after{content:\"\";position:absolute;width:26%;height:18%;left:24%;top:18%;border-radius:50%;background:rgba(255,255,255,.75);filter:blur(5px)}\n@keyframes morph{0%,100%{border-radius:42% 58% 63% 37%\/45% 41% 59% 55%;transform:rotate(0)}33%{border-radius:61% 39% 44% 56%\/57% 60% 40% 43%;transform:rotate(40deg)}66%{border-radius:38% 62% 55% 45%\/38% 49% 51% 62%;transform:rotate(-25deg)}}\n@keyframes hue{to{filter:hue-rotate(360deg)}}\n.okk-scope .cfg{margin-top:48px;padding:clamp(24px,4vw,40px);display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:center;background:linear-gradient(140deg,rgba(46,107,255,.18),rgba(46,107,255,.02))}\n.okk-scope .cfg h2{font-size:clamp(22px,2.8vw,32px);font-weight:700;margin-top:12px}\n.okk-scope .cfg p{color:var(--muted);margin-top:10px;max-width:56ch}\n.okk-scope .steps{display:flex;gap:6px;flex-wrap:wrap;margin-top:18px}\n.okk-scope .steps span{font:600 11.5px var(--f-mono);padding:6px 10px;border-radius:999px;background:rgba(255,255,255,.05);color:var(--muted)}\n.okk-scope .steps b{color:var(--brand2);margin-right:6px}\n.okk-scope .cfg .acts{display:flex;flex-direction:column;gap:10px;align-items:stretch}\n.okk-scope .faq{margin-top:56px;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:32px;align-items:start}\n.okk-scope .faq h2{font-size:clamp(22px,2.8vw,32px);font-weight:700;margin-top:12px}\n.okk-scope .faq .lead{color:var(--muted);margin-top:12px;font-size:14px;max-width:40ch}\n.okk-scope .qa{display:flex;flex-direction:column;gap:8px}\n.okk-scope .qa details{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.02);transition:border-color .2s}\n.okk-scope .qa details[open]{border-color:var(--line2)}\n.okk-scope .qa summary{list-style:none;cursor:pointer;padding:16px 18px;font-weight:600;display:flex;justify-content:space-between;gap:14px;align-items:center}\n.okk-scope .qa summary::-webkit-details-marker{display:none}\n.okk-scope .qa summary::after{content:\"+\";font:500 20px var(--f-mono);color:var(--muted);transition:transform .2s;flex:none}\n.okk-scope .qa details[open] summary::after{transform:rotate(45deg)}\n.okk-scope .qa details p{padding:0 18px 16px;color:var(--muted);font-size:14px}\n@media (max-width:1020px){.okk-scope .grid.g3{grid-template-columns:repeat(2,minmax(0,1fr))}\n.okk-scope .faq{grid-template-columns:1fr}}\n@media (max-width:860px){.okk-scope .grid.g2 .card.wide{display:flex}\n.okk-scope .grid.g2 .card.wide .vis{aspect-ratio:16\/8.4;min-height:0}\n.okk-scope .grid.g2 .card.wide .body{padding:16px 8px 8px}}\n@media (max-width:720px){.okk-scope .intro{grid-template-columns:1fr}\n.okk-scope .kpis{width:100%}\n.okk-scope .kpis div{flex:1;min-width:0}\n.okk-scope .grid.g2,.okk-scope .grid.g3{grid-template-columns:1fr}\n.okk-scope .cfg{grid-template-columns:1fr}\n.okk-scope .filters{width:100%}\n.okk-scope .filters button{flex:1;padding:0 8px}}\n@media (prefers-reduced-motion:reduce){.okk-scope *{animation:none!important;transition:none!important}}\n<\/style>\n<div class=\"okk-scope\" data-okk=\"ressources\">\n<div class=\"okk\" id=\"okk\">\n  <div class=\"wrap\">\n    <section class=\"intro\">\n      <div><span class=\"eyebrow\">OK3D Lab \u00b7 Ressources<\/span>\n        <h1>Des outils gratuits pour <span class=\"c\">cr\u00e9er, tester et jouer.<\/span><\/h1>\n        <p>Huit outils imagin\u00e9s par le studio OK3D pour les designers, les artistes 3D et les marques : convertir ses fichiers, tester ou animer son logo, \u00e9clairer un produit, extraire une palette, r\u00e9viser ses raccourcis ou tester son \u0153il. Gratuits, sans inscription, et tout se passe dans ton navigateur.<\/p><\/div>\n      <div class=\"kpis\"><div><b id=\"kn\">8<\/b><span>outils<\/span><\/div><div><b>0 \u20ac<\/b><span>pour toujours<\/span><\/div><div><b>0<\/b><span>inscription<\/span><\/div><\/div>\n    <\/section>\n\n    <div class=\"filters\" role=\"group\" aria-label=\"Filtrer les ressources\">\n      <button type=\"button\" data-f=\"all\" aria-pressed=\"true\">Tout<b id=\"fa\">8<\/b><\/button>\n      <button type=\"button\" data-f=\"tools\" aria-pressed=\"false\">Outils<b id=\"ft\">5<\/b><\/button>\n      <button type=\"button\" data-f=\"games\" aria-pressed=\"false\">Jeux & d\u00e9fis<b id=\"fg\">3<\/b><\/button>\n    <\/div>\n\n    <section class=\"group\" data-g=\"tools\" aria-labelledby=\"h-tools\">\n      <div class=\"ghead\"><div><span class=\"eyebrow\">Outils pratiques<\/span><h2 id=\"h-tools\">Pour ton travail de tous les jours.<\/h2><\/div><p>Des outils concrets pour pr\u00e9parer, convertir et pr\u00e9senter tes fichiers, directement dans le navigateur.<\/p><\/div>\n      <div class=\"grid g2\" id=\"tools\"><\/div>\n    <\/section>\n\n    <section class=\"group\" data-g=\"games\" aria-labelledby=\"h-games\">\n      <div class=\"ghead\"><div><span class=\"eyebrow\">Jeux & d\u00e9fis<\/span><h2 id=\"h-games\">Pour progresser en t'amusant.<\/h2><\/div><p>Quelques minutes pour r\u00e9viser tes raccourcis, aff\u00fbter ton regard ou sculpter un objet unique. Partage ton score.<\/p><\/div>\n      <div class=\"grid g3\" id=\"games\"><\/div>\n    <\/section>\n\n    <section class=\"glass cfg\">\n      <div><span class=\"eyebrow\">Studio OK3D<\/span><h2>Envie d'aller plus loin que l'outil ?<\/h2>\n        <p>Animation 3D, packshot produit, identit\u00e9 visuelle ou site web : le configurateur t'aide \u00e0 poser les bases de ton projet en six questions, et te donne un brief pr\u00eat \u00e0 envoyer. Sans engagement.<\/p>\n        <div class=\"steps\"><span><b>01<\/b>Le besoin<\/span><span><b>02<\/b>L'usage<\/span><span><b>03<\/b>Le style<\/span><span><b>04<\/b>Le d\u00e9lai<\/span><span><b>05<\/b>Le budget<\/span><span><b>06<\/b>Le brief<\/span><\/div><\/div>\n      <div class=\"acts\"><a class=\"btn pri\" id=\"cfgbtn\" href=\"#\">Configurer mon projet \u2192<\/a><a class=\"btn gho\" id=\"projbtn\" href=\"#\">Voir les projets du studio<\/a><\/div>\n    <\/section>\n\n    <section class=\"faq\" aria-labelledby=\"h-faq\">\n      <div><span class=\"eyebrow\">Questions fr\u00e9quentes<\/span><h2 id=\"h-faq\">Bon \u00e0 savoir.<\/h2><p class=\"lead\">Tout ce qu'il faut savoir avant d'utiliser les ressources OK3D.<\/p><\/div>\n      <div class=\"qa\" id=\"qa\"><\/div>\n    <\/section>\n  <\/div>\n<\/div>\n<\/div>\n\n<script>\n(function(){\nconst OKK=document.querySelector('[data-okk=\"ressources\"]');\nif(!OKK) return;\n\n\n\/* =====================================================================\n   CONFIG : adresses des pages (\u00e0 ajuster si un slug change)\n   ===================================================================== *\/\nconst CONFIG={\n  base:\"https:\/\/www.ok3d.fr\",\n  configurateur:\"\/configurateur-projet\/\",\n  projets:\"\/projets\/\",\n  tools:{ format:\"\/convertisseur-en-ligne\/\", crash:\"\/crash-test-logo\/\", logo:\"\/logo-lab\/\", light:\"\/light-lab\/\", palette:\"\/palette-studio\/\", keystroke:\"\/keystroke\/\", oeil:\"\/oeil-designer\/\", sculpt:\"\/sculpt-lab\/\" },\n  newBadge:[\"format\"]\n};\n\nconst $=s=>OKK.querySelector(s);\nconst url=p=>\/^https?:\/.test(p)?p:CONFIG.base.replace(\/\\\/$\/,\"\")+p;\n\nconst TOOLS=[\n  {id:\"format\",g:\"tools\",c:\"#7CC4FF\",kind:\"Convertisseur\",name:\"Format Lab\",desc:\"Convertis images, SVG, PDF, vid\u00e9os, polices et mod\u00e8les 3D : JPG en PNG, FBX en GLB, MP4 en GIF\u2026 Sans aucun envoi de fichier.\",tags:[\"40+ formats\",\"FBX \u00b7 GLB \u00b7 OBJ\",\"PDF \u00b7 SVG\",\"Vid\u00e9o \u2192 GIF\"],vis:\"fmt\"},\n  {id:\"crash\",g:\"tools\",c:\"#86E2BC\",kind:\"Test de logo\",name:\"Crash Test Logo\",desc:\"Ton logo tient-il la route ? Importe-le et observe-le \u00e0 16 px, sur fond clair, sombre ou color\u00e9, sans couleur et en situation, puis repars avec ta fiche PDF.\",tags:[\"SVG \u00b7 PNG \u00b7 JPG\",\"4 \u00e9preuves\",\"Fiche PDF\"],vis:\"crash\"},\n  {id:\"logo\",g:\"tools\",c:\"#B892FF\",kind:\"Logo 3D\",name:\"Logo Lab\",desc:\"Tape ton nom ou importe ton SVG : ton logo passe en 3D en temps r\u00e9el. Mati\u00e8res, lumi\u00e8res, animation, puis export vid\u00e9o et image.\",tags:[\"SVG\",\"Vid\u00e9o 6 s\",\"16:9 \u00b7 1:1 \u00b7 9:16\"],vis:\"logo\"},\n  {id:\"light\",g:\"tools\",c:\"#FFB547\",kind:\"\u00c9clairage 3D\",name:\"Light Lab\",desc:\"Importe ton mod\u00e8le 3D et \u00e9claire-le comme en studio photo : key, fill, contre-jour, g\u00e9latines, six setups et un mode d\u00e9fi.\",tags:[\"GLB \u00b7 FBX \u00b7 OBJ \u00b7 STL\",\"6 setups\",\"Temps r\u00e9el\"],vis:\"light\"},\n  {id:\"palette\",g:\"tools\",c:\"#FF8A7A\",kind:\"Couleur\",name:\"Palette Studio\",desc:\"D\u00e9pose une photo : on extrait ses couleurs cl\u00e9s, on leur donne un nom et on compose une affiche pr\u00eate \u00e0 partager.\",tags:[\"HEX \u00b7 CSS\",\"R\u00e8gle 60\u00b730\u00b710\",\"Affiche\"],vis:\"pal\"},\n  {id:\"keystroke\",g:\"games\",c:\"#35E0A1\",kind:\"Quiz\",name:\"Keystroke\",desc:\"Le quiz des raccourcis clavier de 11 logiciels : Blender, Photoshop, Illustrator, Figma, After Effects, Cinema 4D\u2026\",tags:[\"199 raccourcis\",\"11 logiciels\",\"Points\"],vis:\"keys\"},\n  {id:\"oeil\",g:\"games\",c:\"#7CC4FF\",kind:\"Jeu de perception\",name:\"L'\u0152il du designer\",desc:\"Centre exact, cercle parfait, angle droit, nombre d'or\u2026 8 \u00e9preuves tir\u00e9es au hasard pour tester ta pr\u00e9cision visuelle.\",tags:[\"17 d\u00e9fis\",\"Score sur 100\",\"2 minutes\"],vis:\"eye\"},\n  {id:\"sculpt\",g:\"games\",c:\"#C6A8FF\",kind:\"Jouet 3D\",name:\"Sculpt Lab\",desc:\"Choisis une forme, une mati\u00e8re et sculpte un objet unique : relief, torsion, volume. Garde ta collection et exporte ton affiche.\",tags:[\"Nacre \u00b7 Chrome\",\"D\u00e9fi du jour\",\"Affiche HD\"],vis:\"sculpt\"}\n];\nconst FAQ=[\n  [\"Les ressources OK3D sont-elles vraiment gratuites ?\",\"Oui. Tous les outils sont gratuits, sans inscription et sans limite d'utilisation. Ils sont propos\u00e9s par le studio OK3D pour partager son savoir-faire en 3D, en design graphique et en web.\"],\n  [\"Mes fichiers sont-ils envoy\u00e9s sur un serveur ?\",\"Non. Les conversions, les imports de mod\u00e8les 3D et les photos restent dans ton navigateur : rien n'est t\u00e9l\u00e9vers\u00e9 ni conserv\u00e9 par OK3D. Tu peux m\u00eame utiliser les outils avec des fichiers confidentiels.\"],\n  [\"Puis-je utiliser les images et vid\u00e9os export\u00e9es pour mes projets ?\",\"Oui, ce que tu cr\u00e9es t'appartient : affiches, palettes, vid\u00e9os de logo ou fichiers convertis peuvent \u00eatre utilis\u00e9s dans tes projets personnels et professionnels.\"],\n  [\"Les outils fonctionnent-ils sur mobile ?\",\"Oui, toutes les pages s'adaptent au t\u00e9l\u00e9phone et \u00e0 la tablette. Pour les gros fichiers 3D ou vid\u00e9o, un ordinateur reste plus confortable.\"],\n  [\"Qui est derri\u00e8re ces outils ?\",\"OK3D, studio cr\u00e9atif ind\u00e9pendant bas\u00e9 \u00e0 Paris et fond\u00e9 par J\u00e9r\u00e9my Vel\u00e9 : animation 3D, visuels produit, identit\u00e9 visuelle et webdesign pour les marques.\"],\n  [\"Je veux un vrai rendu 3D ou une animation pour ma marque, comment faire ?\",\"Le configurateur de projet t'aide \u00e0 d\u00e9finir ton besoin en six questions et pr\u00e9pare un brief \u00e0 envoyer au studio. R\u00e9ponse et devis gratuits sous 24 h.\"]\n];\n\n\/* ---------- visuals ---------- *\/\nconst VIS={\n  fmt:()=>`<div class=\"v-fmt\"><div class=\"file\" style=\"--fc:#566074\"><div class=\"ln\"><i><\/i><i><\/i><i><\/i><\/div><b data-a>JPG<\/b><\/div><div class=\"flow\"><i><\/i><i><\/i><i><\/i><\/div><div class=\"file out\" style=\"--fc:#7CC4FF\"><div class=\"ln\"><i><\/i><i><\/i><i><\/i><\/div><b data-b>PNG<\/b><\/div><\/div>`,\n  logo:()=>`<div class=\"v-logo\"><div class=\"word\">OK3D<\/div><div class=\"floor\"><\/div><\/div>`,\n  light:()=>`<div class=\"v-light\" style=\"position:absolute;inset:0;display:grid;place-items:center\"><div class=\"cone\"><\/div><div class=\"sh\"><\/div><div class=\"ball\"><\/div><div class=\"lamp\"><\/div><\/div>`,\n  pal:()=>{ const c=[\"#E9D3B0\",\"#F6B38E\",\"#C0603A\",\"#1E5D6B\",\"#2B2424\"], pos=[[30,24],[70,22],[52,58],[22,78],[74,84]];\n    return `<div class=\"v-pal\"><div class=\"ph\">${pos.map((p,i)=>`<i style=\"left:calc(${p[0]}% - 7px);top:calc(${p[1]}% - 7px);background:${c[i]};animation-delay:${i*.12}s\"><\/i>`).join(\"\")}<\/div><div class=\"sws\">${c.map((x,i)=>`<span style=\"background:${x};animation-delay:${i*.12}s\"><\/span>`).join(\"\")}<\/div><\/div>` },\n  keys:()=>`<div class=\"v-keys\"><span class=\"app\" data-app>Photoshop<\/span><div class=\"keys\" data-keys><\/div><span class=\"lab\" data-lab><\/span><\/div>`,\n  eye:()=>`<div class=\"v-eye\" style=\"display:grid;place-items:center;width:100%\"><svg viewBox=\"0 0 300 180\"><g stroke=\"#1C2433\" stroke-width=\"1\">${Array.from({length:13},(_,i)=>`<line x1=\"${i*25}\" y1=\"0\" x2=\"${i*25}\" y2=\"180\"\/>`).join(\"\")}${Array.from({length:8},(_,i)=>`<line x1=\"0\" y1=\"${i*25}\" x2=\"300\" y2=\"${i*25}\"\/>`).join(\"\")}<\/g>\n    <path d=\"M70 150 L160 22 L238 140 Z\" fill=\"none\" stroke=\"#EEF2F8\" stroke-width=\"3\" stroke-linejoin=\"round\"\/><circle cx=\"156\" cy=\"104\" r=\"4\" fill=\"#35E0A1\" class=\"sc\"\/>\n    <g class=\"mk\" style=\"transform-box:fill-box\"><g transform=\"translate(156 104)\"><circle r=\"15\" fill=\"none\" stroke=\"#2E6BFF\" stroke-opacity=\".35\" stroke-width=\"2\"\/><circle r=\"8\" fill=\"#2E6BFF\"\/><\/g><\/g>\n    <g class=\"sc\"><rect x=\"184\" y=\"88\" width=\"88\" height=\"30\" rx=\"9\" fill=\"#35E0A1\"\/><text x=\"228\" y=\"108\" text-anchor=\"middle\" font-family=\"Geist Mono,monospace\" font-weight=\"700\" font-size=\"14\" fill=\"#06080C\">98 \/ 100<\/text><\/g><\/svg><\/div>`,\n  crash:()=>`<div class=\"v-crash\">${[[\"#F4F6F9\",\"#06080C\"],[\"#0B0F17\",\"#EEF2F8\"],[\"#2E6BFF\",\"#FFFFFF\"]].map(([bg,fg],i)=>`<div class=\"tile\" style=\"background:${bg};--fg:${fg};animation-delay:${i*.25}s\"><svg viewBox=\"0 0 40 40\"><circle cx=\"20\" cy=\"20\" r=\"17\" fill=\"none\" stroke=\"var(--fg)\" stroke-width=\"5\"\/><rect x=\"14\" y=\"14\" width=\"12\" height=\"12\" rx=\"2\" fill=\"var(--fg)\"\/><\/svg><b>${[\"16 px\",\"Nuit\",\"Couleur\"][i]}<\/b><i>\u2713<\/i><\/div>`).join(\"\")}<\/div>`,\n  sculpt:()=>`<div class=\"v-sculpt\" style=\"display:grid;place-items:center\"><div class=\"blob\"><\/div><\/div>`\n};\nfunction card(t){\n  const isNew=CONFIG.newBadge.includes(t.id);\n  return `<a class=\"glass card${t.id===\"format\"?\" wide\":\"\"}\" href=\"${url(CONFIG.tools[t.id])}\" style=\"--c:${t.c}\" data-id=\"${t.id}\" aria-label=\"${t.name} : ${t.kind}\">\n    <div class=\"vis\" data-vis=\"${t.vis}\">${isNew?'<span class=\"badge\">NOUVEAU<\/span>':\"\"}${VIS[t.vis]()}<\/div>\n    <div class=\"body\"><div class=\"ttl\"><div><div class=\"kind\">${t.kind}<\/div><h3>${t.name}<\/h3><\/div><span class=\"go\">Ouvrir<i>\u2192<\/i><\/span><\/div>\n      <p>${t.desc}<\/p><div class=\"tags\">${t.tags.map(x=>`<span>${x}<\/span>`).join(\"\")}<\/div><\/div><\/a>`;\n}\nfunction render(){\n  $(\"#tools\").innerHTML=TOOLS.filter(t=>t.g===\"tools\").map(card).join(\"\");\n  $(\"#games\").innerHTML=TOOLS.filter(t=>t.g===\"games\").map(card).join(\"\");\n  $(\"#qa\").innerHTML=FAQ.map(([q,a],i)=>`<details${i===0?\" open\":\"\"}><summary>${q}<\/summary><p>${a}<\/p><\/details>`).join(\"\");\n  const nT=TOOLS.filter(t=>t.g===\"tools\").length, nG=TOOLS.filter(t=>t.g===\"games\").length;\n  $(\"#kn\").textContent=$(\"#fa\").textContent=TOOLS.length; $(\"#ft\").textContent=nT; $(\"#fg\").textContent=nG;\n  $(\"#cfgbtn\").href=url(CONFIG.configurateur); $(\"#projbtn\").href=url(CONFIG.projets);\n}\n\n\/* ---------- live animations (only while visible) ---------- *\/\nconst live=new Set();\nfunction animFormat(el){\n  const P=[[\"JPG\",\"PNG\",\"#7CC4FF\"],[\"FBX\",\"GLB\",\"#35E0A1\"],[\"SVG\",\"PDF\",\"#FF8A7A\"],[\"MP4\",\"GIF\",\"#FFB547\"],[\"TTF\",\"WOFF\",\"#E9EEF6\"],[\"PSD\",\"WEBP\",\"#7CC4FF\"],[\"OBJ\",\"USDZ\",\"#35E0A1\"],[\"HEIC\",\"JPG\",\"#7CC4FF\"]];\n  const a=el.querySelector(\"[data-a]\"), b=el.querySelector(\"[data-b]\"), out=el.querySelector(\".file.out\"); let k=0;\n  return ()=>{ k=(k+1)%P.length; const [x,y,c]=P[k]; a.parentNode.classList.add(\"flip\"); b.parentNode.classList.add(\"flip\");\n    setTimeout(()=>{ a.textContent=x; b.textContent=y; out.style.setProperty(\"--fc\",c); a.parentNode.classList.remove(\"flip\"); setTimeout(()=>b.parentNode.classList.remove(\"flip\"),260) },320) };\n}\nfunction animKeys(el){\n  const S=[[\"Photoshop\",[\"Ctrl\",\"J\"],\"Dupliquer le calque\"],[\"Blender\",[\"G\"],\"D\u00e9placer\"],[\"Illustrator\",[\"Ctrl\",\"Maj\",\"O\"],\"Vectoriser le texte\"],[\"Figma\",[\"Ctrl\",\"Alt\",\"K\"],\"Cr\u00e9er un composant\"],[\"After Effects\",[\"U\"],\"Afficher les cl\u00e9s\"],[\"Blender\",[\"Maj\",\"A\"],\"Ajouter un objet\"]];\n  const K=el.querySelector(\"[data-keys]\"), L=el.querySelector(\"[data-lab]\"), A=el.querySelector(\"[data-app]\"); let k=-1;\n  return ()=>{ k=(k+1)%S.length; const [app,keys,lab]=S[k]; A.textContent=app; L.textContent=\"\";\n    K.innerHTML=keys.map((x,i)=>(i?'<span>+<\/span>':\"\")+`<span class=\"key\">${x}<\/span>`).join(\"\");\n    const ks=[...K.querySelectorAll(\".key\")]; ks.forEach((n,i)=>setTimeout(()=>n.classList.add(\"dn\"),300+i*160));\n    setTimeout(()=>{ L.textContent=\"\u2713 \"+lab },320+ks.length*160); setTimeout(()=>ks.forEach(n=>n.classList.remove(\"dn\")),1500) };\n}\nfunction animLight(el){\n  const v=el.querySelector(\".v-light\"); let t0=performance.now();\n  return now=>{ const a=((now-t0)\/1000)*.7, px=50+38*Math.cos(a), py=30+14*Math.sin(a);\n    v.style.setProperty(\"--px\",px+\"%\"); v.style.setProperty(\"--py\",py+\"%\");\n    v.style.setProperty(\"--lx\",(50+26*Math.cos(a))+\"%\"); v.style.setProperty(\"--ly\",(36+14*Math.sin(a))+\"%\"); v.style.setProperty(\"--sx\",(-28*Math.cos(a))+\"px\") };\n}\nfunction setupAnims(){\n  const reduce=window.matchMedia&&matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n  const items=[]; OKK.querySelectorAll(\"[data-vis]\").forEach(v=>{\n    const k=v.dataset.vis; if(k===\"fmt\") items.push({el:v,tick:animFormat(v),every:2200}); else if(k===\"keys\") items.push({el:v,tick:animKeys(v),every:2600}); else if(k===\"light\") items.push({el:v,tick:animLight(v),raf:true}) });\n  items.forEach(it=>{ if(it.every) it.tick(0) });\n  if(reduce) return;\n  const io=\"IntersectionObserver\" in window?new IntersectionObserver(es=>es.forEach(e=>{ const it=items.find(i=>i.el===e.target); if(it) e.isIntersecting?live.add(it):live.delete(it) })):null;\n  items.forEach(it=>io?io.observe(it.el):live.add(it));\n  let last={}; const loop=now=>{ live.forEach(it=>{ if(it.raf) it.tick(now); else if(!last[it.el.dataset.vis]||now-last[it.el.dataset.vis]>it.every){ last[it.el.dataset.vis]=now; it.tick(now) } }); requestAnimationFrame(loop) };\n  requestAnimationFrame(loop);\n}\n\n\/* ---------- filter ---------- *\/\nfunction bind(){\n  OKK.querySelectorAll(\".filters button\").forEach(b=>b.onclick=()=>{ const f=b.dataset.f;\n    OKK.querySelectorAll(\".filters button\").forEach(x=>x.setAttribute(\"aria-pressed\",x===b));\n    OKK.querySelectorAll(\".group\").forEach(g=>g.hidden=!(f===\"all\"||g.dataset.g===f)) });\n}\n\n\/* ---------- structured data (Google) ---------- *\/\nfunction jsonLD(){\n  const data=[{\"@context\":\"https:\/\/schema.org\",\"@type\":\"CollectionPage\",\"name\":\"Ressources gratuites OK3D\",\"url\":url(\"\/ressources\/\"),\"inLanguage\":\"fr-FR\",\n      \"publisher\":{\"@type\":\"Organization\",\"name\":\"OK3D\",\"url\":CONFIG.base},\n      \"mainEntity\":{\"@type\":\"ItemList\",\"itemListElement\":TOOLS.map((t,i)=>({\"@type\":\"ListItem\",\"position\":i+1,\"url\":url(CONFIG.tools[t.id]),\"name\":t.name}))}},\n    {\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":FAQ.map(([q,a])=>({\"@type\":\"Question\",\"name\":q,\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":a}}))}];\n  const s=document.createElement(\"script\"); s.type=\"application\/ld+json\"; s.textContent=JSON.stringify(data); $(\"#okk\").appendChild(s);\n}\nfunction fit(){ const cw=document.documentElement.clientWidth, p=OKK.parentElement.getBoundingClientRect(); OKK.style.setProperty('width',cw+'px','important'); OKK.style.setProperty('max-width',cw+'px','important'); OKK.style.setProperty('margin-left',(-p.left)+'px','important'); OKK.style.setProperty('margin-right','0px','important'); const h=document.querySelector('#ok3d-global-header .ok3d-header'); if(h&&getComputedStyle(h).position==='fixed') OKK.style.setProperty('--okk-header-offset',Math.round(h.getBoundingClientRect().height)+'px') }\nfit(); addEventListener('resize',fit); addEventListener('load',fit);\nrender(); bind(); setupAnims(); jsonLD();\n\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\n<\/div>\n\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>OK3D Lab \u00b7 Ressources Des outils gratuits pour cr\u00e9er, tester et jouer. Huit outils imagin\u00e9s par le studio OK3D pour les designers, les artistes 3D et les marques : convertir ses fichiers, tester ou animer son logo, \u00e9clairer un produit, extraire une palette, r\u00e9viser ses raccourcis ou tester son \u0153il. Gratuits, sans inscription, et tout [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-15741","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/pages\/15741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/comments?post=15741"}],"version-history":[{"count":10,"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/pages\/15741\/revisions"}],"predecessor-version":[{"id":15751,"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/pages\/15741\/revisions\/15751"}],"wp:attachment":[{"href":"https:\/\/www.ok3d.fr\/en\/wp-json\/wp\/v2\/media?parent=15741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}