@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)} /* Læsbarhed: Builder-styles må ikke tilsidesætte tekstfarverne */ .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} /* Knapper */ .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}} /* Rullende tekst */ .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%)}} /* Visning */ .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} /* Kort */ .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))} /* Fortælling */ .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} /* Hvorfor */ .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} /* Pris */ .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} /* Serviceliste */ .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} /* Kontakt */ .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} /* Afsluttende CTA */ .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} /* Sidefod */ .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} /* CSS-fallback-animation (kører, hvis builderen blokerer 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}} /* Responsivt */ @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} } /* Mobiloptimering */ .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 Science & Startups Award-vinder 2025
Life science fra Kronach:
Medicinske svampe
& vævskultur
Vildsamling, ultralydsekstraktion og laboratorieanalyser – fra en startup i Oberfranken, der gør videnskaben synlig.
Gå til shoppen
Læs mere
100of100
Award-vinder 2025
Kronach
Fremstillet i Bayern
COA
Batchanalyse for hvert batch
Vildsamlet i Tyskland
Ultralydsekstraktion
Frugtlegemer, ikke mycelium
Ethanol + varmt vand
Fremstillet i Bayern
Laboratorietestet
Produkter
Vokset i skoven,
ekstraheret i laboratoriet
.
Ekstrakter af medicinske svampe, laboratoriekemikalier, jordforbedringsmidler og mere – direkte fra producenten i Kronach.
Bestsellere
Ekstrakt af tøndersvamp
Fomes fomentarius
Flydende ekstrakt af medicinsk svamp fra vildsamlede frugtlegemer. Ultralyd + ethanol + varmt vand.
Læs mere
Se i shoppen
Ekstrakt af birkeporesvamp
Fomitopsis betulina
Flydende ekstrakt af medicinsk svamp fra birkeporesvamp – ekstraheret på samme måde som tøndersvamp.
Læs mere
Se i shoppen
Trichoderma harzianum
Jordforbedringsmiddel
Levende sporer til rodzonen – 12 mio. sporer pr. gram. Jordforbedringsmiddel, ikke et plantebeskyttelsesmiddel.
Læs mere
Methylenblåt
Laboratoriekemikalie · USP-specifikation
Laboratoriekemikalie med høj renhed og tekstilfarvestof. Ikke til indtagelse.
Se i shoppen
Cannabis og tilbehør
Frø · analyser · gødning
Bevidst og ansvarligt inden for lovens rammer. Følg reglerne i dit land.
Se i shoppen
Siciliansk olivenolie
Finazzo · Passione per la natura
To varianter fra Sicilien, håndplukket og koldpresset. 0,75 l pr. flaske.
Se i shoppen
Studier og forskning
Videnskabelige kilder
Baggrund, studier og kilder om medicinske svampe og vores arbejde i laboratoriet.
Læs mere
Ekstrakter af medicinske svampe kan være kosttilskud og erstatter ikke en afbalanceret og varieret kost. Den anbefalede daglige dosis må ikke overskrides. Methylenblåt er et laboratoriekemikalie og ikke beregnet til indtagelse.
Fra skov til flaske
Fem trin.
Intet
derimellem.
01
Vildsamling
02
Ultralyd
03
Ethanol + varmt vand
04
Laboratorietest
05
Aftapning
Trin 1 / 5
Vildsamling
Vi samler tøndersvamp og birkeporesvamp i hånden i tyske skove. Vi bruger udelukkende frugtlegemer, ikke mycelium.
Kun frugtlegemer
Trin 2 / 5
Ultralyd
Svampenes hårde cellestrukturer brydes op med ultralyd – en skånsom, moderne metode fra laboratoriepraksis.
Ultralydsekstraktion
Trin 3 / 5
Ethanol + varmt vand
Dobbelt ekstraktion med ethanol og varmt vand udtrækker både vand- og alkoholopløselige bestanddele. Begge svampe behandles på samme måde.
Ultralyd + ethanol + varmt vand
Trin 4 / 5
Laboratorietest
Hvert batch testes i laboratoriet. Resultaterne dokumenteres i en batchanalyse (COA).
COA for hvert batch
Trin 5 / 5
Aftapning
Produkterne aftappes og sendes fra Kronach, diskret pakket og med trackingnummer.
Fremstillet i Bayern
5.000
års tradition
Arkæologer fandt tøndersvamp og birkeporesvamp hos ismumien Ötzi. Brugen af begge svampe bygger på overleveret erfaringsbaseret viden. Vi forener denne tradition med moderne ultralydsekstraktion – uden at love helbredende virkning.
Ydelser
Et laboratorium,
der arbejder
for dig.
Analyser og plantedyrkning på videnskabeligt niveau, direkte i Oberfranken.
Cannabis-analyser
Profilering og test af dine prøver med moderne målemetoder.
NIR
HPLC
GC-MS
Terpener
Pesticider
Tungmetaller
Forespørg om rådgivning
InVitro Tissue Culture
Formering af planter i sterile vævskulturer – rent, ensartet og planlagt.
Mikropropagering
Patogenfri
Bevarelse af sorter
Forespørg om rådgivning
Kvalitetskontrol
Vi tester vores egne batches for indholdsstoffer, tungmetaller, mikrobiologi og reststoffer.
Indholdsstoffer
Tungmetaller
Mikrobiologi
Reststoffer
Forespørg om rådgivning
Hvorfor GrayZone Labs
Seks grunde til
at stole på os
.
01
Videnskabelig ekspertise
Laboratoriemetoder frem for mavefornemmelser: mål, test, dokumentér.
02
Lokal forankring
Fremstillet i Kronach, Oberfranken – korte afstande og fuld kontrol.
03
Maksimal gennemsigtighed
Batchanalyser, som du kan se, tilgængelige via link eller QR-kode.
04
Prisbelønnet kvalitet
Vinder af 100of100 Science & Startups Award 2025.
05
Kun frugtlegemer
Vores svampeekstrakter fremstilles af frugtlegemer, ikke af mycelium på korn.
06
Kundeservice
Personlig rådgivning, diskret emballage og forsendelse med trackingnummer.
100of100
Science & Startups
Award 2025
Videnskab
Innovation, der
blev hædret
med en pris.
100of100 Award hylder videnskabelig dybde og innovation. For os betyder det, at vi skal underbygge hvert udsagn med data.
2025
Vinder af Science & Startups Award
100 %
af alle batches testet i laboratoriet
Se videnskabelige kilder
Adresse og kontakt
Med rødder i
Kronach
, Oberfranken.
Rådgivning og laboratoriebesøg efter aftale. Skriv eller ring til os.
Friesener Straße 13
96317 Kronach, Oberfranken, Bayern
grayzonelabs@proton.me
+49 174 1524416
Rutevejledning og åbningstider →
Kronach
Oberfranken · Bayern
Klar til
laboratoriekvalitet
?
Find ekstrakter, laboratoriekemikalier og mere i shoppen – eller kontakt os direkte.
Gå til shoppen nu
Forespørg om rådgivning
GrayZone
Labs
Life science fra Kronach: medicinske svampe, laboratoriekemikalier og vævskultur. Vinder af 100of100 Science & Startups Award 2025.
Sider
Produkter
Ydelser
Videnskab
Kontakt
Studier og forskning
Shop
Gå til shoppen
Ekstrakter af medicinske svampe
Cannabis og tilbehør
Juridisk
Kolofon
Privatlivspolitik
Handelsbetingelser
© GrayZone Labs · Anja Finazzo · Friesener Straße 13 · 96317 Kronach. Ekstrakter af medicinske svampe kan være kosttilskud og erstatter ikke en afbalanceret og varieret kost. Methylenblåt er et laboratoriekemikalie og ikke beregnet til indtagelse. Trichoderma er et jordforbedringsmiddel, ikke et plantebeskyttelsesmiddel. BIO-certificering under forberedelse.
{"@context":"https://schema.org","@type":"Organization","name":"Grayzone Labs","url":"https://www.grayzonelabs.net","foundingDate":"2022","founder":{"@type":"Person","name":"Luca Finazzo","jobTitle":"Grundlægger og direktør (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))}
/* Duplikér rullende tekst */
var mq=$('[data-mq]'); if(mq){mq.innerHTML+=mq.innerHTML}
/* Glidende rul til sektioner (erstatter den gamle sides globale anker-handler) */
$$('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'})}});
});
/* Vis indhold ved scroll */
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')}) }
/* Kortglød følger markøren */
$$('[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});
});
/* Fortællefaner */
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: reaktivt mycelienetværk + sporer */
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)} /* Læsbarhed: Builder-styles må ikke tilsidesætte tekstfarverne */ .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} /* Knapper */ .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}} /* Rullende tekst */ .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%)}} /* Visning */ .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} /* Kort */ .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))} /* Fortælling */ .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} /* Hvorfor */ .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} /* Pris */ .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} /* Serviceliste */ .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} /* Kontakt */ .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} /* Afsluttende CTA */ .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} /* Sidefod */ .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} /* CSS-fallback-animation (kører, hvis builderen blokerer 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}} /* Responsivt */ @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} } /* Mobiloptimering */ .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 Science & Startups Award-vinder 2025
Life science fra Kronach:
Medicinske svampe
& vævskultur
Vildsamling, ultralydsekstraktion og laboratorieanalyser – fra en startup i Oberfranken, der gør videnskaben synlig.
Gå til shoppen
Læs mere
100of100
Award-vinder 2025
Kronach
Fremstillet i Bayern
COA
Batchanalyse for hvert batch
Vildsamlet i Tyskland
Ultralydsekstraktion
Frugtlegemer, ikke mycelium
Ethanol + varmt vand
Fremstillet i Bayern
Laboratorietestet
Produkter
Vokset i skoven,
ekstraheret i laboratoriet
.
Ekstrakter af medicinske svampe, laboratoriekemikalier, jordforbedringsmidler og mere – direkte fra producenten i Kronach.
Bestsellere
Ekstrakt af tøndersvamp
Fomes fomentarius
Flydende ekstrakt af medicinsk svamp fra vildsamlede frugtlegemer. Ultralyd + ethanol + varmt vand.
Læs mere
Se i shoppen
Ekstrakt af birkeporesvamp
Fomitopsis betulina
Flydende ekstrakt af medicinsk svamp fra birkeporesvamp – ekstraheret på samme måde som tøndersvamp.
Læs mere
Se i shoppen
Trichoderma harzianum
Jordforbedringsmiddel
Levende sporer til rodzonen – 12 mio. sporer pr. gram. Jordforbedringsmiddel, ikke et plantebeskyttelsesmiddel.
Læs mere
Methylenblåt
Laboratoriekemikalie · USP-specifikation
Laboratoriekemikalie med høj renhed og tekstilfarvestof. Ikke til indtagelse.
Se i shoppen
Cannabis og tilbehør
Frø · analyser · gødning
Bevidst og ansvarligt inden for lovens rammer. Følg reglerne i dit land.
Se i shoppen
Siciliansk olivenolie
Finazzo · Passione per la natura
To varianter fra Sicilien, håndplukket og koldpresset. 0,75 l pr. flaske.
Se i shoppen
Studier og forskning
Videnskabelige kilder
Baggrund, studier og kilder om medicinske svampe og vores arbejde i laboratoriet.
Læs mere
Ekstrakter af medicinske svampe kan være kosttilskud og erstatter ikke en afbalanceret og varieret kost. Den anbefalede daglige dosis må ikke overskrides. Methylenblåt er et laboratoriekemikalie og ikke beregnet til indtagelse.
Fra skov til flaske
Fem trin.
Intet
derimellem.
01
Vildsamling
02
Ultralyd
03
Ethanol + varmt vand
04
Laboratorietest
05
Aftapning
Trin 1 / 5
Vildsamling
Vi samler tøndersvamp og birkeporesvamp i hånden i tyske skove. Vi bruger udelukkende frugtlegemer, ikke mycelium.
Kun frugtlegemer
Trin 2 / 5
Ultralyd
Svampenes hårde cellestrukturer brydes op med ultralyd – en skånsom, moderne metode fra laboratoriepraksis.
Ultralydsekstraktion
Trin 3 / 5
Ethanol + varmt vand
Dobbelt ekstraktion med ethanol og varmt vand udtrækker både vand- og alkoholopløselige bestanddele. Begge svampe behandles på samme måde.
Ultralyd + ethanol + varmt vand
Trin 4 / 5
Laboratorietest
Hvert batch testes i laboratoriet. Resultaterne dokumenteres i en batchanalyse (COA).
COA for hvert batch
Trin 5 / 5
Aftapning
Produkterne aftappes og sendes fra Kronach, diskret pakket og med trackingnummer.
Fremstillet i Bayern
5.000
års tradition
Arkæologer fandt tøndersvamp og birkeporesvamp hos ismumien Ötzi. Brugen af begge svampe bygger på overleveret erfaringsbaseret viden. Vi forener denne tradition med moderne ultralydsekstraktion – uden at love helbredende virkning.
Ydelser
Et laboratorium,
der arbejder
for dig.
Analyser og plantedyrkning på videnskabeligt niveau, direkte i Oberfranken.
Cannabis-analyser
Profilering og test af dine prøver med moderne målemetoder.
NIR
HPLC
GC-MS
Terpener
Pesticider
Tungmetaller
Forespørg om rådgivning
InVitro Tissue Culture
Formering af planter i sterile vævskulturer – rent, ensartet og planlagt.
Mikropropagering
Patogenfri
Bevarelse af sorter
Forespørg om rådgivning
Kvalitetskontrol
Vi tester vores egne batches for indholdsstoffer, tungmetaller, mikrobiologi og reststoffer.
Indholdsstoffer
Tungmetaller
Mikrobiologi
Reststoffer
Forespørg om rådgivning
Hvorfor GrayZone Labs
Seks grunde til
at stole på os
.
01
Videnskabelig ekspertise
Laboratoriemetoder frem for mavefornemmelser: mål, test, dokumentér.
02
Lokal forankring
Fremstillet i Kronach, Oberfranken – korte afstande og fuld kontrol.
03
Maksimal gennemsigtighed
Batchanalyser, som du kan se, tilgængelige via link eller QR-kode.
04
Prisbelønnet kvalitet
Vinder af 100of100 Science & Startups Award 2025.
05
Kun frugtlegemer
Vores svampeekstrakter fremstilles af frugtlegemer, ikke af mycelium på korn.
06
Kundeservice
Personlig rådgivning, diskret emballage og forsendelse med trackingnummer.
100of100
Science & Startups
Award 2025
Videnskab
Innovation, der
blev hædret
med en pris.
100of100 Award hylder videnskabelig dybde og innovation. For os betyder det, at vi skal underbygge hvert udsagn med data.
2025
Vinder af Science & Startups Award
100 %
af alle batches testet i laboratoriet
Se videnskabelige kilder
Adresse og kontakt
Med rødder i
Kronach
, Oberfranken.
Rådgivning og laboratoriebesøg efter aftale. Skriv eller ring til os.
Friesener Straße 13
96317 Kronach, Oberfranken, Bayern
grayzonelabs@proton.me
+49 174 1524416
Rutevejledning og åbningstider →
Kronach
Oberfranken · Bayern
Klar til
laboratoriekvalitet
?
Find ekstrakter, laboratoriekemikalier og mere i shoppen – eller kontakt os direkte.
Gå til shoppen nu
Forespørg om rådgivning
GrayZone
Labs
Life science fra Kronach: medicinske svampe, laboratoriekemikalier og vævskultur. Vinder af 100of100 Science & Startups Award 2025.
Sider
Produkter
Ydelser
Videnskab
Kontakt
Studier og forskning
Shop
Gå til shoppen
Ekstrakter af medicinske svampe
Cannabis og tilbehør
Juridisk
Kolofon
Privatlivspolitik
Handelsbetingelser
© GrayZone Labs · Anja Finazzo · Friesener Straße 13 · 96317 Kronach. Ekstrakter af medicinske svampe kan være kosttilskud og erstatter ikke en afbalanceret og varieret kost. Methylenblåt er et laboratoriekemikalie og ikke beregnet til indtagelse. Trichoderma er et jordforbedringsmiddel, ikke et plantebeskyttelsesmiddel. BIO-certificering under forberedelse.
{"@context":"https://schema.org","@type":"Organization","name":"Grayzone Labs","url":"https://www.grayzonelabs.net","foundingDate":"2022","founder":{"@type":"Person","name":"Luca Finazzo","jobTitle":"Grundlægger og direktør (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))}
/* Duplikér rullende tekst */
var mq=$('[data-mq]'); if(mq){mq.innerHTML+=mq.innerHTML}
/* Glidende rul til sektioner (erstatter den gamle sides globale anker-handler) */
$$('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'})}});
});
/* Vis indhold ved scroll */
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')}) }
/* Kortglød følger markøren */
$$('[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});
});
/* Fortællefaner */
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: reaktivt mycelienetværk + sporer */
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();
} })();
