Initial commit

This commit is contained in:
Michael Schmeinck
2026-09-27 16:16:56 +02:00
commit 774c601889
37 changed files with 1150 additions and 0 deletions
File diff suppressed because one or more lines are too long
+6
View File
@@ -0,0 +1,6 @@
/*
* Foundation-compatible fallback grid for dilibworld.com
* The pages also reference the official Foundation for Sites 6.9.0 CDN build.
* This compact fallback keeps the website usable when the CDN is unavailable.
*/
*,*::before,*::after{box-sizing:border-box}html{font-size:100%;-webkit-text-size-adjust:100%}body{margin:0}img{max-width:100%;height:auto;display:inline-block;vertical-align:middle}.grid-container{max-width:75rem;margin:0 auto;padding-left:1rem;padding-right:1rem}.grid-container.fluid{max-width:none}.grid-x{display:flex;flex-flow:row wrap}.grid-margin-x{margin-left:-.625rem;margin-right:-.625rem}.grid-margin-x>.cell{margin-left:.625rem;margin-right:.625rem}.cell{flex:0 0 auto;min-width:0;min-height:0;width:100%}.small-12{width:100%}.small-6{width:50%}.align-middle{align-items:center}.align-center{justify-content:center}.align-justify{justify-content:space-between}.text-center{text-align:center}.hide{display:none!important}.show-for-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem;padding:.85em 1.2em;border:1px solid transparent;border-radius:0;background:#1779ba;color:#fff;text-align:center;cursor:pointer}.button:hover,.button:focus{background:#14679e;color:#fff}.button.hollow{border:1px solid #1779ba;color:#1779ba;background:transparent}.menu{padding:0;margin:0;list-style:none;display:flex;flex-wrap:wrap}.menu a{display:block;padding:.7rem 1rem;line-height:1}.callout{position:relative;margin:0 0 1rem;padding:1rem;border:1px solid rgba(10,10,10,.25);border-radius:0;background:#fff;color:#0a0a0a}label{display:block;margin:0 0 .5rem;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}input,textarea,select{display:block;width:100%;height:2.4375rem;margin:0 0 1rem;padding:.5rem;border:1px solid #cacaca;border-radius:0;background:#fefefe;box-shadow:inset 0 1px 2px rgba(10,10,10,.1);font:inherit;color:#0a0a0a}textarea{min-height:8rem}fieldset{border:0;margin:0;padding:0}table{border-collapse:collapse;width:100%}@media print,screen and (min-width:40em){.medium-4{width:33.333333%}.medium-5{width:41.666667%}.medium-6{width:50%}.medium-7{width:58.333333%}.medium-8{width:66.666667%}.medium-12{width:100%}.grid-margin-x>.medium-4{width:calc(33.333333% - 1.25rem)}.grid-margin-x>.medium-5{width:calc(41.666667% - 1.25rem)}.grid-margin-x>.medium-6{width:calc(50% - 1.25rem)}.grid-margin-x>.medium-7{width:calc(58.333333% - 1.25rem)}.grid-margin-x>.medium-8{width:calc(66.666667% - 1.25rem)}}@media print,screen and (min-width:64em){.large-3{width:25%}.large-4{width:33.333333%}.large-5{width:41.666667%}.large-6{width:50%}.large-7{width:58.333333%}.large-8{width:66.666667%}.large-9{width:75%}.large-12{width:100%}.grid-margin-x>.large-3{width:calc(25% - 1.25rem)}.grid-margin-x>.large-4{width:calc(33.333333% - 1.25rem)}.grid-margin-x>.large-5{width:calc(41.666667% - 1.25rem)}.grid-margin-x>.large-6{width:calc(50% - 1.25rem)}.grid-margin-x>.large-7{width:calc(58.333333% - 1.25rem)}.grid-margin-x>.large-8{width:calc(66.666667% - 1.25rem)}.grid-margin-x>.large-9{width:calc(75% - 1.25rem)}}
Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

+12
View File
@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64">
<defs>
<linearGradient id="g" x1="0" y1="0" x2="1" y2="1">
<stop stop-color="#27d3dc"/>
<stop offset="1" stop-color="#7057ff"/>
</linearGradient>
</defs>
<circle cx="32" cy="32" r="29" fill="#071b2e"/>
<circle cx="32" cy="32" r="19" fill="none" stroke="url(#g)" stroke-width="4"/>
<path d="M13 32h38M32 13c8 8 8 30 0 38M32 13c-8 8-8 30 0 38" fill="none" stroke="#fff" stroke-width="2.5"/>
<circle cx="46" cy="18" r="5" fill="#8de36c"/>
</svg>

