@font-face{font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;src:url('fonts/fraunces-latin-wght-normal.woff2') format('woff2')}
@font-face{font-family:'Fraunces';font-style:italic;font-weight:100 900;font-display:swap;src:url('fonts/fraunces-latin-wght-italic.woff2') format('woff2')}
@font-face{font-family:'Instrument Sans';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/instrument-sans-latin-wght-normal.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url('fonts/jetbrains-mono-latin-wght-normal.woff2') format('woff2')}
.gzl{--accent:#7DF0C0;--bg:#0B1410;--surface:#0D1A13;--text:#E8EFE6;--line:#1e3328;--line2:#356148;--muted:#b8c8bd;--soft:#d6e1da;--ink:#06130d;--gutter:clamp(18px,4vw,72px);
--serif:'Fraunces',Georgia,'Times New Roman',serif;--sans:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
position:relative;background:var(--bg);color:var(--text)!important;font-family:var(--sans);font-size:17px;line-height:1.6;overflow-x:hidden;-webkit-text-size-adjust:100%} .gzl *,.gzl *::before,.gzl *::after{box-sizing:border-box} .gzl a{color:inherit!important;text-decoration:none} .gzl h1,.gzl h2,.gzl h3,.gzl p,.gzl ul,.gzl dl,.gzl dd,.gzl figure{margin:0;padding:0} .gzl ul{list-style:none} .gzl img,.gzl svg{max-width:100%} .gzl em{font-style:italic;color:var(--accent)!important} .gzl :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px} .gzl .wrap{width:100%;max-width:1560px;margin:0 auto;padding:0 var(--gutter)} .gzl .narrow{max-width:980px} .gzl .sec{padding:clamp(64px,10vw,128px) 0;position:relative} .gzl .sec--alt{background:var(--surface);border-block:1px solid var(--line)} .gzl .eyebrow{font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)!important;margin-bottom:14px} .gzl .h1{font-family:var(--serif);font-weight:300;font-size:clamp(40px,7vw,86px);line-height:1.04;letter-spacing:-.02em} .gzl .h2{font-family:var(--serif);font-weight:300;font-size:clamp(30px,4.6vw,56px);line-height:1.1;letter-spacing:-.015em} .gzl .lead{color:var(--soft)!important;font-size:clamp(17px,2vw,20px);max-width:960px;margin-top:18px} .gzl .head{margin-bottom:clamp(32px,5vw,56px)} .gzl .mono{font-family:var(--mono)} /* Lisibilité : les styles du builder ne doivent pas écraser les couleurs du texte */ .gzl,.gzl p,.gzl li,.gzl span,.gzl div,.gzl h1,.gzl h2,.gzl h3,.gzl h4,.gzl dt,.gzl dd,.gzl strong,.gzl b,.gzl blockquote,.gzl figcaption,.gzl small{color:var(--text)!important} .gzl a{text-decoration:none!important} .gzl p{opacity:1} /* Boutons */ .gzl .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 26px;border-radius:999px;border:1px solid transparent;font:600 15.5px/1 var(--sans);cursor:pointer;transition:transform .3s,box-shadow .3s,border-color .3s,color .3s;white-space:nowrap} .gzl .btn--p{background:linear-gradient(135deg,#16966a,#0f7a55);color:#fff!important;border-color:rgba(125,240,192,.55);text-shadow:0 1px 1px rgba(0,0,0,.25)} .gzl .btn--p:hover{transform:translateY(-2px);box-shadow:0 12px 40px -10px var(--accent);border-color:var(--accent)} .gzl .btn--g{border-color:var(--line2);color:var(--text)!important;font-weight:500} .gzl .btn--g:hover{border-color:var(--accent);color:var(--accent)!important} .gzl .btn--lg{padding:18px 34px;font-size:16.5px} /* Hero */ .gzl .hero{position:relative;min-height:min(92vh,860px);display:flex;align-items:center;overflow:hidden;border-bottom:1px solid var(--line);background:radial-gradient(ellipse 70% 60% at 70% 40%,rgba(125,240,192,.09),transparent 70%)} .gzl .hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block} .gzl .hero__in{position:relative;z-index:2;padding-block:clamp(48px,8vw,96px);pointer-events:none} .gzl .hero__in a,.gzl .hero__in .btn{pointer-events:auto} .gzl .badge{display:inline-flex;align-items:center;gap:10px;padding:8px 16px;border:1px solid var(--line2);border-radius:999px;font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;color:var(--soft)!important;background:color-mix(in srgb,var(--bg) 70%,transparent);margin-bottom:26px} .gzl .badge i{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:gzl-pulse 2.4s infinite} .gzl .hero .lead{max-width:720px} .gzl .award .lead{max-width:none} .gzl .cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px} .gzl .stats{display:flex;flex-wrap:wrap;gap:28px 48px;margin-top:clamp(36px,6vw,64px);padding-top:26px;border-top:1px solid var(--line);max-width:680px} .gzl .stat b{display:block;font-family:var(--serif);font-weight:300;font-size:clamp(28px,4vw,40px);color:var(--accent)!important;line-height:1.1} .gzl .stat span{font-size:13.5px;color:var(--muted)!important} .gzl .rise{opacity:0;transform:translateY(24px);animation:gzl-rise .9s cubic-bezier(.2,.7,.2,1) forwards} .gzl .d1{animation-delay:.1s}.gzl .d2{animation-delay:.25s}.gzl .d3{animation-delay:.4s}.gzl .d4{animation-delay:.55s}.gzl .d5{animation-delay:.7s} @keyframes gzl-rise{to{opacity:1;transform:none}} @keyframes gzl-pulse{0%{box-shadow:0 0 0 0 rgba(125,240,192,.5)}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}} /* Bandeau défilant */ .gzl .mq{border-bottom:1px solid var(--line);background:var(--surface);overflow:hidden;padding:18px 0} .gzl .mq__t{display:flex;gap:56px;width:max-content;animation:gzl-mq 38s linear infinite} .gzl .mq__t span{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)!important;white-space:nowrap} .gzl .mq__t span::before{content:"✦";color:var(--accent)!important;margin-right:56px} @keyframes gzl-mq{to{transform:translateX(-50%)}} /* Révélation */ .gzl.js .rv{opacity:0;transform:translateY(30px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)} .gzl.js .rv.in{opacity:1;transform:none} .gzl.js .rv.in.s1{transition-delay:.08s}.gzl.js .rv.in.s2{transition-delay:.16s}.gzl.js .rv.in.s3{transition-delay:.24s} /* Cartes */ .gzl .grid{display:grid;gap:22px;grid-template-columns:repeat(4,minmax(0,1fr))} .gzl .card{position:relative;display:flex;flex-direction:column;gap:14px;padding:26px;background:var(--surface);border:1px solid var(--line);border-radius:26px;overflow:hidden;transition:transform .45s cubic-bezier(.2,.7,.2,1),border-color .35s,box-shadow .45s} .gzl .sec--alt .card{background:var(--bg)} .gzl .card::before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(125,240,192,.14),transparent 45%);opacity:0;transition:opacity .35s;pointer-events:none} .gzl .card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 30px 70px -30px rgba(125,240,192,.35)} .gzl .card:hover::before{opacity:1} .gzl .card__ic{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)!important} .gzl .card__tag{position:absolute;top:20px;right:20px;padding:4px 12px;border-radius:999px;background:#0f7a55;color:#fff!important;font-size:11.5px;font-weight:700;letter-spacing:.04em} .gzl .card__tag--soon{background:transparent;border:1px solid var(--line2);color:var(--soft)!important} .gzl .card h3{font-family:var(--serif);font-weight:400;font-size:23px;line-height:1.2;hyphens:manual;-webkit-hyphens:manual;overflow-wrap:normal} .gzl .card__sub{font-family:var(--mono);font-size:12.5px;color:var(--muted)!important} .gzl .card p{color:var(--muted)!important;font-size:15px;flex:1} .gzl .card__more{color:var(--accent)!important;font-size:14.5px;font-weight:600;display:inline-flex;gap:8px;align-items:center} .gzl .card__more::after{content:"→";transition:transform .3s} .gzl .card__links{display:flex;flex-wrap:wrap;gap:0 22px} .gzl .card__more--off{color:var(--muted)!important;font-weight:500}.gzl .card__more--off::after{content:none} .gzl .card:hover .card__more::after{transform:translateX(6px)} .gzl .note{margin-top:30px;font-size:13.5px;color:var(--muted)!important;max-width:820px} .gzl .grid--3{grid-template-columns:repeat(3,minmax(0,1fr))} .gzl .grid--2{grid-template-columns:repeat(2,minmax(0,1fr))} /* Récit */ .gzl .story{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);gap:clamp(24px,5vw,64px);align-items:start} .gzl .tabs{display:flex;flex-direction:column;gap:10px} .gzl .tab{display:flex;gap:16px;align-items:center;text-align:left;padding:18px 20px;border-radius:18px;border:1px solid var(--line);background:transparent;color:var(--muted)!important;font:500 17px/1.3 var(--sans);cursor:pointer;transition:all .35s} .gzl .tab:hover{border-color:var(--line2);color:var(--text)!important} .gzl .tab span{font-family:var(--mono);font-size:13px;color:var(--dim,#7d9186)!important} .gzl .tab[aria-selected=true]{border-color:var(--accent);color:var(--text)!important;background:color-mix(in srgb,var(--accent) 7%,transparent)} .gzl .tab[aria-selected=true] span{color:var(--accent)!important} .gzl .panel{position:relative;padding:clamp(26px,4vw,48px);border:1px solid var(--line);border-radius:28px;background:var(--bg);overflow:hidden;min-height:320px;animation:gzl-rise .6s both} .gzl .panel[hidden]{display:none} .gzl .panel svg.hy{position:absolute;right:-20px;bottom:-10px;width:70%;color:var(--accent)!important;opacity:.2;pointer-events:none} .gzl .panel .path{stroke-dasharray:900;stroke-dashoffset:900;animation:gzl-draw 2.4s .1s ease forwards} @keyframes gzl-draw{to{stroke-dashoffset:0}} .gzl .panel h3{font-family:var(--serif);font-weight:300;font-size:clamp(28px,3.4vw,40px);margin:6px 0 14px;position:relative} .gzl .panel p{color:var(--soft)!important;max-width:520px;position:relative} .gzl .chip{display:inline-block;margin-top:20px;padding:8px 16px;border-radius:999px;border:1px solid var(--line2);font-family:var(--mono);font-size:12.5px;color:var(--accent)!important;position:relative} .gzl .band{display:flex;gap:clamp(20px,4vw,48px);align-items:center;margin-top:clamp(36px,6vw,64px);padding:clamp(24px,4vw,40px);border:1px solid var(--line2);border-radius:28px;background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%)} .gzl .band b{font-family:var(--serif);font-weight:300;font-size:clamp(48px,8vw,92px);line-height:1;color:var(--accent)!important} .gzl .band h3{font-family:var(--serif);font-weight:400;font-size:24px;margin-bottom:6px} .gzl .band p{color:var(--muted)!important;font-size:15.5px} /* Pourquoi */ .gzl .why{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:28px;overflow:hidden} .gzl .why>div{padding:clamp(24px,3vw,38px);border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .35s} .gzl .why>div:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)} .gzl .why>div:nth-child(3n){border-right:0}.gzl .why>div:nth-last-child(-n+3){border-bottom:0} .gzl .why b{font-family:var(--mono);font-size:13px;color:var(--accent)!important;display:block;margin-bottom:12px} .gzl .why h3{font-family:var(--serif);font-weight:400;font-size:22px;margin-bottom:8px} .gzl .why p{color:var(--muted)!important;font-size:15.5px;max-width:none} /* Récompense */ .gzl .award{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center} .gzl .trophy{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;max-width:420px;margin:0 auto;width:100%;border-radius:50%;border:1px solid var(--line2);background:radial-gradient(circle,rgba(125,240,192,.14),transparent 65%)} .gzl .trophy::before,.gzl .trophy::after{content:"";position:absolute;inset:8%;border-radius:50%;border:1px dashed var(--line2);animation:gzl-spin 40s linear infinite} .gzl .trophy::after{inset:20%;animation-direction:reverse;animation-duration:30s} @keyframes gzl-spin{to{transform:rotate(360deg)}} .gzl .trophy div{text-align:center;position:relative;z-index:1;padding:20px} .gzl .trophy svg{color:var(--accent)!important;margin-bottom:10px} .gzl .trophy strong{display:block;font-family:var(--serif);font-weight:300;font-size:clamp(34px,5vw,52px);line-height:1} .gzl .trophy span{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--muted)!important;margin-top:8px;text-transform:uppercase} .gzl .facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:30px} .gzl .fact{padding:20px;border:1px solid var(--line);border-radius:20px;background:var(--surface)} .gzl .fact b{display:block;font-family:var(--serif);font-weight:300;font-size:32px;color:var(--accent)!important;line-height:1.1} .gzl .fact span{font-size:13.5px;color:var(--muted)!important} .gzl .ph{border:1px dashed var(--line2);border-radius:20px;padding:20px;color:var(--muted)!important;font-size:14.5px} /* Liste des services */ .gzl .svc{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px} .gzl .svc span{padding:5px 12px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:12px;color:var(--soft)!important} /* Contact */ .gzl .contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:start} .gzl .cl{display:grid;gap:14px;margin-top:26px} .gzl .cl a,.gzl .cl p{display:flex;gap:14px;align-items:flex-start;color:var(--soft)!important} .gzl .cl a:hover{color:var(--accent)!important} .gzl .cl svg{flex:none;color:var(--accent)!important;margin-top:3px} .gzl .map{position:relative;aspect-ratio:4/3;border:1px solid var(--line);border-radius:28px;overflow:hidden;background:var(--surface);display:flex;align-items:center;justify-content:center} .gzl .map svg{position:absolute;inset:0;width:100%;height:100%;color:var(--accent)!important;opacity:.35} .gzl .map div{position:relative;text-align:center;padding:24px} .gzl .map b{display:block;font-family:var(--serif);font-weight:300;font-size:34px} .gzl .map span{color:var(--muted)!important;font-size:14.5px} .gzl .pin{width:14px;height:14px;border-radius:50%;background:var(--accent);margin:0 auto 14px;box-shadow:0 0 0 0 var(--accent);animation:gzl-pulse 2s infinite} /* CTA final */ .gzl .final{text-align:center;background:radial-gradient(ellipse at center,rgba(125,240,192,.1),transparent 70%)} .gzl .final .cta{justify-content:center} .gzl .final .lead{margin-inline:auto} /* Pied de page */ .gzl .ft{border-top:1px solid var(--line);padding:clamp(40px,6vw,72px) 0 28px;background:#08100c} .gzl .ft__g{display:flex;flex-wrap:wrap;gap:36px 56px;justify-content:space-between} .gzl .ft__g>div{min-width:150px} .gzl .ft h4{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)!important;margin:0 0 14px;font-weight:500} .gzl .ft li{margin-bottom:8px;color:var(--muted)!important;font-size:15px} .gzl .ft li a:hover{color:var(--text)!important} .gzl .ft__brand{max-width:340px;color:var(--muted)!important;font-size:15px} .gzl .ft__legal{margin-top:40px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted)!important;font-size:12.5px;line-height:1.6} /* Animation de repli CSS (si le builder bloque les scripts) */ .gzl .fb{position:absolute;inset:0;overflow:hidden;pointer-events:none} .gzl .fb svg{position:absolute;inset:0;width:100%;height:100%;color:var(--accent)!important;opacity:.5} .gzl .fb .hp{fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-dasharray:1400;stroke-dashoffset:1400;animation:gzl-draw 4s ease forwards} .gzl .fb .hp:nth-child(2){animation-delay:.6s}.gzl .fb .hp:nth-child(3){animation-delay:1.2s}.gzl .fb .hp:nth-child(4){animation-delay:1.8s} .gzl .fb .hn{fill:currentColor;animation:gzl-pulse 3s infinite} .gzl .fb i{position:absolute;bottom:-12px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);opacity:0;animation:gzl-spore var(--d) var(--dl) linear infinite} @keyframes gzl-spore{0%{opacity:0;transform:translate(0,0)}12%{opacity:.9}50%{transform:translate(18px,-45vh)}88%{opacity:.7}100%{opacity:0;transform:translate(-14px,-95vh)}} .gzl.js .fb{display:none} @media(prefers-reduced-motion:reduce){.gzl .fb i,.gzl .fb .hn{animation:none}.gzl .fb .hp{animation:none;stroke-dashoffset:0}} /* Responsive */ @media(max-width:1100px){.gzl .grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gzl .grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}} @media(max-width:860px){
.gzl .story,.gzl .award,.gzl .contact{grid-template-columns:1fr}
.gzl .tabs{flex-direction:row;overflow-x:auto;padding-bottom:6px;scrollbar-width:none;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter)}
.gzl .tabs::-webkit-scrollbar{display:none}
.gzl .tab{flex:none;padding:14px 18px;font-size:15.5px}
.gzl .why{grid-template-columns:repeat(2,minmax(0,1fr))}
.gzl .why>div{border-right:1px solid var(--line)!important;border-bottom:1px solid var(--line)!important}
.gzl .why>div:nth-child(2n){border-right:0!important}.gzl .why>div:nth-last-child(-n+2){border-bottom:0!important} } @media(max-width:640px){
.gzl{font-size:16.5px}
.gzl .grid,.gzl .grid--3,.gzl .grid--2{grid-template-columns:1fr}
.gzl .why{grid-template-columns:1fr}.gzl .why>div{border-right:0!important;border-bottom:1px solid var(--line)!important}.gzl .why>div:last-child{border-bottom:0!important}
.gzl .hero{min-height:0}
.gzl .cta{flex-direction:column}.gzl .cta .btn{width:100%}
.gzl .band{flex-direction:column;align-items:flex-start}
.gzl .facts{grid-template-columns:1fr 1fr}
.gzl .stats{gap:22px 32px} } /* Optimisation mobile */ .gzl{width:100%;max-width:100vw;overflow-x:hidden;overflow-x:clip} .gzl section,.gzl [id]{scroll-margin-top:84px} .gzl .hero{min-height:min(92vh,860px);min-height:min(92svh,860px);touch-action:pan-y} .gzl .card__more,.gzl .ft li a{display:inline-flex;align-items:center;min-height:44px} .gzl .h1,.gzl .h2,.gzl h3,.gzl p,.gzl .lead{overflow-wrap:break-word;hyphens:manual;-webkit-hyphens:manual} .gzl .btn{white-space:normal;text-align:center} @media(max-width:640px){
.gzl .sec{padding:56px 0}
.gzl .hero__in{padding-block:44px 40px}
.gzl .badge{font-size:11.5px;padding:7px 14px;letter-spacing:.03em}
.gzl .card{padding:22px;border-radius:22px}
.gzl .band,.gzl .panel,.gzl .safety{border-radius:22px}
.gzl .tab{min-height:48px}
.gzl .stats{gap:18px 26px}
.gzl .map{aspect-ratio:16/11;border-radius:22px}
.gzl .trophy{max-width:300px}
.gzl .ft__g{gap:28px}.gzl .ft__g>div{min-width:130px;flex:1 1 130px} } @media(max-width:420px){
.gzl{font-size:16px}
.gzl .h1{font-size:clamp(32px,10.4vw,44px)}
.gzl .h2{font-size:clamp(27px,8.4vw,36px)}
.gzl .facts{grid-template-columns:1fr}
.gzl .stat b{font-size:26px} } @media(hover:none){.gzl .card:hover{transform:none;box-shadow:none}.gzl .card:hover::before{opacity:0}} @media(prefers-reduced-motion:reduce){
.gzl .rise,.gzl.js .rv{opacity:1!important;transform:none!important;animation:none!important;transition:none!important}
.gzl .mq__t,.gzl .trophy::before,.gzl .trophy::after,.gzl .badge i,.gzl .pin,.gzl .panel .path{animation:none!important}
.gzl .panel .path{stroke-dashoffset:0} }
100of100 Lauréat du Science & Startups Award 2025
Sciences de la vie à Kronach :
champignons médicinaux
& culture de tissus
Récolte sauvage, extraction par ultrasons et analyses en laboratoire — par une start-up de Haute-Franconie qui rend la science concrète.
Boutique
En savoir plus
100of100
Lauréat du prix 2025
Kronach
Fabriqué en Bavière
COA
Analyse par lot
Récolte sauvage en Allemagne
Extraction par ultrasons
Sporophores, pas de mycélium
Éthanol + eau chaude
Fabriqué en Bavière
Analysé en laboratoire
Produits
La forêt pour la croissance,
le laboratoire pour l’extraction
.
Extraits de champignons médicinaux, produits chimiques de laboratoire, amendements pour les sols et bien plus — directement du fabricant, à Kronach.
Meilleures ventes
Extrait d’amadouvier
Fomes fomentarius
Extrait liquide de champignon médicinal issu de sporophores récoltés à l’état sauvage. Ultrasons + éthanol + eau chaude.
En savoir plus
Voir en boutique
Extrait de polypore du bouleau
Fomitopsis betulina
Extrait liquide de champignon médicinal issu du polypore du bouleau, avec le même procédé d’extraction que l’amadouvier.
En savoir plus
Voir en boutique
Trichoderma harzianum
Amendement pour les sols
Des spores vivantes pour la zone racinaire — 12 millions de spores par gramme. Amendement pour les sols, pas un produit phytopharmaceutique.
En savoir plus
Bleu de méthylène
Produit chimique de laboratoire · Spécification USP
Produit chimique de laboratoire de haute pureté et colorant textile. Ne pas ingérer.
Voir en boutique
Cannabis & accessoires
Graines · analyses · engrais
En toute connaissance de cause et de manière responsable, dans le respect de la loi. Veuillez vérifier la réglementation en vigueur dans votre pays.
Voir en boutique
Huile d’olive sicilienne
Finazzo · Passione per la natura
Deux variétés de Sicile, cueillies à la main et extraites à froid. 0,75 l chacune.
Voir en boutique
Études & recherche
Sources scientifiques
Informations, études et sources sur les champignons médicinaux et notre travail en laboratoire.
En savoir plus
Les extraits de champignons médicinaux peuvent être des compléments alimentaires et ne remplacent pas une alimentation équilibrée et variée. La dose journalière recommandée ne doit pas être dépassée. Le bleu de méthylène est un produit chimique de laboratoire et n’est pas destiné à être ingéré.
De la forêt au flacon
Cinq étapes.
Rien
de plus.
01
Récolte sauvage
02
Ultrasons
03
Éthanol + eau chaude
04
Contrôle en laboratoire
05
Mise en flacon
Étape 1 / 5
Récolte sauvage
Nous récoltons l’amadouvier et le polypore du bouleau à la main dans les forêts allemandes. Seuls les sporophores sont utilisés, jamais le mycélium.
Sporophores uniquement
Étape 2 / 5
Ultrasons
Les structures cellulaires résistantes des champignons sont désagrégées par ultrasons — une méthode moderne et douce issue des pratiques de laboratoire.
Extraction par ultrasons
Étape 3 / 5
Éthanol + eau chaude
La double extraction à l’éthanol et à l’eau chaude permet d’extraire les composants solubles dans l’eau et dans l’alcool. Les deux champignons sont traités de la même manière.
Ultrasons + éthanol + eau chaude
Étape 4 / 5
Contrôle en laboratoire
Chaque lot est contrôlé en laboratoire. Les résultats sont consignés dans un certificat d’analyse (COA).
COA pour chaque lot
Étape 5 / 5
Mise en flacon
Les produits sont conditionnés et expédiés depuis Kronach, dans un emballage discret et avec un numéro de suivi.
Fabriqué en Bavière
5 000
ans de tradition
Des archéologues ont découvert des amadouviers et des polypores du bouleau auprès de la momie des glaces Ötzi. L’utilisation de ces deux champignons s’appuie sur des savoirs empiriques transmis au fil du temps. Nous associons cette tradition à l’extraction moderne par ultrasons, sans allégations thérapeutiques.
Prestations
Un laboratoire
au service
de vos projets.
Analyses et culture de plantes de niveau scientifique, directement en Haute-Franconie.
Analyses du cannabis
Caractérisation et contrôle de vos échantillons à l’aide de méthodes de mesure modernes.
NIR
HPLC
GC-MS
Terpènes
Pesticides
Métaux lourds
Demander un devis
Culture tissulaire in vitro
Multiplication de plantes en culture tissulaire stérile — propre, homogène et planifiable.
Micropropagation
Sans agents pathogènes
Préservation des variétés
Demander un devis
Contrôle qualité
Nos propres lots sont contrôlés pour leurs composants, les métaux lourds, la microbiologie et les résidus.
Composants
Métaux lourds
Microbiologie
Résidus
Demander un devis
Pourquoi GrayZone Labs
Six raisons
de nous faire confiance
.
01
Excellence scientifique
Des méthodes de laboratoire, pas des suppositions : mesurer, contrôler, documenter.
02
Ancrage local
Fabriqué à Kronach, en Haute-Franconie — des circuits courts et une maîtrise totale.
03
Transparence maximale
Des analyses de lots consultables via un lien ou un QR code.
04
Une qualité primée
Lauréat du 100of100 Science & Startups Award 2025.
05
Sporophores uniquement
Nos extraits de champignons sont issus de sporophores, et non de mycélium cultivé sur des céréales.
06
Service client
Conseils personnalisés, emballage discret et expédition avec numéro de suivi.
100of100
Science & Startups
Award 2025
Science
Une innovation
récompensée.
Le 100of100 Award récompense l’excellence scientifique et l’innovation. Pour nous, c’est l’engagement d’étayer chaque affirmation par des données.
2025
Lauréat du Science & Startups Award
100 %
des lots contrôlés en laboratoire
Consulter les sources scientifiques
Adresse & contact
Ancrés à
Kronach
, en Haute-Franconie.
Conseils et visites du laboratoire sur rendez-vous. Écrivez-nous ou appelez-nous.
Friesener Straße 13
96317 Kronach, Haute-Franconie, Bavière
grayzonelabs@proton.me
+49 174 1524416
Itinéraire & horaires d’ouverture →
Kronach
Haute-Franconie · Bavière
Prêt à découvrir
la qualité de notre
laboratoire
?
Découvrez nos extraits, produits chimiques de laboratoire et bien plus en boutique — ou contactez-nous directement.
Accéder à la boutique
Demander un devis
GrayZone
Labs
Sciences de la vie à Kronach : champignons médicinaux, produits chimiques de laboratoire et culture de tissus. Lauréat du 100of100 Science & Startups Award 2025.
Pages
Produits
Prestations
Science
Contact
Études & recherche
Boutique
Accéder à la boutique
Extraits de champignons médicinaux
Cannabis & accessoires
Informations légales
Mentions légales
Politique de confidentialité
Conditions générales de vente
© GrayZone Labs · Anja Finazzo · Friesener Straße 13 · 96317 Kronach. Les extraits de champignons médicinaux peuvent être des compléments alimentaires et ne remplacent pas une alimentation équilibrée et variée. Le bleu de méthylène est un produit chimique de laboratoire et n’est pas destiné à être ingéré. Trichoderma est un amendement pour les sols, pas un produit phytopharmaceutique. Certification BIO en cours.
{"@context":"https://schema.org","@type":"Organization","name":"Grayzone Labs","url":"https://www.grayzonelabs.net","foundingDate":"2022","founder":{"@type":"Person","name":"Luca Finazzo","jobTitle":"Gründer & Geschäftsführer (M.Sc.)"},"address":{"@type":"PostalAddress","streetAddress":"Friesener Straße 13","addressLocality":"Kronach","addressRegion":"Oberfranken, Bayern","postalCode":"96317","addressCountry":"DE"},"geo":{"@type":"GeoCoordinates","latitude":"50.2367","longitude":"11.3295"},"contactPoint":{"@type":"ContactPoint","telephone":"+491741524416","email":"grayzonelabs@proton.me"},"award":"100of100 Science and Startups Award 2025"}
(function(){
'use strict';
var root=document.getElementById('gzl-root'); if(!root||root.getAttribute('data-gzl-init')) return; root.setAttribute('data-gzl-init','1');
root.classList.add('js');
var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches;
function $(s,r){return (r||root).querySelector(s)} function $$(s,r){return Array.prototype.slice.call((r||root).querySelectorAll(s))}
function clamp(v,a,b){return Math.min(b,Math.max(a,v))}
/* Dupliquer le bandeau défilant */
var mq=$('[data-mq]'); if(mq){mq.innerHTML+=mq.innerHTML}
/* Défilement fluide vers les sections (remplace le gestionnaire d’ancre global de l’ancienne page) */
$$('a[href^="#"]').forEach(function(a){
var h=a.getAttribute('href'); if(!h||h.length<2) return;
a.addEventListener('click',function(e){var t=document.getElementById(h.slice(1)); if(t){e.preventDefault();t.scrollIntoView({behavior:reduce?'auto':'smooth',block:'start'})}});
});
/* Apparition au défilement */
var rv=$$('.rv');
if('IntersectionObserver' in window){
var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('in');io.unobserve(e.target)}})},{threshold:.12,rootMargin:'0px 0px -6% 0px'});
rv.forEach(function(el){io.observe(el)});
} else { rv.forEach(function(el){el.classList.add('in')}) }
/* Lueur des cartes suivant le curseur */
$$('[data-glow]').forEach(function(c){
c.addEventListener('pointermove',function(e){var r=c.getBoundingClientRect();c.style.setProperty('--mx',(e.clientX-r.left)+'px');c.style.setProperty('--my',(e.clientY-r.top)+'px')},{passive:true});
});
/* Onglets du récit */
var st=$('[data-story]');
if(st){
var tabs=$$('[role=tab]',st),panels=$$('[role=tabpanel]',st);
function sel(i,focus){
tabs.forEach(function(t,k){t.setAttribute('aria-selected',k===i?'true':'false');t.tabIndex=k===i?0:-1});
panels.forEach(function(p,k){p.hidden=k!==i});
if(focus)tabs[i].focus();
var t=tabs[i]; if(t&&t.scrollIntoView&&window.innerWidth<=860){var par=t.parentNode;par.scrollTo({left:t.offsetLeft-par.offsetLeft-20,behavior:reduce?'auto':'smooth'})}
}
tabs.forEach(function(t,i){
t.addEventListener('click',function(){sel(i)});
t.addEventListener('keydown',function(e){
var n=null;
if(e.key==='ArrowRight'||e.key==='ArrowDown')n=(i+1)%tabs.length;
if(e.key==='ArrowLeft'||e.key==='ArrowUp')n=(i-1+tabs.length)%tabs.length;
if(n!==null){e.preventDefault();sel(n,true)}
});
});
}
/* Hero : réseau de mycélium réactif + spores */
var hero=$('[data-hero]'),cv=hero&&$('canvas',hero);
if(cv&&cv.getContext){
var ctx=cv.getContext('2d'),W=0,H=0,dpr=1,nodes=[],spores=[],reach=240,t0=performance.now(),last=t0,running=false,visible=true;
var cur={x:0,y:0,tx:0,ty:0,on:false},touched=false,release;
function rnd(a,b){return a+Math.random()*(b-a)}
function makeSpore(init){return{x:rnd(0,W),y:init?rnd(0,H):H+10,v:rnd(10,32),sw:rnd(.6,1.6),ph:rnd(0,6.28),s:rnd(1,2.6),life:init?Math.random():0,ls:rnd(.05,.12)}}
function resize(){
var r=hero.getBoundingClientRect();W=Math.max(1,r.width);H=Math.max(1,r.height);
dpr=Math.min(2,window.devicePixelRatio||1);cv.width=W*dpr;cv.height=H*dpr;ctx.setTransform(dpr,0,0,dpr,0,0);
var n=clamp(Math.round(W*H/20000),22,W<640?30:64);
nodes=[];for(var i=0;i
var sc=reduce?0:(W<640?16:30);spores=[];for(var j=0;j
reach=W<640?170:260;draw(0,0);
}
function draw(t,dt){
ctx.clearRect(0,0,W,H);
var grow=reduce?1:clamp(t/2.4,0,1);grow=1-Math.pow(1-grow,3);
var cx=cur.x,cy=cur.y,active=cur.on||(!touched&&!reduce);
if(!touched&&!reduce){cur.tx=W*(.5+.32*Math.sin(t*.35));cur.ty=H*(.5+.28*Math.sin(t*.52+1));}
cur.x+=(cur.tx-cur.x)*Math.min(1,dt*6);cur.y+=(cur.ty-cur.y)*Math.min(1,dt*6);
var i,j,a,b,d,dx,dy;
for(i=0;i
a=nodes[i];
if(!reduce){a.x+=a.vx;a.y+=a.vy;if(a.x<-20)a.x=W+20;if(a.x>W+20)a.x=-20;if(a.y<-20)a.y=H+20;if(a.y>H+20)a.y=-20;}
a.ox=a.x;a.oy=a.y;
if(active){dx=cur.x-a.x;dy=cur.y-a.y;d=Math.sqrt(dx*dx+dy*dy);if(d1){var f=(1-d/reach)*(touched?26:14);a.ox=a.x+dx/d*f;a.oy=a.y+dy/d*f}}
}
ctx.lineCap='round';
var link=W<640?120:150;
for(i=0;i
for(j=i+1;j
if(d }
}
for(i=0;iif(active){dx=cur.x-a.ox;dy=cur.y-a.oy;d=Math.sqrt(dx*dx+dy*dy);if(d
ctx.fillStyle='rgba(125,240,192,'+((.35+near*.65)*grow).toFixed(3)+')';
ctx.shadowColor='rgba(125,240,192,.9)';ctx.shadowBlur=near*14;
ctx.beginPath();ctx.arc(a.ox,a.oy,a.r+near*2.2,0,6.283);ctx.fill();
}
ctx.shadowBlur=0;
if(active&&grow>.6){
var cand=[];for(i=0;i
cand.sort(function(p,q){return p[0]-q[0]});
for(i=0;ictx.strokeStyle='rgba(125,240,192,'+(al2*.85).toFixed(3)+')';ctx.lineWidth=1.3;ctx.shadowColor='rgba(125,240,192,.8)';ctx.shadowBlur=8;
ctx.beginPath();ctx.moveTo(cur.x,cur.y);
var mx=(cur.x+a.ox)/2+Math.sin(t*2+i)*12,my=(cur.y+a.oy)/2+Math.cos(t*2+i)*12;
ctx.quadraticCurveTo(mx,my,a.ox,a.oy);ctx.stroke();
}
ctx.shadowBlur=0;
var g=ctx.createRadialGradient(cur.x,cur.y,0,cur.x,cur.y,46);g.addColorStop(0,'rgba(125,240,192,.28)');g.addColorStop(1,'rgba(125,240,192,0)');
ctx.fillStyle=g;ctx.beginPath();ctx.arc(cur.x,cur.y,46,0,6.283);ctx.fill();
}
for(i=0;is.y-=s.v*dt;s.x+=Math.sin(t*s.sw+s.ph)*.35;s.life+=s.ls*dt;
if(s.y<-10||s.life>1){spores[i]=makeSpore(false);continue}
var sa=Math.sin(s.life*Math.PI)*.9;if(sa<.02)continue;
ctx.fillStyle='rgba(125,240,192,'+sa.toFixed(3)+')';ctx.shadowColor='rgba(125,240,192,.9)';ctx.shadowBlur=s.s*4;
ctx.beginPath();ctx.arc(s.x,s.y,s.s,0,6.283);ctx.fill();
}
ctx.shadowBlur=0;
}
function frame(now){
if(!visible||document.hidden){running=false;return}
var dt=Math.min(.05,(now-last)/1000);last=now;draw((now-t0)/1000,dt);requestAnimationFrame(frame);
}
function start(){if(running||reduce)return;running=true;last=performance.now();requestAnimationFrame(frame)}
function setP(e){var r=hero.getBoundingClientRect();cur.tx=e.clientX-r.left;cur.ty=e.clientY-r.top;if(!cur.on){cur.x=cur.tx;cur.y=cur.ty}cur.on=true;touched=true;clearTimeout(release)}
function leave(e){clearTimeout(release);if(e&&e.pointerType==='touch'){release=setTimeout(function(){cur.on=false},900)}else{cur.on=false}}
if(!reduce){hero.addEventListener('pointermove',setP,{passive:true});hero.addEventListener('pointerdown',setP,{passive:true});hero.addEventListener('pointerleave',leave,{passive:true});hero.addEventListener('pointerup',leave,{passive:true});hero.addEventListener('pointercancel',leave,{passive:true})}
if('ResizeObserver' in window){new ResizeObserver(resize).observe(hero)}else{window.addEventListener('resize',resize)}
if('IntersectionObserver' in window){new IntersectionObserver(function(es){visible=es[0].isIntersecting;if(visible)start()},{threshold:0}).observe(hero)}
document.addEventListener('visibilitychange',function(){if(!document.hidden)start()});
resize();start();
} })();
--serif:'Fraunces',Georgia,'Times New Roman',serif;--sans:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;--mono:'JetBrains Mono',ui-monospace,Menlo,monospace;
position:relative;background:var(--bg);color:var(--text)!important;font-family:var(--sans);font-size:17px;line-height:1.6;overflow-x:hidden;-webkit-text-size-adjust:100%} .gzl *,.gzl *::before,.gzl *::after{box-sizing:border-box} .gzl a{color:inherit!important;text-decoration:none} .gzl h1,.gzl h2,.gzl h3,.gzl p,.gzl ul,.gzl dl,.gzl dd,.gzl figure{margin:0;padding:0} .gzl ul{list-style:none} .gzl img,.gzl svg{max-width:100%} .gzl em{font-style:italic;color:var(--accent)!important} .gzl :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px} .gzl .wrap{width:100%;max-width:1560px;margin:0 auto;padding:0 var(--gutter)} .gzl .narrow{max-width:980px} .gzl .sec{padding:clamp(64px,10vw,128px) 0;position:relative} .gzl .sec--alt{background:var(--surface);border-block:1px solid var(--line)} .gzl .eyebrow{font-family:var(--mono);font-size:12.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)!important;margin-bottom:14px} .gzl .h1{font-family:var(--serif);font-weight:300;font-size:clamp(40px,7vw,86px);line-height:1.04;letter-spacing:-.02em} .gzl .h2{font-family:var(--serif);font-weight:300;font-size:clamp(30px,4.6vw,56px);line-height:1.1;letter-spacing:-.015em} .gzl .lead{color:var(--soft)!important;font-size:clamp(17px,2vw,20px);max-width:960px;margin-top:18px} .gzl .head{margin-bottom:clamp(32px,5vw,56px)} .gzl .mono{font-family:var(--mono)} /* Lisibilité : les styles du builder ne doivent pas écraser les couleurs du texte */ .gzl,.gzl p,.gzl li,.gzl span,.gzl div,.gzl h1,.gzl h2,.gzl h3,.gzl h4,.gzl dt,.gzl dd,.gzl strong,.gzl b,.gzl blockquote,.gzl figcaption,.gzl small{color:var(--text)!important} .gzl a{text-decoration:none!important} .gzl p{opacity:1} /* Boutons */ .gzl .btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:14px 26px;border-radius:999px;border:1px solid transparent;font:600 15.5px/1 var(--sans);cursor:pointer;transition:transform .3s,box-shadow .3s,border-color .3s,color .3s;white-space:nowrap} .gzl .btn--p{background:linear-gradient(135deg,#16966a,#0f7a55);color:#fff!important;border-color:rgba(125,240,192,.55);text-shadow:0 1px 1px rgba(0,0,0,.25)} .gzl .btn--p:hover{transform:translateY(-2px);box-shadow:0 12px 40px -10px var(--accent);border-color:var(--accent)} .gzl .btn--g{border-color:var(--line2);color:var(--text)!important;font-weight:500} .gzl .btn--g:hover{border-color:var(--accent);color:var(--accent)!important} .gzl .btn--lg{padding:18px 34px;font-size:16.5px} /* Hero */ .gzl .hero{position:relative;min-height:min(92vh,860px);display:flex;align-items:center;overflow:hidden;border-bottom:1px solid var(--line);background:radial-gradient(ellipse 70% 60% at 70% 40%,rgba(125,240,192,.09),transparent 70%)} .gzl .hero canvas{position:absolute;inset:0;width:100%;height:100%;display:block} .gzl .hero__in{position:relative;z-index:2;padding-block:clamp(48px,8vw,96px);pointer-events:none} .gzl .hero__in a,.gzl .hero__in .btn{pointer-events:auto} .gzl .badge{display:inline-flex;align-items:center;gap:10px;padding:8px 16px;border:1px solid var(--line2);border-radius:999px;font-family:var(--mono);font-size:12.5px;letter-spacing:.06em;color:var(--soft)!important;background:color-mix(in srgb,var(--bg) 70%,transparent);margin-bottom:26px} .gzl .badge i{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:gzl-pulse 2.4s infinite} .gzl .hero .lead{max-width:720px} .gzl .award .lead{max-width:none} .gzl .cta{display:flex;flex-wrap:wrap;gap:14px;margin-top:34px} .gzl .stats{display:flex;flex-wrap:wrap;gap:28px 48px;margin-top:clamp(36px,6vw,64px);padding-top:26px;border-top:1px solid var(--line);max-width:680px} .gzl .stat b{display:block;font-family:var(--serif);font-weight:300;font-size:clamp(28px,4vw,40px);color:var(--accent)!important;line-height:1.1} .gzl .stat span{font-size:13.5px;color:var(--muted)!important} .gzl .rise{opacity:0;transform:translateY(24px);animation:gzl-rise .9s cubic-bezier(.2,.7,.2,1) forwards} .gzl .d1{animation-delay:.1s}.gzl .d2{animation-delay:.25s}.gzl .d3{animation-delay:.4s}.gzl .d4{animation-delay:.55s}.gzl .d5{animation-delay:.7s} @keyframes gzl-rise{to{opacity:1;transform:none}} @keyframes gzl-pulse{0%{box-shadow:0 0 0 0 rgba(125,240,192,.5)}70%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}} /* Bandeau défilant */ .gzl .mq{border-bottom:1px solid var(--line);background:var(--surface);overflow:hidden;padding:18px 0} .gzl .mq__t{display:flex;gap:56px;width:max-content;animation:gzl-mq 38s linear infinite} .gzl .mq__t span{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)!important;white-space:nowrap} .gzl .mq__t span::before{content:"✦";color:var(--accent)!important;margin-right:56px} @keyframes gzl-mq{to{transform:translateX(-50%)}} /* Révélation */ .gzl.js .rv{opacity:0;transform:translateY(30px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)} .gzl.js .rv.in{opacity:1;transform:none} .gzl.js .rv.in.s1{transition-delay:.08s}.gzl.js .rv.in.s2{transition-delay:.16s}.gzl.js .rv.in.s3{transition-delay:.24s} /* Cartes */ .gzl .grid{display:grid;gap:22px;grid-template-columns:repeat(4,minmax(0,1fr))} .gzl .card{position:relative;display:flex;flex-direction:column;gap:14px;padding:26px;background:var(--surface);border:1px solid var(--line);border-radius:26px;overflow:hidden;transition:transform .45s cubic-bezier(.2,.7,.2,1),border-color .35s,box-shadow .45s} .gzl .sec--alt .card{background:var(--bg)} .gzl .card::before{content:"";position:absolute;inset:-1px;border-radius:inherit;background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%),rgba(125,240,192,.14),transparent 45%);opacity:0;transition:opacity .35s;pointer-events:none} .gzl .card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 30px 70px -30px rgba(125,240,192,.35)} .gzl .card:hover::before{opacity:1} .gzl .card__ic{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)!important} .gzl .card__tag{position:absolute;top:20px;right:20px;padding:4px 12px;border-radius:999px;background:#0f7a55;color:#fff!important;font-size:11.5px;font-weight:700;letter-spacing:.04em} .gzl .card__tag--soon{background:transparent;border:1px solid var(--line2);color:var(--soft)!important} .gzl .card h3{font-family:var(--serif);font-weight:400;font-size:23px;line-height:1.2;hyphens:manual;-webkit-hyphens:manual;overflow-wrap:normal} .gzl .card__sub{font-family:var(--mono);font-size:12.5px;color:var(--muted)!important} .gzl .card p{color:var(--muted)!important;font-size:15px;flex:1} .gzl .card__more{color:var(--accent)!important;font-size:14.5px;font-weight:600;display:inline-flex;gap:8px;align-items:center} .gzl .card__more::after{content:"→";transition:transform .3s} .gzl .card__links{display:flex;flex-wrap:wrap;gap:0 22px} .gzl .card__more--off{color:var(--muted)!important;font-weight:500}.gzl .card__more--off::after{content:none} .gzl .card:hover .card__more::after{transform:translateX(6px)} .gzl .note{margin-top:30px;font-size:13.5px;color:var(--muted)!important;max-width:820px} .gzl .grid--3{grid-template-columns:repeat(3,minmax(0,1fr))} .gzl .grid--2{grid-template-columns:repeat(2,minmax(0,1fr))} /* Récit */ .gzl .story{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.4fr);gap:clamp(24px,5vw,64px);align-items:start} .gzl .tabs{display:flex;flex-direction:column;gap:10px} .gzl .tab{display:flex;gap:16px;align-items:center;text-align:left;padding:18px 20px;border-radius:18px;border:1px solid var(--line);background:transparent;color:var(--muted)!important;font:500 17px/1.3 var(--sans);cursor:pointer;transition:all .35s} .gzl .tab:hover{border-color:var(--line2);color:var(--text)!important} .gzl .tab span{font-family:var(--mono);font-size:13px;color:var(--dim,#7d9186)!important} .gzl .tab[aria-selected=true]{border-color:var(--accent);color:var(--text)!important;background:color-mix(in srgb,var(--accent) 7%,transparent)} .gzl .tab[aria-selected=true] span{color:var(--accent)!important} .gzl .panel{position:relative;padding:clamp(26px,4vw,48px);border:1px solid var(--line);border-radius:28px;background:var(--bg);overflow:hidden;min-height:320px;animation:gzl-rise .6s both} .gzl .panel[hidden]{display:none} .gzl .panel svg.hy{position:absolute;right:-20px;bottom:-10px;width:70%;color:var(--accent)!important;opacity:.2;pointer-events:none} .gzl .panel .path{stroke-dasharray:900;stroke-dashoffset:900;animation:gzl-draw 2.4s .1s ease forwards} @keyframes gzl-draw{to{stroke-dashoffset:0}} .gzl .panel h3{font-family:var(--serif);font-weight:300;font-size:clamp(28px,3.4vw,40px);margin:6px 0 14px;position:relative} .gzl .panel p{color:var(--soft)!important;max-width:520px;position:relative} .gzl .chip{display:inline-block;margin-top:20px;padding:8px 16px;border-radius:999px;border:1px solid var(--line2);font-family:var(--mono);font-size:12.5px;color:var(--accent)!important;position:relative} .gzl .band{display:flex;gap:clamp(20px,4vw,48px);align-items:center;margin-top:clamp(36px,6vw,64px);padding:clamp(24px,4vw,40px);border:1px solid var(--line2);border-radius:28px;background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 8%,transparent),transparent 60%)} .gzl .band b{font-family:var(--serif);font-weight:300;font-size:clamp(48px,8vw,92px);line-height:1;color:var(--accent)!important} .gzl .band h3{font-family:var(--serif);font-weight:400;font-size:24px;margin-bottom:6px} .gzl .band p{color:var(--muted)!important;font-size:15.5px} /* Pourquoi */ .gzl .why{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border:1px solid var(--line);border-radius:28px;overflow:hidden} .gzl .why>div{padding:clamp(24px,3vw,38px);border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background .35s} .gzl .why>div:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)} .gzl .why>div:nth-child(3n){border-right:0}.gzl .why>div:nth-last-child(-n+3){border-bottom:0} .gzl .why b{font-family:var(--mono);font-size:13px;color:var(--accent)!important;display:block;margin-bottom:12px} .gzl .why h3{font-family:var(--serif);font-weight:400;font-size:22px;margin-bottom:8px} .gzl .why p{color:var(--muted)!important;font-size:15.5px;max-width:none} /* Récompense */ .gzl .award{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:center} .gzl .trophy{position:relative;display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;max-width:420px;margin:0 auto;width:100%;border-radius:50%;border:1px solid var(--line2);background:radial-gradient(circle,rgba(125,240,192,.14),transparent 65%)} .gzl .trophy::before,.gzl .trophy::after{content:"";position:absolute;inset:8%;border-radius:50%;border:1px dashed var(--line2);animation:gzl-spin 40s linear infinite} .gzl .trophy::after{inset:20%;animation-direction:reverse;animation-duration:30s} @keyframes gzl-spin{to{transform:rotate(360deg)}} .gzl .trophy div{text-align:center;position:relative;z-index:1;padding:20px} .gzl .trophy svg{color:var(--accent)!important;margin-bottom:10px} .gzl .trophy strong{display:block;font-family:var(--serif);font-weight:300;font-size:clamp(34px,5vw,52px);line-height:1} .gzl .trophy span{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.1em;color:var(--muted)!important;margin-top:8px;text-transform:uppercase} .gzl .facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:30px} .gzl .fact{padding:20px;border:1px solid var(--line);border-radius:20px;background:var(--surface)} .gzl .fact b{display:block;font-family:var(--serif);font-weight:300;font-size:32px;color:var(--accent)!important;line-height:1.1} .gzl .fact span{font-size:13.5px;color:var(--muted)!important} .gzl .ph{border:1px dashed var(--line2);border-radius:20px;padding:20px;color:var(--muted)!important;font-size:14.5px} /* Liste des services */ .gzl .svc{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px} .gzl .svc span{padding:5px 12px;border:1px solid var(--line);border-radius:999px;font-family:var(--mono);font-size:12px;color:var(--soft)!important} /* Contact */ .gzl .contact{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:start} .gzl .cl{display:grid;gap:14px;margin-top:26px} .gzl .cl a,.gzl .cl p{display:flex;gap:14px;align-items:flex-start;color:var(--soft)!important} .gzl .cl a:hover{color:var(--accent)!important} .gzl .cl svg{flex:none;color:var(--accent)!important;margin-top:3px} .gzl .map{position:relative;aspect-ratio:4/3;border:1px solid var(--line);border-radius:28px;overflow:hidden;background:var(--surface);display:flex;align-items:center;justify-content:center} .gzl .map svg{position:absolute;inset:0;width:100%;height:100%;color:var(--accent)!important;opacity:.35} .gzl .map div{position:relative;text-align:center;padding:24px} .gzl .map b{display:block;font-family:var(--serif);font-weight:300;font-size:34px} .gzl .map span{color:var(--muted)!important;font-size:14.5px} .gzl .pin{width:14px;height:14px;border-radius:50%;background:var(--accent);margin:0 auto 14px;box-shadow:0 0 0 0 var(--accent);animation:gzl-pulse 2s infinite} /* CTA final */ .gzl .final{text-align:center;background:radial-gradient(ellipse at center,rgba(125,240,192,.1),transparent 70%)} .gzl .final .cta{justify-content:center} .gzl .final .lead{margin-inline:auto} /* Pied de page */ .gzl .ft{border-top:1px solid var(--line);padding:clamp(40px,6vw,72px) 0 28px;background:#08100c} .gzl .ft__g{display:flex;flex-wrap:wrap;gap:36px 56px;justify-content:space-between} .gzl .ft__g>div{min-width:150px} .gzl .ft h4{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)!important;margin:0 0 14px;font-weight:500} .gzl .ft li{margin-bottom:8px;color:var(--muted)!important;font-size:15px} .gzl .ft li a:hover{color:var(--text)!important} .gzl .ft__brand{max-width:340px;color:var(--muted)!important;font-size:15px} .gzl .ft__legal{margin-top:40px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted)!important;font-size:12.5px;line-height:1.6} /* Animation de repli CSS (si le builder bloque les scripts) */ .gzl .fb{position:absolute;inset:0;overflow:hidden;pointer-events:none} .gzl .fb svg{position:absolute;inset:0;width:100%;height:100%;color:var(--accent)!important;opacity:.5} .gzl .fb .hp{fill:none;stroke:currentColor;stroke-width:1;stroke-linecap:round;stroke-dasharray:1400;stroke-dashoffset:1400;animation:gzl-draw 4s ease forwards} .gzl .fb .hp:nth-child(2){animation-delay:.6s}.gzl .fb .hp:nth-child(3){animation-delay:1.2s}.gzl .fb .hp:nth-child(4){animation-delay:1.8s} .gzl .fb .hn{fill:currentColor;animation:gzl-pulse 3s infinite} .gzl .fb i{position:absolute;bottom:-12px;left:var(--x);width:var(--s);height:var(--s);border-radius:50%;background:var(--accent);box-shadow:0 0 12px var(--accent);opacity:0;animation:gzl-spore var(--d) var(--dl) linear infinite} @keyframes gzl-spore{0%{opacity:0;transform:translate(0,0)}12%{opacity:.9}50%{transform:translate(18px,-45vh)}88%{opacity:.7}100%{opacity:0;transform:translate(-14px,-95vh)}} .gzl.js .fb{display:none} @media(prefers-reduced-motion:reduce){.gzl .fb i,.gzl .fb .hn{animation:none}.gzl .fb .hp{animation:none;stroke-dashoffset:0}} /* Responsive */ @media(max-width:1100px){.gzl .grid{grid-template-columns:repeat(2,minmax(0,1fr))}.gzl .grid--3{grid-template-columns:repeat(2,minmax(0,1fr))}} @media(max-width:860px){
.gzl .story,.gzl .award,.gzl .contact{grid-template-columns:1fr}
.gzl .tabs{flex-direction:row;overflow-x:auto;padding-bottom:6px;scrollbar-width:none;margin-inline:calc(var(--gutter)*-1);padding-inline:var(--gutter)}
.gzl .tabs::-webkit-scrollbar{display:none}
.gzl .tab{flex:none;padding:14px 18px;font-size:15.5px}
.gzl .why{grid-template-columns:repeat(2,minmax(0,1fr))}
.gzl .why>div{border-right:1px solid var(--line)!important;border-bottom:1px solid var(--line)!important}
.gzl .why>div:nth-child(2n){border-right:0!important}.gzl .why>div:nth-last-child(-n+2){border-bottom:0!important} } @media(max-width:640px){
.gzl{font-size:16.5px}
.gzl .grid,.gzl .grid--3,.gzl .grid--2{grid-template-columns:1fr}
.gzl .why{grid-template-columns:1fr}.gzl .why>div{border-right:0!important;border-bottom:1px solid var(--line)!important}.gzl .why>div:last-child{border-bottom:0!important}
.gzl .hero{min-height:0}
.gzl .cta{flex-direction:column}.gzl .cta .btn{width:100%}
.gzl .band{flex-direction:column;align-items:flex-start}
.gzl .facts{grid-template-columns:1fr 1fr}
.gzl .stats{gap:22px 32px} } /* Optimisation mobile */ .gzl{width:100%;max-width:100vw;overflow-x:hidden;overflow-x:clip} .gzl section,.gzl [id]{scroll-margin-top:84px} .gzl .hero{min-height:min(92vh,860px);min-height:min(92svh,860px);touch-action:pan-y} .gzl .card__more,.gzl .ft li a{display:inline-flex;align-items:center;min-height:44px} .gzl .h1,.gzl .h2,.gzl h3,.gzl p,.gzl .lead{overflow-wrap:break-word;hyphens:manual;-webkit-hyphens:manual} .gzl .btn{white-space:normal;text-align:center} @media(max-width:640px){
.gzl .sec{padding:56px 0}
.gzl .hero__in{padding-block:44px 40px}
.gzl .badge{font-size:11.5px;padding:7px 14px;letter-spacing:.03em}
.gzl .card{padding:22px;border-radius:22px}
.gzl .band,.gzl .panel,.gzl .safety{border-radius:22px}
.gzl .tab{min-height:48px}
.gzl .stats{gap:18px 26px}
.gzl .map{aspect-ratio:16/11;border-radius:22px}
.gzl .trophy{max-width:300px}
.gzl .ft__g{gap:28px}.gzl .ft__g>div{min-width:130px;flex:1 1 130px} } @media(max-width:420px){
.gzl{font-size:16px}
.gzl .h1{font-size:clamp(32px,10.4vw,44px)}
.gzl .h2{font-size:clamp(27px,8.4vw,36px)}
.gzl .facts{grid-template-columns:1fr}
.gzl .stat b{font-size:26px} } @media(hover:none){.gzl .card:hover{transform:none;box-shadow:none}.gzl .card:hover::before{opacity:0}} @media(prefers-reduced-motion:reduce){
.gzl .rise,.gzl.js .rv{opacity:1!important;transform:none!important;animation:none!important;transition:none!important}
.gzl .mq__t,.gzl .trophy::before,.gzl .trophy::after,.gzl .badge i,.gzl .pin,.gzl .panel .path{animation:none!important}
.gzl .panel .path{stroke-dashoffset:0} }
100of100 Lauréat du Science & Startups Award 2025
Sciences de la vie à Kronach :
champignons médicinaux
& culture de tissus
Récolte sauvage, extraction par ultrasons et analyses en laboratoire — par une start-up de Haute-Franconie qui rend la science concrète.
Boutique
En savoir plus
100of100
Lauréat du prix 2025
Kronach
Fabriqué en Bavière
COA
Analyse par lot
Récolte sauvage en Allemagne
Extraction par ultrasons
Sporophores, pas de mycélium
Éthanol + eau chaude
Fabriqué en Bavière
Analysé en laboratoire
Produits
La forêt pour la croissance,
le laboratoire pour l’extraction
.
Extraits de champignons médicinaux, produits chimiques de laboratoire, amendements pour les sols et bien plus — directement du fabricant, à Kronach.
Meilleures ventes
Extrait d’amadouvier
Fomes fomentarius
Extrait liquide de champignon médicinal issu de sporophores récoltés à l’état sauvage. Ultrasons + éthanol + eau chaude.
En savoir plus
Voir en boutique
Extrait de polypore du bouleau
Fomitopsis betulina
Extrait liquide de champignon médicinal issu du polypore du bouleau, avec le même procédé d’extraction que l’amadouvier.
En savoir plus
Voir en boutique
Trichoderma harzianum
Amendement pour les sols
Des spores vivantes pour la zone racinaire — 12 millions de spores par gramme. Amendement pour les sols, pas un produit phytopharmaceutique.
En savoir plus
Bleu de méthylène
Produit chimique de laboratoire · Spécification USP
Produit chimique de laboratoire de haute pureté et colorant textile. Ne pas ingérer.
Voir en boutique
Cannabis & accessoires
Graines · analyses · engrais
En toute connaissance de cause et de manière responsable, dans le respect de la loi. Veuillez vérifier la réglementation en vigueur dans votre pays.
Voir en boutique
Huile d’olive sicilienne
Finazzo · Passione per la natura
Deux variétés de Sicile, cueillies à la main et extraites à froid. 0,75 l chacune.
Voir en boutique
Études & recherche
Sources scientifiques
Informations, études et sources sur les champignons médicinaux et notre travail en laboratoire.
En savoir plus
Les extraits de champignons médicinaux peuvent être des compléments alimentaires et ne remplacent pas une alimentation équilibrée et variée. La dose journalière recommandée ne doit pas être dépassée. Le bleu de méthylène est un produit chimique de laboratoire et n’est pas destiné à être ingéré.
De la forêt au flacon
Cinq étapes.
Rien
de plus.
01
Récolte sauvage
02
Ultrasons
03
Éthanol + eau chaude
04
Contrôle en laboratoire
05
Mise en flacon
Étape 1 / 5
Récolte sauvage
Nous récoltons l’amadouvier et le polypore du bouleau à la main dans les forêts allemandes. Seuls les sporophores sont utilisés, jamais le mycélium.
Sporophores uniquement
Étape 2 / 5
Ultrasons
Les structures cellulaires résistantes des champignons sont désagrégées par ultrasons — une méthode moderne et douce issue des pratiques de laboratoire.
Extraction par ultrasons
Étape 3 / 5
Éthanol + eau chaude
La double extraction à l’éthanol et à l’eau chaude permet d’extraire les composants solubles dans l’eau et dans l’alcool. Les deux champignons sont traités de la même manière.
Ultrasons + éthanol + eau chaude
Étape 4 / 5
Contrôle en laboratoire
Chaque lot est contrôlé en laboratoire. Les résultats sont consignés dans un certificat d’analyse (COA).
COA pour chaque lot
Étape 5 / 5
Mise en flacon
Les produits sont conditionnés et expédiés depuis Kronach, dans un emballage discret et avec un numéro de suivi.
Fabriqué en Bavière
5 000
ans de tradition
Des archéologues ont découvert des amadouviers et des polypores du bouleau auprès de la momie des glaces Ötzi. L’utilisation de ces deux champignons s’appuie sur des savoirs empiriques transmis au fil du temps. Nous associons cette tradition à l’extraction moderne par ultrasons, sans allégations thérapeutiques.
Prestations
Un laboratoire
au service
de vos projets.
Analyses et culture de plantes de niveau scientifique, directement en Haute-Franconie.
Analyses du cannabis
Caractérisation et contrôle de vos échantillons à l’aide de méthodes de mesure modernes.
NIR
HPLC
GC-MS
Terpènes
Pesticides
Métaux lourds
Demander un devis
Culture tissulaire in vitro
Multiplication de plantes en culture tissulaire stérile — propre, homogène et planifiable.
Micropropagation
Sans agents pathogènes
Préservation des variétés
Demander un devis
Contrôle qualité
Nos propres lots sont contrôlés pour leurs composants, les métaux lourds, la microbiologie et les résidus.
Composants
Métaux lourds
Microbiologie
Résidus
Demander un devis
Pourquoi GrayZone Labs
Six raisons
de nous faire confiance
.
01
Excellence scientifique
Des méthodes de laboratoire, pas des suppositions : mesurer, contrôler, documenter.
02
Ancrage local
Fabriqué à Kronach, en Haute-Franconie — des circuits courts et une maîtrise totale.
03
Transparence maximale
Des analyses de lots consultables via un lien ou un QR code.
04
Une qualité primée
Lauréat du 100of100 Science & Startups Award 2025.
05
Sporophores uniquement
Nos extraits de champignons sont issus de sporophores, et non de mycélium cultivé sur des céréales.
06
Service client
Conseils personnalisés, emballage discret et expédition avec numéro de suivi.
100of100
Science & Startups
Award 2025
Science
Une innovation
récompensée.
Le 100of100 Award récompense l’excellence scientifique et l’innovation. Pour nous, c’est l’engagement d’étayer chaque affirmation par des données.
2025
Lauréat du Science & Startups Award
100 %
des lots contrôlés en laboratoire
Consulter les sources scientifiques
Adresse & contact
Ancrés à
Kronach
, en Haute-Franconie.
Conseils et visites du laboratoire sur rendez-vous. Écrivez-nous ou appelez-nous.
Friesener Straße 13
96317 Kronach, Haute-Franconie, Bavière
grayzonelabs@proton.me
+49 174 1524416
Itinéraire & horaires d’ouverture →
Kronach
Haute-Franconie · Bavière
Prêt à découvrir
la qualité de notre
laboratoire
?
Découvrez nos extraits, produits chimiques de laboratoire et bien plus en boutique — ou contactez-nous directement.
Accéder à la boutique
Demander un devis
GrayZone
Labs
Sciences de la vie à Kronach : champignons médicinaux, produits chimiques de laboratoire et culture de tissus. Lauréat du 100of100 Science & Startups Award 2025.
Pages
Produits
Prestations
Science
Contact
Études & recherche
Boutique
Accéder à la boutique
Extraits de champignons médicinaux
Cannabis & accessoires
Informations légales
Mentions légales
Politique de confidentialité
Conditions générales de vente
© GrayZone Labs · Anja Finazzo · Friesener Straße 13 · 96317 Kronach. Les extraits de champignons médicinaux peuvent être des compléments alimentaires et ne remplacent pas une alimentation équilibrée et variée. Le bleu de méthylène est un produit chimique de laboratoire et n’est pas destiné à être ingéré. Trichoderma est un amendement pour les sols, pas un produit phytopharmaceutique. Certification BIO en cours.
{"@context":"https://schema.org","@type":"Organization","name":"Grayzone Labs","url":"https://www.grayzonelabs.net","foundingDate":"2022","founder":{"@type":"Person","name":"Luca Finazzo","jobTitle":"Gründer & Geschäftsführer (M.Sc.)"},"address":{"@type":"PostalAddress","streetAddress":"Friesener Straße 13","addressLocality":"Kronach","addressRegion":"Oberfranken, Bayern","postalCode":"96317","addressCountry":"DE"},"geo":{"@type":"GeoCoordinates","latitude":"50.2367","longitude":"11.3295"},"contactPoint":{"@type":"ContactPoint","telephone":"+491741524416","email":"grayzonelabs@proton.me"},"award":"100of100 Science and Startups Award 2025"}
(function(){
'use strict';
var root=document.getElementById('gzl-root'); if(!root||root.getAttribute('data-gzl-init')) return; root.setAttribute('data-gzl-init','1');
root.classList.add('js');
var reduce=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)').matches;
function $(s,r){return (r||root).querySelector(s)} function $$(s,r){return Array.prototype.slice.call((r||root).querySelectorAll(s))}
function clamp(v,a,b){return Math.min(b,Math.max(a,v))}
/* Dupliquer le bandeau défilant */
var mq=$('[data-mq]'); if(mq){mq.innerHTML+=mq.innerHTML}
/* Défilement fluide vers les sections (remplace le gestionnaire d’ancre global de l’ancienne page) */
$$('a[href^="#"]').forEach(function(a){
var h=a.getAttribute('href'); if(!h||h.length<2) return;
a.addEventListener('click',function(e){var t=document.getElementById(h.slice(1)); if(t){e.preventDefault();t.scrollIntoView({behavior:reduce?'auto':'smooth',block:'start'})}});
});
/* Apparition au défilement */
var rv=$$('.rv');
if('IntersectionObserver' in window){
var io=new IntersectionObserver(function(es){es.forEach(function(e){if(e.isIntersecting){e.target.classList.add('in');io.unobserve(e.target)}})},{threshold:.12,rootMargin:'0px 0px -6% 0px'});
rv.forEach(function(el){io.observe(el)});
} else { rv.forEach(function(el){el.classList.add('in')}) }
/* Lueur des cartes suivant le curseur */
$$('[data-glow]').forEach(function(c){
c.addEventListener('pointermove',function(e){var r=c.getBoundingClientRect();c.style.setProperty('--mx',(e.clientX-r.left)+'px');c.style.setProperty('--my',(e.clientY-r.top)+'px')},{passive:true});
});
/* Onglets du récit */
var st=$('[data-story]');
if(st){
var tabs=$$('[role=tab]',st),panels=$$('[role=tabpanel]',st);
function sel(i,focus){
tabs.forEach(function(t,k){t.setAttribute('aria-selected',k===i?'true':'false');t.tabIndex=k===i?0:-1});
panels.forEach(function(p,k){p.hidden=k!==i});
if(focus)tabs[i].focus();
var t=tabs[i]; if(t&&t.scrollIntoView&&window.innerWidth<=860){var par=t.parentNode;par.scrollTo({left:t.offsetLeft-par.offsetLeft-20,behavior:reduce?'auto':'smooth'})}
}
tabs.forEach(function(t,i){
t.addEventListener('click',function(){sel(i)});
t.addEventListener('keydown',function(e){
var n=null;
if(e.key==='ArrowRight'||e.key==='ArrowDown')n=(i+1)%tabs.length;
if(e.key==='ArrowLeft'||e.key==='ArrowUp')n=(i-1+tabs.length)%tabs.length;
if(n!==null){e.preventDefault();sel(n,true)}
});
});
}
/* Hero : réseau de mycélium réactif + spores */
var hero=$('[data-hero]'),cv=hero&&$('canvas',hero);
if(cv&&cv.getContext){
var ctx=cv.getContext('2d'),W=0,H=0,dpr=1,nodes=[],spores=[],reach=240,t0=performance.now(),last=t0,running=false,visible=true;
var cur={x:0,y:0,tx:0,ty:0,on:false},touched=false,release;
function rnd(a,b){return a+Math.random()*(b-a)}
function makeSpore(init){return{x:rnd(0,W),y:init?rnd(0,H):H+10,v:rnd(10,32),sw:rnd(.6,1.6),ph:rnd(0,6.28),s:rnd(1,2.6),life:init?Math.random():0,ls:rnd(.05,.12)}}
function resize(){
var r=hero.getBoundingClientRect();W=Math.max(1,r.width);H=Math.max(1,r.height);
dpr=Math.min(2,window.devicePixelRatio||1);cv.width=W*dpr;cv.height=H*dpr;ctx.setTransform(dpr,0,0,dpr,0,0);
var n=clamp(Math.round(W*H/20000),22,W<640?30:64);
nodes=[];for(var i=0;i
}
function draw(t,dt){
ctx.clearRect(0,0,W,H);
var grow=reduce?1:clamp(t/2.4,0,1);grow=1-Math.pow(1-grow,3);
var cx=cur.x,cy=cur.y,active=cur.on||(!touched&&!reduce);
if(!touched&&!reduce){cur.tx=W*(.5+.32*Math.sin(t*.35));cur.ty=H*(.5+.28*Math.sin(t*.52+1));}
cur.x+=(cur.tx-cur.x)*Math.min(1,dt*6);cur.y+=(cur.ty-cur.y)*Math.min(1,dt*6);
var i,j,a,b,d,dx,dy;
for(i=0;i
if(!reduce){a.x+=a.vx;a.y+=a.vy;if(a.x<-20)a.x=W+20;if(a.x>W+20)a.x=-20;if(a.y<-20)a.y=H+20;if(a.y>H+20)a.y=-20;}
a.ox=a.x;a.oy=a.y;
if(active){dx=cur.x-a.x;dy=cur.y-a.y;d=Math.sqrt(dx*dx+dy*dy);if(d
}
ctx.lineCap='round';
var link=W<640?120:150;
for(i=0;i
}
for(i=0;i
ctx.shadowColor='rgba(125,240,192,.9)';ctx.shadowBlur=near*14;
ctx.beginPath();ctx.arc(a.ox,a.oy,a.r+near*2.2,0,6.283);ctx.fill();
}
ctx.shadowBlur=0;
if(active&&grow>.6){
var cand=[];for(i=0;i
for(i=0;i
ctx.beginPath();ctx.moveTo(cur.x,cur.y);
var mx=(cur.x+a.ox)/2+Math.sin(t*2+i)*12,my=(cur.y+a.oy)/2+Math.cos(t*2+i)*12;
ctx.quadraticCurveTo(mx,my,a.ox,a.oy);ctx.stroke();
}
ctx.shadowBlur=0;
var g=ctx.createRadialGradient(cur.x,cur.y,0,cur.x,cur.y,46);g.addColorStop(0,'rgba(125,240,192,.28)');g.addColorStop(1,'rgba(125,240,192,0)');
ctx.fillStyle=g;ctx.beginPath();ctx.arc(cur.x,cur.y,46,0,6.283);ctx.fill();
}
for(i=0;i
if(s.y<-10||s.life>1){spores[i]=makeSpore(false);continue}
var sa=Math.sin(s.life*Math.PI)*.9;if(sa<.02)continue;
ctx.fillStyle='rgba(125,240,192,'+sa.toFixed(3)+')';ctx.shadowColor='rgba(125,240,192,.9)';ctx.shadowBlur=s.s*4;
ctx.beginPath();ctx.arc(s.x,s.y,s.s,0,6.283);ctx.fill();
}
ctx.shadowBlur=0;
}
function frame(now){
if(!visible||document.hidden){running=false;return}
var dt=Math.min(.05,(now-last)/1000);last=now;draw((now-t0)/1000,dt);requestAnimationFrame(frame);
}
function start(){if(running||reduce)return;running=true;last=performance.now();requestAnimationFrame(frame)}
function setP(e){var r=hero.getBoundingClientRect();cur.tx=e.clientX-r.left;cur.ty=e.clientY-r.top;if(!cur.on){cur.x=cur.tx;cur.y=cur.ty}cur.on=true;touched=true;clearTimeout(release)}
function leave(e){clearTimeout(release);if(e&&e.pointerType==='touch'){release=setTimeout(function(){cur.on=false},900)}else{cur.on=false}}
if(!reduce){hero.addEventListener('pointermove',setP,{passive:true});hero.addEventListener('pointerdown',setP,{passive:true});hero.addEventListener('pointerleave',leave,{passive:true});hero.addEventListener('pointerup',leave,{passive:true});hero.addEventListener('pointercancel',leave,{passive:true})}
if('ResizeObserver' in window){new ResizeObserver(resize).observe(hero)}else{window.addEventListener('resize',resize)}
if('IntersectionObserver' in window){new IntersectionObserver(function(es){visible=es[0].isIntersecting;if(visible)start()},{threshold:0}).observe(hero)}
document.addEventListener('visibilitychange',function(){if(!document.hidden)start()});
resize();start();
} })();