After

Width:  |  Height:  |  Size: 568 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 760 650" role="img" aria-labelledby="t d"><title id="t">dilib Systemarchitektur</title><desc id="d">Vernetzte Module für künstliche Intelligenz, Datentransfer, Stammdaten und Prozesssteuerung.</desc><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient><linearGradient id="g2" x1="0" y1="1" x2="1" y2="0"><stop stop-color="#8de36c"/><stop offset="1" stop-color="#27d3dc"/></linearGradient><filter id="s" x="-30%" y="-30%" width="160%" height="160%"><feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#071b2e" flood-opacity=".18"/></filter></defs><rect x="70" y="45" width="620" height="550" rx="56" fill="#fff" opacity=".78" filter="url(#s)"/><path d="M175 173h410M175 325h410M175 477h410M260 115v420M500 115v420" stroke="#b7d8e6" stroke-width="3" stroke-dasharray="9 12"/><g filter="url(#s)"><circle cx="380" cy="325" r="103" fill="url(#g)"/><circle cx="380" cy="325" r="78" fill="#071b2e"/><path d="M336 338c-15-28 3-71 40-75 29-3 54 20 54 49 17 6 28 21 28 39 0 24-19 43-43 43h-75c-26 0-47-21-47-47 0-22 16-41 38-45 1-12 6-24 15-34" fill="none" stroke="#fff" stroke-width="11" stroke-linecap="round"/><circle cx="350" cy="309" r="8" fill="#8de36c"/><circle cx="410" cy="293" r="8" fill="#27d3dc"/><circle cx="390" cy="355" r="8" fill="#fff"/></g><g font-family="system-ui" font-weight="800" font-size="19" text-anchor="middle"><g><circle cx="165" cy="173" r="55" fill="#fff" stroke="#27d3dc" stroke-width="4" filter="url(#s)"/><path d="M140 173h50M165 148v50" stroke="#0697aa" stroke-width="8" stroke-linecap="round"/><text x="165" y="248" fill="#071b2e">TRANSFER</text></g><g><circle cx="595" cy="173" r="55" fill="#fff" stroke="#7057ff" stroke-width="4" filter="url(#s)"/><rect x="567" y="145" width="56" height="56" rx="13" fill="none" stroke="#7057ff" stroke-width="7"/><path d="M580 161h30M580 176h30M580 190h20" stroke="#7057ff" stroke-width="5"/><text x="595" y="248" fill="#071b2e">MASTERDATA</text></g><g><circle cx="165" cy="477" r="55" fill="#fff" stroke="#8de36c" stroke-width="4" filter="url(#s)"/><path d="M165 445v64M133 477h64" stroke="#2e9c77" stroke-width="7"/><circle cx="165" cy="477" r="17" fill="#8de36c"/><text x="165" y="552" fill="#071b2e">PROCESS</text></g><g><circle cx="595" cy="477" r="55" fill="#fff" stroke="#27d3dc" stroke-width="4" filter="url(#s)"/><path d="M570 489c0-31 50-31 50 0" fill="none" stroke="#0697aa" stroke-width="7"/><circle cx="582" cy="461" r="8" fill="#7057ff"/><circle cx="607" cy="461" r="8" fill="#8de36c"/><text x="595" y="552" fill="#071b2e">IDX / OCR</text></g></g><path d="M220 187c56 16 74 35 88 72M540 187c-56 16-74 35-88 72M220 463c56-16 74-35 88-72M540 463c-56-16-74-35-88-72" stroke="url(#g)" stroke-width="7" fill="none" stroke-linecap="round"/><g fill="#fff"><circle cx="288" cy="224" r="7"/><circle cx="472" cy="224" r="7"/><circle cx="288" cy="426" r="7"/><circle cx="472" cy="426" r="7"/></g></svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 630"><defs><linearGradient id="b" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#061625"/><stop offset="1" stop-color="#164f74"/></linearGradient><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><rect width="1200" height="630" fill="url(#b)"/><circle cx="1050" cy="80" r="280" fill="#27d3dc" opacity=".11"/><circle cx="180" cy="620" r="330" fill="#7057ff" opacity=".13"/><g transform="translate(90 100)"><circle cx="105" cy="105" r="92" fill="#fff" opacity=".08"/><circle cx="105" cy="105" r="72" fill="none" stroke="url(#g)" stroke-width="11"/><path d="M33 105h144M105 33c30 30 30 114 0 144M105 33c-30 30-30 114 0 144" fill="none" stroke="#fff" stroke-width="7"/><circle cx="160" cy="50" r="18" fill="#8de36c"/></g><text x="340" y="220" font-family="system-ui" font-size="92" font-weight="800" fill="#fff">dilibworld</text><text x="345" y="285" font-family="system-ui" font-size="34" font-weight="700" letter-spacing="4" fill="#8de6e9">GMBH</text><text x="90" y="430" font-family="system-ui" font-size="52" font-weight="750" fill="#fff">Intelligent. Secure. Connected.</text><text x="90" y="493" font-family="system-ui" font-size="29" fill="#b9d0df">Local AI and data platforms for critical business processes.</text></svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 520" role="img" aria-labelledby="t"><title id="t">Modulare dilib Plattform</title><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient><linearGradient id="g2" x1="0" y1="1" x2="1" y2="0"><stop stop-color="#8de36c"/><stop offset="1" stop-color="#27d3dc"/></linearGradient><filter id="s" x="-30%" y="-30%" width="160%" height="160%"><feDropShadow dx="0" dy="18" stdDeviation="18" flood-color="#071b2e" flood-opacity=".18"/></filter></defs><rect width="1000" height="520" rx="28" fill="#0b2238"/><g opacity=".15" stroke="#74e8ed"><path d="M0 100h1000M0 260h1000M0 420h1000M170 0v520M500 0v520M830 0v520"/></g><g font-family="system-ui" text-anchor="middle" font-weight="750"><g transform="translate(70 95)"><rect width="180" height="105" rx="20" fill="#fff" opacity=".96"/><text x="90" y="48" font-size="21" fill="#071b2e">Partner &amp; Systeme</text><text x="90" y="76" font-size="15" fill="#5d7185">REST · JSON · XML · CSV</text></g><g transform="translate(305 70)"><rect width="390" height="150" rx="26" fill="url(#g)"/><text x="195" y="65" font-size="30" fill="#fff">dilib Data Platform</text><text x="195" y="103" font-size="17" fill="#e9fbff">Transfer · Masterdata · Process</text></g><g transform="translate(750 95)"><rect width="180" height="105" rx="20" fill="#fff" opacity=".96"/><text x="90" y="48" font-size="21" fill="#071b2e">Lokale Systeme</text><text x="90" y="76" font-size="15" fill="#5d7185">ERP · CRM · DMS · Shop</text></g><g transform="translate(110 340)"><rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/><text x="110" y="47" font-size="23" fill="#071b2e">dilibAI</text><text x="110" y="76" font-size="15" fill="#5d7185">lokal · privat · kontrolliert</text></g><g transform="translate(390 340)"><rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/><text x="110" y="47" font-size="23" fill="#071b2e">dilib IDX</text><text x="110" y="76" font-size="15" fill="#5d7185">OCR · Index · Volltext</text></g><g transform="translate(670 340)"><rect width="220" height="105" rx="20" fill="#fff" opacity=".96"/><text x="110" y="47" font-size="23" fill="#071b2e">Governance</text><text x="110" y="76" font-size="15" fill="#5d7185">Rechte · Audit · Monitoring</text></g></g><g stroke="#27d3dc" stroke-width="7" fill="none" stroke-linecap="round"><path d="M250 147h55M695 147h55M500 220v70M220 340l190-120M500 340V220M780 340L590 220"/></g><g fill="#8de36c"><circle cx="278" cy="147" r="8"/><circle cx="722" cy="147" r="8"/><circle cx="500" cy="280" r="8"/></g></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><path d="M64 82c-22-8-31-35-17-54 12-17 35-21 52-10 14-7 32-2 40 11 19 2 33 18 33 37 0 21-17 38-38 38H73c-18 0-33-10-39-25" fill="none" stroke="url(#g)" stroke-width="10" stroke-linecap="round"/><circle cx="82" cy="56" r="7" fill="#8de36c"/><circle cx="126" cy="48" r="7" fill="#27d3dc"/><circle cx="112" cy="84" r="7" fill="#7057ff"/><path d="M92 128h40v40H92z" fill="none" stroke="#071b2e" stroke-width="8"/><path d="M101 128v-13a11 11 0 0122 0v13" fill="none" stroke="#071b2e" stroke-width="8"/></svg>

After

Width:  |  Height:  |  Size: 725 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><path d="M55 24h67l30 30v122H55z" fill="none" stroke="url(#g)" stroke-width="9" stroke-linejoin="round"/><path d="M122 24v31h30M76 84h54M76 108h54M76 132h35" stroke="#071b2e" stroke-width="8" stroke-linecap="round"/><circle cx="132" cy="144" r="27" fill="#fff" stroke="#7057ff" stroke-width="8"/><path d="M151 163l18 18" stroke="#7057ff" stroke-width="9" stroke-linecap="round"/></svg>

After

Width:  |  Height:  |  Size: 606 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><ellipse cx="100" cy="46" rx="57" ry="24" fill="none" stroke="url(#g)" stroke-width="9"/><path d="M43 46v76c0 13 25 24 57 24s57-11 57-24V46M43 83c0 13 25 24 57 24s57-11 57-24" fill="none" stroke="url(#g)" stroke-width="9"/><path d="M78 170h44" stroke="#071b2e" stroke-width="9" stroke-linecap="round"/></svg>

After

Width:  |  Height:  |  Size: 529 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><circle cx="100" cy="100" r="64" fill="none" stroke="url(#g)" stroke-width="10" stroke-dasharray="14 10"/><circle cx="100" cy="100" r="31" fill="none" stroke="#071b2e" stroke-width="10"/><path d="M100 54v18M100 128v18M54 100h18M128 100h18" stroke="#071b2e" stroke-width="10" stroke-linecap="round"/><circle cx="100" cy="100" r="9" fill="#8de36c"/></svg>

After

Width:  |  Height:  |  Size: 574 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" role="img"><defs><linearGradient id="g" x1="0" y1="0" x2="1" y2="1"><stop stop-color="#27d3dc"/><stop offset="1" stop-color="#7057ff"/></linearGradient></defs><path d="M34 72h108M118 48l24 24-24 24M166 136H58M82 112l-24 24 24 24" fill="none" stroke="url(#g)" stroke-width="12" stroke-linecap="round" stroke-linejoin="round"/><circle cx="38" cy="72" r="12" fill="#8de36c"/><circle cx="162" cy="136" r="12" fill="#7057ff"/></svg>

After

Width:  |  Height:  |  Size: 489 B

+50
View File
@@ -0,0 +1,50 @@
(() => {
const menuButton = document.querySelector('[data-menu-toggle]');
const mobileNav = document.querySelector('[data-mobile-nav]');
if (menuButton && mobileNav) {
menuButton.addEventListener('click', () => {
const open = mobileNav.classList.toggle('open');
menuButton.classList.toggle('open', open);
menuButton.setAttribute('aria-expanded', String(open));
});
mobileNav.querySelectorAll('a').forEach(a => a.addEventListener('click', () => {
mobileNav.classList.remove('open'); menuButton.classList.remove('open');
menuButton.setAttribute('aria-expanded', 'false');
}));
}
const observer = 'IntersectionObserver' in window ? new IntersectionObserver(entries => {
entries.forEach(entry => {
if (entry.isIntersecting) { entry.target.classList.add('visible'); observer.unobserve(entry.target); }
});
}, {threshold: .12}) : null;
document.querySelectorAll('.reveal-on-scroll').forEach(el => observer ? observer.observe(el) : el.classList.add('visible'));
document.querySelectorAll('[data-mailto-form]').forEach(form => {
form.addEventListener('submit', event => {
event.preventDefault();
if (!form.reportValidity()) return;
const fd = new FormData(form);
const lang = document.documentElement.lang || 'de';
const lines = [];
for (const [key, value] of fd.entries()) {
if (key !== 'privacy' && key !== 'website') lines.push(`${key}: ${value}`);
}
const subject = lang === 'de' ? 'Anfrage über dilibworld.com' : 'Enquiry via dilibworld.com';
const email = form.dataset.recipient || 'info@dilibworld.com';
window.location.href = `mailto:${email}?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(lines.join('\n'))}`;
const status = form.querySelector('.form-status');
if (status) { status.style.display = 'block'; }
});
});
const notice = document.querySelector('[data-cookie-notice]');
const choice = localStorage.getItem('dilibworld-cookie-choice');
if (notice && !choice) notice.classList.add('show');
document.querySelectorAll('[data-cookie-choice]').forEach(btn => btn.addEventListener('click', () => {
localStorage.setItem('dilibworld-cookie-choice', btn.dataset.cookieChoice);
notice?.classList.remove('show');
}));
document.querySelectorAll('[data-current-year]').forEach(el => el.textContent = new Date().getFullYear());
})();