:root{
–vit-orange:#ff7612;–vit-orange-dark:#c94d00;–vit-orange-soft:#fff0df;
–vit-ink:#17130f;–vit-copy:#514a41;–vit-muted:#766d63;–vit-cream:#fbf8f0;
–vit-sand:#f4ecdf;–vit-white:#fff;–vit-line:#e8dccb;
–vit-shadow:0 30px 80px -56px rgba(57,33,7,.58);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(–vit-cream);color:var(–vit-ink);font-family:Manrope,Inter,system-ui,-apple-system,”Segoe UI”,sans-serif;line-height:1.65}
body:before{content:””;position:fixed;z-index:-2;inset:0;background:radial-gradient(700px 440px at 95% 0,rgba(255,118,18,.13),transparent 72%),linear-gradient(145deg,#fffdf8,#fbf8f0 58%,#fff5e6)}
img{display:block;width:100%;height:auto}a{color:inherit;text-decoration:none}button,input{font:inherit}
.gp-skip{position:fixed;z-index:100;left:16px;top:12px;padding:10px 14px;border-radius:9px;background:var(–vit-ink);color:#fff;transform:translateY(-180%)}
.gp-skip:focus{transform:none}.gp-wrap{width:min(1180px,calc(100% – 40px));margin-inline:auto}
.gp-header{position:relative;z-index:10;border-bottom:1px solid var(–vit-line);background:rgba(255,253,248,.9);backdrop-filter:blur(14px)}
.gp-nav{display:flex;min-height:74px;align-items:center;justify-content:space-between;gap:24px}.gp-logo{color:var(–vit-orange);font-size:1.35rem;font-weight:900;letter-spacing:-.045em}
.gp-navlinks{display:flex;align-items:center;gap:18px;color:var(–vit-copy);font-size:.76rem;font-weight:800}.gp-navlinks a:hover{color:var(–vit-orange-dark)}
.gp-navlinks .gp-nav-cta{padding:10px 15px;border-radius:999px;background:var(–vit-orange);color:#fff}
.gp-page-label{display:flex;min-height:40px;align-items:center;border-bottom:1px solid var(–vit-line);background:linear-gradient(90deg,var(–vit-sand),var(–vit-orange-soft));color:#7f3a08;font-size:.66rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}
.gp-hero{position:relative;padding:clamp(54px,7vw,86px) 0 60px;overflow:hidden}.gp-hero:before{content:””;position:absolute;inset:0;opacity:.36;background-image:linear-gradient(rgba(75,43,15,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(75,43,15,.05) 1px,transparent 1px);background-size:58px 58px;mask-image:linear-gradient(#000,transparent)}
.gp-hero-grid{position:relative;display:grid;grid-template-columns:minmax(0,1.06fr) minmax(420px,.94fr);gap:clamp(36px,6vw,74px);align-items:center}
.gp-eyebrow{display:inline-flex;align-items:center;gap:9px;margin:0 0 14px;color:#8d3b00;font-size:.69rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.gp-eyebrow:before{content:””;width:9px;height:9px;border-radius:50%;background:var(–vit-orange);box-shadow:0 0 0 5px rgba(255,118,18,.12)}
h1,h2,h3,p{margin-top:0}h1,h2,h3{text-wrap:balance}h1{max-width:760px;margin:14px 0 22px;font-size:clamp(2.85rem,5.8vw,5.35rem);line-height:.98;letter-spacing:-.06em}h2{margin:0 0 16px;font-size:clamp(2.15rem,4.6vw,3.85rem);line-height:1.04;letter-spacing:-.05em}h3{margin:0 0 8px;line-height:1.25;letter-spacing:-.025em}.gp-accent{color:var(–vit-orange)}
.gp-lead{max-width:700px;color:var(–vit-copy);font-size:clamp(1.05rem,1.65vw,1.22rem)}
.gp-actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:26px}.gp-btn{display:inline-flex;min-height:50px;align-items:center;justify-content:center;gap:10px;padding:13px 19px;border:1px solid var(–vit-line);border-radius:999px;background:#fff;color:var(–vit-ink);font-size:.82rem;font-weight:900;box-shadow:0 12px 28px rgba(58,38,14,.07);transition:.2s}.gp-btn:after{content:”→”}.gp-btn:hover{transform:translateY(-2px);border-color:#ffae64}.gp-btn.primary{border-color:var(–vit-orange);background:linear-gradient(135deg,#ff8a2d,var(–vit-orange));color:#fff}
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid rgba(255,118,18,.42);outline-offset:4px}
.gp-trust{display:flex;flex-wrap:wrap;gap:7px;margin-top:18px}.gp-trust span{padding:7px 10px;border:1px solid var(–vit-line);border-radius:999px;background:rgba(255,255,255,.84);color:var(–vit-copy);font-size:.68rem;font-weight:780}.gp-trust span:before{content:”✓”;margin-right:6px;color:var(–vit-orange-dark);font-weight:900}
.gp-hero-media{position:relative;min-height:440px}.gp-hero-media figure{position:absolute;inset:0;margin:0;padding:8px;overflow:hidden;border:1px solid #ffc58e;border-radius:36px 16px 36px 16px;background:#fff;box-shadow:0 36px 90px -52px rgba(45,27,7,.66);transform:rotate(1deg)}.gp-hero-media img{height:100%;object-fit:cover;border-radius:28px 10px 28px 10px}.gp-hero-note{position:absolute;right:-12px;bottom:34px;max-width:285px;padding:15px 17px;border:1px solid var(–vit-line);border-radius:16px;background:rgba(255,255,255,.95);box-shadow:var(–vit-shadow);font-size:.75rem;font-weight:800}
.gp-answer{position:relative;margin-top:-1px;padding:25px 0;border-top:1px solid var(–vit-line);border-bottom:1px solid var(–vit-line);background:#fff}.gp-answer-grid{display:grid;grid-template-columns:220px 1fr;gap:30px;align-items:start}.gp-answer strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;color:var(–vit-orange-dark)}.gp-answer p{max-width:900px;margin:0;color:var(–vit-copy);font-size:.91rem}
.gp-section{padding:clamp(66px,8vw,104px) 0}.gp-section.white{background:#fff}.gp-section.soft{background:linear-gradient(180deg,#fff5e6,#fbf8f0)}
.gp-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,.55fr);gap:clamp(28px,6vw,78px);align-items:end;margin-bottom:34px}.gp-head p{margin:0;color:var(–vit-copy)}
.gp-service-rail{display:grid;grid-template-columns:1.18fr .82fr .82fr;grid-auto-rows:minmax(170px,auto);gap:14px}.gp-service{position:relative;display:flex;min-height:170px;flex-direction:column;justify-content:flex-end;padding:23px;overflow:hidden;border:1px solid var(–vit-line);border-radius:22px;background:#fff;box-shadow:var(–vit-shadow);transition:.22s}.gp-service:first-child{grid-row:span 2;background:linear-gradient(145deg,#fff,#fff0dc)}.gp-service:nth-child(4){grid-column:span 2}.gp-service:hover{transform:translateY(-4px);border-color:#ffae64}.gp-service:after{content:”↗”;position:absolute;right:19px;top:16px;color:var(–vit-orange);font-weight:900}.gp-service small{color:var(–vit-orange-dark);font-size:.62rem;font-weight:900;letter-spacing:.1em;text-transform:uppercase}.gp-service h3{max-width:320px;margin-top:16px;font-size:1.16rem}.gp-service p{margin:0;color:var(–vit-muted);font-size:.75rem}.gp-service:first-child h3{font-size:clamp(1.45rem,2.6vw,2.2rem)}
.gp-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.gp-card{padding:25px;border:1px solid var(–vit-line);border-radius:20px;background:#fff;box-shadow:0 24px 54px -48px rgba(48,30,9,.6)}.gp-card-n{display:grid;width:42px;height:42px;margin-bottom:25px;place-items:center;border-radius:12px;background:var(–vit-orange-soft);color:var(–vit-orange-dark);font-size:.71rem;font-weight:900}.gp-card p{margin:0;color:var(–vit-muted);font-size:.8rem}
.gp-split{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(40px,7vw,88px);align-items:center}.gp-photo{margin:0;padding:8px;border:1px solid var(–vit-line);border-radius:28px;background:#fff;box-shadow:var(–vit-shadow)}.gp-photo img{aspect-ratio:4/3;object-fit:cover;border-radius:21px}.gp-list{display:grid;gap:12px;margin:24px 0 0;padding:0;list-style:none}.gp-list li{position:relative;padding:15px 16px 15px 45px;border:1px solid var(–vit-line);border-radius:13px;background:rgba(255,255,255,.78);color:var(–vit-copy);font-size:.81rem}.gp-list li:before{content:”✓”;position:absolute;left:16px;top:15px;color:var(–vit-orange);font-weight:900}
.gp-quote{position:relative;padding:clamp(30px,5vw,54px);overflow:hidden;border:1px solid #ffc58e;border-radius:38px 17px;background:linear-gradient(145deg,#fff,#fff1df);color:var(–vit-ink);box-shadow:var(–vit-shadow)}.gp-quote:after{content:”“”;position:absolute;right:12px;bottom:-100px;color:rgba(255,118,18,.14);font-family:Georgia,serif;font-size:18rem}.gp-quote blockquote{position:relative;z-index:1;max-width:930px;margin:0 0 24px;font-size:clamp(1.35rem,3vw,2.55rem);font-weight:750;line-height:1.28;letter-spacing:-.035em}.gp-quote footer{position:relative;z-index:1;color:var(–vit-orange-dark);font-size:.75rem;font-weight:800}
.gp-process{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(–vit-line);border-radius:24px;background:#fff;overflow:hidden}.gp-step{position:relative;min-height:220px;padding:25px;border-right:1px solid var(–vit-line)}.gp-step:last-child{border-right:0}.gp-step span{display:inline-block;margin-bottom:45px;color:var(–vit-orange-dark);font-size:.64rem;font-weight:900;letter-spacing:.1em}.gp-step p{margin:0;color:var(–vit-muted);font-size:.76rem}
.gp-table-wrap{overflow-x:auto;border:1px solid var(–vit-line);border-radius:20px;background:#fff}.gp-table{width:100%;min-width:680px;border-collapse:collapse}.gp-table th,.gp-table td{padding:16px 18px;border-bottom:1px solid var(–vit-line);text-align:left;font-size:.78rem}.gp-table th{background:var(–vit-orange-soft);font-size:.67rem;letter-spacing:.08em;text-transform:uppercase}.gp-table tr:last-child td{border-bottom:0}
.gp-faq{max-width:900px;margin:34px auto 0}.gp-faq details{border-top:1px solid var(–vit-line);background:#fff}.gp-faq details:last-child{border-bottom:1px solid var(–vit-line)}.gp-faq summary{position:relative;padding:20px 50px 20px 5px;cursor:pointer;font-size:.9rem;font-weight:850;list-style:none}.gp-faq summary:after{content:”+”;position:absolute;right:10px;color:var(–vit-orange);font-size:1.2rem}.gp-faq details[open] summary:after{content:”−”}.gp-faq details p{padding:0 48px 20px 5px;color:var(–vit-copy);font-size:.82rem}
.gp-final{padding:clamp(66px,9vw,108px) 0;text-align:center;border-top:1px solid #ffd0a5;background:radial-gradient(520px 300px at 50% 100%,rgba(255,118,18,.2),transparent 72%),linear-gradient(145deg,#fff,#fff3e2);color:var(–vit-ink)}.gp-final h2{max-width:920px;margin-inline:auto}.gp-final p{max-width:720px;margin:0 auto;color:var(–vit-copy)}.gp-final .gp-actions{justify-content:center}
.gp-foot{padding:30px 0;border-top:1px solid var(–vit-line);background:#fff;color:var(–vit-muted);font-size:.72rem}.gp-foot .gp-wrap{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.gp-tool-shell{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(300px,.85fr);gap:22px;align-items:start}.gp-tool-card{padding:clamp(24px,4vw,42px);border:1px solid var(–vit-line);border-radius:26px;background:#fff;box-shadow:var(–vit-shadow)}.gp-progress{height:8px;margin:15px 0 28px;overflow:hidden;border-radius:999px;background:var(–vit-sand)}.gp-progress span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(–vit-orange),#ff9e51);transition:width .25s ease}.gp-question{padding:23px 0;border-top:1px solid var(–vit-line)}.gp-question:first-of-type{border-top:0}.gp-question legend{margin-bottom:13px;font-weight:850}.gp-options{display:grid;gap:8px}.gp-option{display:grid;grid-template-columns:20px 1fr;gap:10px;align-items:start;padding:12px;border:1px solid var(–vit-line);border-radius:12px;cursor:pointer;color:var(–vit-copy);font-size:.79rem}.gp-option:has(input:checked){border-color:var(–vit-orange);background:var(–vit-orange-soft)}.gp-option input{width:18px;height:18px;margin-top:2px;accent-color:var(–vit-orange)}
.gp-tool-aside{position:sticky;top:24px}.gp-tool-aside h2{font-size:2rem}.gp-tool-points{display:grid;gap:12px;margin:22px 0;padding:0;list-style:none}.gp-tool-points li{padding-left:25px;color:var(–vit-copy);font-size:.78rem}.gp-tool-points li:before{content:”✓”;margin-left:-25px;margin-right:10px;color:var(–vit-orange);font-weight:900}
.gp-result{display:none;margin-top:24px;padding:25px;border:1px solid #ffbd7c;border-radius:18px;background:linear-gradient(145deg,#fff6e8,#fff)}.gp-result.is-visible{display:block}.gp-score{display:flex;align-items:baseline;gap:7px}.gp-score strong{color:var(–vit-orange);font-size:3.2rem;line-height:1}.gp-score span{color:var(–vit-muted);font-size:.75rem}.gp-recommendations{display:grid;gap:8px;margin:18px 0;padding:0;list-style:none}.gp-recommendations li{padding:12px 14px;border-radius:10px;background:#fff;color:var(–vit-copy);font-size:.78rem}
.gp-input-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.gp-field{display:grid;gap:7px}.gp-field.full{grid-column:1/-1}.gp-field label{font-size:.75rem;font-weight:850}.gp-field input{min-height:48px;width:100%;padding:11px 13px;border:1px solid var(–vit-line);border-radius:11px;background:#fff;color:var(–vit-ink)}.gp-help{color:var(–vit-muted);font-size:.68rem}
.gp-live-number{padding:24px;border:1px solid #ffc58f;border-radius:18px;background:var(–vit-orange-soft)}.gp-live-number small{display:block;color:var(–vit-orange-dark);font-size:.67rem;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.gp-live-number strong{display:block;margin:6px 0;color:var(–vit-orange);font-size:clamp(2.2rem,6vw,4.2rem);line-height:1;letter-spacing:-.06em}.gp-live-number p{margin:0;color:var(–vit-copy);font-size:.76rem}
.gp-review-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}.gp-review{padding:25px;border:1px solid var(–vit-line);border-radius:20px;background:#fff}.gp-review:first-child{grid-row:span 2;background:linear-gradient(145deg,#fff,#fff1dc)}.gp-review blockquote{margin:0 0 20px;font-size:1rem;font-weight:700}.gp-review:first-child blockquote{font-size:clamp(1.25rem,2.4vw,1.85rem)}.gp-review footer{color:var(–vit-muted);font-size:.72rem}

/* Page identities: one brand, deliberately different compositions. */
.gp-page .gp-page-label{border-top:0}.gp-mini-photo{position:absolute;z-index:3;margin:0;padding:5px;border:1px solid #ffc58e;background:#fff;box-shadow:0 24px 62px -34px rgba(57,33,7,.7)}.gp-mini-photo img{width:100%;height:100%;object-fit:cover}.gp-photo figcaption,.gp-mini-photo figcaption{position:absolute;overflow:hidden;width:1px;height:1px;clip:rect(0 0 0 0);white-space:nowrap}

/* Hoevelaken: warm, personal and close-by. */
.gp-hoevelaken .gp-hero{background:linear-gradient(110deg,#fffdf8 0 62%,#fff0dc 62%)}.gp-hoevelaken .gp-hero-media figure{border-radius:48% 18px 48% 18px;transform:none}.gp-hoevelaken .gp-hero-media img{border-radius:inherit}.gp-hoevelaken .gp-mini-photo{left:-28px;bottom:-18px;width:170px;height:130px;border-radius:18px;transform:rotate(-4deg)}.gp-hoevelaken .gp-mini-photo img{border-radius:12px}.gp-hoevelaken .gp-answer{background:#fff8ee}.gp-hoevelaken .gp-service-rail{grid-template-columns:1.35fr .65fr .65fr}.gp-hoevelaken .gp-service{border-radius:34px 14px}.gp-hoevelaken .gp-process{border-radius:40px 12px}

/* Amersfoort: operational rhythm and clear moments in the working day. */
.gp-amersfoort .gp-hero{background:#fff}.gp-amersfoort .gp-hero-grid{grid-template-columns:minmax(0,1.2fr) minmax(360px,.8fr)}.gp-amersfoort .gp-hero-media{min-height:400px}.gp-amersfoort .gp-hero-media figure{border-radius:12px 54px 12px 54px;transform:none}.gp-amersfoort .gp-hero-media img{border-radius:8px 46px 8px 46px}.gp-amersfoort .gp-mini-photo{right:-24px;top:-25px;width:180px;height:132px;border-radius:14px 34px}.gp-amersfoort .gp-mini-photo img{border-radius:9px 28px}.gp-amersfoort .gp-cards{align-items:start}.gp-amersfoort .gp-card:nth-child(2){margin-top:38px}.gp-amersfoort .gp-card:nth-child(3){margin-top:76px}.gp-amersfoort .gp-card{border-top:4px solid var(–vit-orange);border-radius:8px 8px 24px 24px}.gp-amersfoort .gp-answer{border-left:clamp(12px,5vw,70px) solid var(–vit-orange-soft)}

/* Nijkerk: an expanding roadmap, with the hero as an editorial cover. */
.gp-nijkerk .gp-hero{padding-top:32px;background:#fff}.gp-nijkerk .gp-hero-grid{grid-template-columns:1fr;min-height:600px;align-items:end}.gp-nijkerk .gp-hero-grid>div:first-child{z-index:3;grid-area:1/1;max-width:680px;margin:38px;padding:clamp(26px,5vw,46px);border:1px solid var(–vit-line);border-radius:14px 44px;background:rgba(255,253,248,.96);box-shadow:var(–vit-shadow)}.gp-nijkerk .gp-hero-media{grid-area:1/1;min-height:600px}.gp-nijkerk .gp-hero-media figure{border-radius:14px 64px 14px 64px;transform:none}.gp-nijkerk .gp-hero-media img{border-radius:8px 56px 8px 56px}.gp-nijkerk .gp-hero-note{right:30px;top:36px;bottom:auto}.gp-nijkerk .gp-mini-photo{right:34px;bottom:30px;width:210px;height:150px;border-radius:50% 18px 50% 18px}.gp-nijkerk .gp-mini-photo img{border-radius:inherit}.gp-nijkerk .gp-answer-grid{grid-template-columns:1fr 2fr}.gp-nijkerk .gp-cards{grid-template-columns:repeat(6,1fr)}.gp-nijkerk .gp-card{grid-column:span 2}.gp-nijkerk .gp-card:nth-child(4),.gp-nijkerk .gp-card:nth-child(5){grid-column:span 3}

/* Barneveld: continuity first, with the image leading the conversation. */
.gp-barneveld .gp-hero{background:linear-gradient(180deg,#fff3e2,#fff)}.gp-barneveld .gp-hero-grid{grid-template-columns:minmax(390px,.92fr) minmax(0,1.08fr)}.gp-barneveld .gp-hero-grid>div:first-child{order:2}.gp-barneveld .gp-hero-media{order:1;min-height:480px}.gp-barneveld .gp-hero-media figure{border-radius:70px 18px 18px 18px;transform:none}.gp-barneveld .gp-hero-media img{border-radius:62px 12px 12px 12px}.gp-barneveld .gp-mini-photo{right:-30px;bottom:-22px;width:180px;height:138px;border-radius:18px;transform:rotate(3deg)}.gp-barneveld .gp-mini-photo img{border-radius:12px}.gp-barneveld .gp-answer{border-top:4px solid var(–vit-orange)}.gp-barneveld .gp-cards{grid-template-columns:repeat(2,1fr)}.gp-barneveld .gp-card{display:grid;grid-template-columns:58px 1fr;column-gap:15px}.gp-barneveld .gp-card .gp-card-n{grid-row:span 2;margin:0}.gp-barneveld .gp-card p{grid-column:2}

/* Applications: product-studio feel, with one large visual canvas. */
.gp-apps .gp-hero{text-align:center;background:linear-gradient(180deg,#fff,#fff5e8)}.gp-apps .gp-hero-grid{grid-template-columns:1fr}.gp-apps .gp-hero-grid>div:first-child{max-width:920px;margin-inline:auto}.gp-apps .gp-lead{margin-inline:auto}.gp-apps .gp-actions,.gp-apps .gp-trust{justify-content:center}.gp-apps .gp-hero-media{min-height:460px;margin-top:18px}.gp-apps .gp-hero-media figure{border-radius:22px;transform:none}.gp-apps .gp-hero-media img{border-radius:15px}.gp-apps .gp-hero-note{right:28px;bottom:28px;max-width:360px;text-align:left}.gp-apps .gp-mini-photo{left:28px;bottom:28px;width:250px;height:180px;border-radius:18px}.gp-apps .gp-mini-photo img{border-radius:12px}.gp-apps .gp-answer{text-align:center}.gp-apps .gp-answer-grid{grid-template-columns:1fr}.gp-apps .gp-answer p{margin-inline:auto}.gp-apps .gp-service-rail{grid-template-columns:repeat(12,1fr)}.gp-apps .gp-service{grid-column:span 4}.gp-apps .gp-service:first-child{grid-column:span 7;grid-row:auto}.gp-apps .gp-service:nth-child(2){grid-column:span 5}.gp-apps .gp-service:nth-child(4){grid-column:span 5}

/* Portal case: an anonymised, responsive product view based on a field-operations portal. */
.gp-case-intro{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}.gp-case-intro article{padding:22px;border:1px solid var(–vit-line);border-top:4px solid var(–vit-orange);border-radius:14px 14px 22px 22px;background:#fff}.gp-case-intro strong{display:block;margin-bottom:9px;font-size:.84rem}.gp-case-intro p{margin:0;color:var(–vit-copy);font-size:.77rem}.gp-case-disclaimer{margin:0 0 14px;color:var(–vit-muted);font-size:.68rem;text-align:right}
.gp-portal-shell{position:relative;overflow:hidden;border:1px solid #ddcebd;border-radius:26px;background:#fff;box-shadow:0 42px 100px -60px rgba(42,25,8,.58)}.gp-portal-browser{display:flex;min-height:47px;align-items:center;gap:7px;padding:0 17px;border-bottom:1px solid var(–vit-line);background:#fffaf4;color:var(–vit-muted);font-size:.66rem}.gp-portal-browser>span{width:9px;height:9px;border:1px solid #f1a45d;border-radius:50%;background:#ffe3c7}.gp-portal-browser>span:nth-child(2){background:#fff0df}.gp-portal-browser>span:nth-child(3){background:#fff8ef}.gp-portal-browser strong{margin-left:9px;color:var(–vit-ink);font-size:.7rem}.gp-portal-browser em{margin-left:auto;padding:5px 9px;border:1px solid #ffc58e;border-radius:999px;background:#fff;color:var(–vit-orange-dark);font-style:normal;font-weight:850;letter-spacing:.05em;text-transform:uppercase}
.gp-portal-app{position:relative;display:grid;grid-template-columns:178px minmax(0,1fr);min-height:650px;background:#f8f5ef}.gp-portal-sidebar{display:flex;flex-direction:column;padding:24px 13px 18px;border-right:1px solid var(–vit-line);background:#fff}.gp-portal-brand,.gp-portal-user{display:flex;align-items:center;gap:10px;padding:0 9px}.gp-portal-brand>b,.gp-portal-user>b{display:grid;flex:0 0 36px;height:36px;place-items:center;border-radius:11px;background:var(–vit-orange);color:#fff;font-size:.78rem}.gp-portal-brand>span,.gp-portal-user>span{color:var(–vit-ink);font-size:.72rem;font-weight:900;line-height:1.2}.gp-portal-brand small,.gp-portal-user small{color:var(–vit-muted);font-size:.54rem;font-weight:650}.gp-portal-sidebar nav{display:grid;gap:5px;margin-top:31px}.gp-portal-sidebar nav span{display:flex;min-height:38px;align-items:center;justify-content:space-between;padding:9px 11px;border-radius:10px;color:#6e655c;font-size:.66rem;font-weight:750}.gp-portal-sidebar nav span.active{background:var(–vit-orange-soft);color:var(–vit-orange-dark)}.gp-portal-sidebar nav i{display:grid;width:19px;height:19px;place-items:center;border-radius:50%;background:#fff;color:var(–vit-orange-dark);font-size:.52rem;font-style:normal}.gp-portal-user{margin-top:auto;padding-top:15px;border-top:1px solid var(–vit-line)}.gp-portal-user>b{background:#fff1df;color:var(–vit-orange-dark)}
.gp-portal-main{min-width:0;padding:31px 238px 34px 30px;background:linear-gradient(145deg,#fbf9f5,#f6f0e8)}.gp-portal-title{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.gp-portal-title small,.gp-portal-panel-head small{color:var(–vit-orange-dark);font-size:.55rem;font-weight:900;letter-spacing:.1em}.gp-portal-title h3{margin:5px 0 2px;font-size:1.38rem}.gp-portal-title p{margin:0;color:var(–vit-muted);font-size:.68rem}.gp-portal-action{padding:9px 12px;border-radius:9px;background:var(–vit-orange);color:#fff;font-size:.59rem;font-weight:850;white-space:nowrap}
.gp-portal-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:22px 0}.gp-portal-kpis article{padding:15px;border:1px solid var(–vit-line);border-radius:13px;background:#fff}.gp-portal-kpis small,.gp-portal-kpis span{display:block;color:var(–vit-muted);font-size:.54rem}.gp-portal-kpis strong{display:block;margin:7px 0 2px;color:var(–vit-ink);font-size:1.65rem;line-height:1}.gp-portal-kpis .orange{color:var(–vit-orange-dark);font-weight:800}
.gp-portal-content{display:grid;grid-template-columns:1fr;gap:10px}.gp-portal-panel{min-width:0;padding:17px;border:1px solid var(–vit-line);border-radius:15px;background:#fff}.gp-portal-panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:14px}.gp-portal-panel-head h4{margin:2px 0 0;font-size:.86rem}.gp-portal-panel-head>span{color:var(–vit-orange-dark);font-size:.54rem;font-weight:800}.gp-portal-planning ol{display:grid;gap:7px;margin:0;padding:0;list-style:none}.gp-portal-planning li{display:grid;grid-template-columns:45px 1fr auto;gap:9px;align-items:center;padding:10px;border-radius:10px;background:#fbf8f2}.gp-portal-planning time{color:var(–vit-orange-dark);font-size:.58rem;font-weight:900}.gp-portal-planning li strong,.gp-portal-planning li small{display:block}.gp-portal-planning li strong{font-size:.63rem}.gp-portal-planning li small{color:var(–vit-muted);font-size:.49rem}.gp-portal-planning li>b{padding:4px 7px;border-radius:999px;background:#fff0df;color:var(–vit-orange-dark);font-size:.47rem}.gp-portal-planning li>b.done{background:#f3e8d5;color:#6d4a26}.gp-portal-planning li>b.waiting{background:#f7f3ed;color:#766d63}
.gp-portal-table{display:grid}.gp-portal-table>[role=row]{display:grid;grid-template-columns:1.2fr 1fr .75fr;gap:9px;align-items:center;padding:9px 3px;border-top:1px solid #eee4d8}.gp-portal-table>[role=row]:first-child{padding-top:0;border-top:0;color:var(–vit-muted);font-size:.49rem;text-transform:uppercase}.gp-portal-table span strong,.gp-portal-table span small{display:block}.gp-portal-table span strong{font-size:.61rem}.gp-portal-table span small{color:var(–vit-muted);font-size:.49rem}.gp-portal-table span[role=cell]:nth-child(2){display:grid;grid-template-columns:1fr 27px;gap:6px;align-items:center}.gp-portal-table span[role=cell]>i{display:block;height:5px;overflow:hidden;border-radius:99px;background:#f1e8dc}.gp-portal-table span[role=cell]>i:after{content:””;display:block;width:var(–progress);height:100%;border-radius:inherit;background:var(–vit-orange)}.gp-portal-table .status{display:inline-flex;padding:4px 7px;border-radius:999px;background:#fff0df;color:var(–vit-orange-dark);font-size:.46rem;font-style:normal;font-weight:850}.gp-portal-table .status.done{background:#f3e8d5;color:#6d4a26}.gp-portal-table .status.check{background:#fff8ef;color:#9a4b0b}
.gp-portal-phone{position:absolute;right:25px;bottom:25px;width:195px;padding:13px 13px 16px;border:7px solid #211d19;border-radius:29px;background:#fff;box-shadow:0 32px 70px -32px rgba(28,19,10,.78);transform:rotate(1.5deg)}.gp-phone-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px;color:var(–vit-muted);font-size:.46rem}.gp-phone-top i{width:45px;height:8px;border-radius:999px;background:#211d19}.gp-portal-phone>small{color:var(–vit-orange-dark);font-size:.43rem;font-weight:900;letter-spacing:.07em}.gp-portal-phone h4{margin:4px 0 1px;font-size:.84rem}.gp-portal-phone p{margin:0;color:var(–vit-muted);font-size:.5rem}.gp-phone-progress{height:5px;margin:13px 0 5px;overflow:hidden;border-radius:99px;background:#f1e8dc}.gp-phone-progress i{display:block;width:60%;height:100%;background:var(–vit-orange)}.gp-portal-phone>strong{display:block;color:var(–vit-copy);font-size:.49rem}.gp-portal-phone ul{display:grid;gap:5px;margin:13px 0;padding:0;list-style:none}.gp-portal-phone li{position:relative;padding:6px 7px 6px 23px;border:1px solid #eee3d5;border-radius:7px;color:var(–vit-copy);font-size:.48rem}.gp-portal-phone li:before{content:””;position:absolute;left:8px;top:8px;width:7px;height:7px;border:1px solid #b8ab9e;border-radius:2px}.gp-portal-phone li.done:before{border-color:var(–vit-orange);background:var(–vit-orange)}.gp-phone-button{display:block;padding:8px;border-radius:8px;background:var(–vit-orange);color:#fff;font-size:.5rem;font-weight:850;text-align:center}
.gp-portal-animated{isolation:isolate;transform-origin:50% 12%}.gp-portal-animated:after{content:””;position:absolute;z-index:8;inset:-55%;pointer-events:none;background:linear-gradient(110deg,transparent 41%,rgba(255,255,255,.08) 46%,rgba(255,139,31,.18) 50%,rgba(255,255,255,.11) 54%,transparent 59%);opacity:0;transform:translateX(-46%) rotate(3deg)}.gp-portal-animated.is-visible{animation:gp-portal-reveal .85s cubic-bezier(.2,.82,.2,1) both}.gp-portal-animated.is-visible:after{animation:gp-portal-sheen 7.5s 1.1s ease-in-out infinite}.gp-portal-animated.is-visible .gp-portal-browser em{position:relative;padding-left:20px;animation:gp-demo-breathe 3.8s 1.1s ease-in-out infinite}.gp-portal-animated.is-visible .gp-portal-browser em:before{content:””;position:absolute;left:9px;top:50%;width:6px;height:6px;border-radius:50%;background:var(–vit-orange);box-shadow:0 0 0 0 rgba(255,133,20,.35);transform:translateY(-50%);animation:gp-demo-dot 2.4s 1.1s ease-out infinite}.gp-portal-animated.is-visible .gp-portal-sidebar nav .active{animation:gp-portal-nav 4.8s 1.4s ease-in-out infinite}.gp-portal-animated.is-visible .gp-portal-action{animation:gp-portal-action 3.6s 1.8s ease-in-out infinite}.gp-portal-animated.is-visible .gp-portal-kpis article{animation:gp-portal-card-in .65s cubic-bezier(.2,.8,.2,1) both}.gp-portal-animated.is-visible .gp-portal-kpis article:nth-child(1){animation-delay:.2s}.gp-portal-animated.is-visible .gp-portal-kpis article:nth-child(2){animation-delay:.34s}.gp-portal-animated.is-visible .gp-portal-kpis article:nth-child(3){animation-delay:.48s}.gp-portal-animated.is-visible .gp-portal-planning li{animation:gp-portal-row 9s ease-in-out infinite}.gp-portal-animated.is-visible .gp-portal-planning li:nth-child(1){animation-delay:1.2s}.gp-portal-animated.is-visible .gp-portal-planning li:nth-child(2){animation-delay:4.2s}.gp-portal-animated.is-visible .gp-portal-planning li:nth-child(3){animation-delay:7.2s}.gp-portal-animated.is-visible .gp-portal-table span[role=cell]>i:after{transform-origin:left;animation:gp-portal-progress 1.15s .7s cubic-bezier(.2,.8,.2,1) both}.gp-portal-animated.is-visible .gp-portal-phone{animation:gp-portal-phone-float 5s 1.2s ease-in-out infinite}.gp-portal-animated.is-visible .gp-phone-progress i{transform-origin:left;animation:gp-portal-progress 1.1s 1.35s cubic-bezier(.2,.8,.2,1) both}.gp-portal-animated.is-visible .gp-phone-button{animation:gp-phone-button 4s 2.2s ease-in-out infinite}
@keyframes gp-portal-reveal{0%{opacity:.4;transform:translateY(26px) scale(.985);box-shadow:0 22px 70px -52px rgba(42,25,8,.25)}100%{opacity:1;transform:translateY(0) scale(1);box-shadow:0 42px 100px -60px rgba(42,25,8,.58)}}@keyframes gp-portal-sheen{0%,18%{opacity:0;transform:translateX(-46%) rotate(3deg)}28%{opacity:1}44%,100%{opacity:0;transform:translateX(46%) rotate(3deg)}}@keyframes gp-demo-breathe{0%,100%{box-shadow:0 0 0 0 rgba(255,133,20,0)}50%{box-shadow:0 9px 26px -15px rgba(255,133,20,.75)}}@keyframes gp-demo-dot{0%{box-shadow:0 0 0 0 rgba(255,133,20,.38)}65%,100%{box-shadow:0 0 0 7px rgba(255,133,20,0)}}@keyframes gp-portal-nav{0%,100%{background:var(–vit-orange-soft);transform:translateX(0)}50%{background:#ffe4c8;transform:translateX(3px)}}@keyframes gp-portal-action{0%,100%{box-shadow:0 0 0 0 rgba(255,133,20,0);transform:translateY(0)}50%{box-shadow:0 12px 28px -16px rgba(255,112,0,.8);transform:translateY(-2px)}}@keyframes gp-portal-card-in{0%{opacity:0;transform:translateY(16px) scale(.97)}100%{opacity:1;transform:translateY(0) scale(1)}}@keyframes gp-portal-row{0%,18%,100%{background:#fbf8f2;box-shadow:none;transform:translateX(0)}7%{background:#fff0df;box-shadow:0 10px 22px -18px rgba(255,113,0,.8);transform:translateX(3px)}}@keyframes gp-portal-progress{0%{transform:scaleX(0)}100%{transform:scaleX(1)}}@keyframes gp-portal-phone-float{0%,100%{transform:translateY(0) rotate(1.5deg)}50%{transform:translateY(-9px) rotate(.35deg)}}@keyframes gp-phone-button{0%,100%{box-shadow:0 0 0 0 rgba(255,133,20,0)}50%{box-shadow:0 10px 25px -13px rgba(255,104,0,.9)}}
@media(prefers-reduced-motion:reduce){.gp-portal-animated,.gp-portal-animated:after,.gp-portal-animated .gp-portal-browser em,.gp-portal-animated .gp-portal-browser em:before,.gp-portal-animated .gp-portal-sidebar nav .active,.gp-portal-animated .gp-portal-action,.gp-portal-animated .gp-portal-kpis article,.gp-portal-animated .gp-portal-planning li,.gp-portal-animated .gp-portal-table span[role=cell]>i:after,.gp-portal-animated .gp-portal-phone,.gp-portal-animated .gp-phone-progress i,.gp-portal-animated .gp-phone-button{animation:none!important}.gp-portal-animated .gp-portal-table span[role=cell]>i:after,.gp-portal-animated .gp-phone-progress i{transform:none!important}}
.gp-case-flow{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-bottom:clamp(54px,8vw,88px);overflow:hidden;border:1px solid var(–vit-line);border-radius:24px;background:#fff}.gp-case-flow article{position:relative;padding:25px;border-right:1px solid var(–vit-line)}.gp-case-flow article:last-child{border-right:0}.gp-case-flow article:nth-child(even){background:#fffaf3}.gp-case-flow span{display:block;margin-bottom:32px;color:var(–vit-orange-dark);font-size:.59rem;font-weight:900;letter-spacing:.09em}.gp-case-flow p{color:var(–vit-copy);font-size:.75rem}.gp-case-flow ul{display:grid;gap:7px;margin:18px 0 0;padding:0;list-style:none}.gp-case-flow li{position:relative;padding-left:17px;color:var(–vit-muted);font-size:.66rem}.gp-case-flow li:before{content:”•”;position:absolute;left:2px;color:var(–vit-orange);font-weight:900}.gp-case-proof{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:clamp(35px,7vw,80px);align-items:center}.gp-feature-map{display:flex;flex-wrap:wrap;gap:8px;margin-top:24px}.gp-feature-map span{padding:8px 10px;border:1px solid #f1c9a2;border-radius:999px;background:#fffaf4;color:var(–vit-copy);font-size:.67rem;font-weight:750}.gp-feature-map span:nth-child(3n+1){background:var(–vit-orange-soft);color:var(–vit-orange-dark)}

/* Interactive pages: tools take priority over decorative page chrome. */
.gp-scan .gp-hero,.gp-calculator .gp-hero{padding-block:42px;background:#fff}.gp-scan .gp-hero-grid,.gp-calculator .gp-hero-grid{grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr)}.gp-scan .gp-hero-media,.gp-calculator .gp-hero-media{min-height:320px}.gp-scan .gp-hero-media figure,.gp-calculator .gp-hero-media figure{border-radius:50% 18px 50% 18px;transform:none}.gp-scan .gp-hero-media img,.gp-calculator .gp-hero-media img{border-radius:inherit}.gp-scan .gp-mini-photo,.gp-calculator .gp-mini-photo{right:-18px;bottom:-16px;width:150px;height:112px;border-radius:16px}.gp-scan .gp-mini-photo img,.gp-calculator .gp-mini-photo img{border-radius:11px}.gp-scan .gp-answer{background:#fff8ee}.gp-calculator .gp-answer{border-left:clamp(12px,5vw,70px) solid var(–vit-orange-soft)}.gp-scan #scan,.gp-calculator #calculator{padding-top:50px}.gp-scan .gp-tool-card{border-top:6px solid var(–vit-orange)}.gp-calculator .gp-hero-grid>div:first-child{order:2}.gp-calculator .gp-hero-media{order:1}.gp-calculator .gp-tool-card{border-radius:12px 42px}.gp-calculator .gp-live-number{border-radius:28px 10px}

/* Continuity check wizard: one calm decision at a time. */
.gp-scan .gp-tool-shell{grid-template-columns:minmax(0,1.35fr) minmax(285px,.65fr);gap:25px}.gp-wizard{min-height:650px;padding:clamp(25px,4vw,46px);overflow:hidden;border-top:0!important;background:radial-gradient(500px 280px at 100% 0,rgba(255,118,18,.12),transparent 70%),#fff}.gp-wizard-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.gp-wizard-head h2{margin:0;font-size:clamp(1.65rem,3.2vw,2.55rem)}.gp-step-count{display:grid;grid-template-columns:auto auto;min-width:86px;align-items:end;padding:12px 14px;border:1px solid #ffc58e;border-radius:17px;background:var(–vit-orange-soft);color:var(–vit-orange-dark)}.gp-step-count span{grid-column:1/-1;font-size:.52rem;font-weight:900;letter-spacing:.12em}.gp-step-count strong{font-size:1.75rem;line-height:1}.gp-step-count em{margin:0 0 2px 4px;color:var(–vit-muted);font-size:.65rem;font-style:normal}.gp-wizard .gp-progress{height:9px;margin:24px 0 10px}.gp-wizard-dots{display:grid;grid-template-columns:repeat(8,1fr);gap:6px}.gp-wizard-dots i{display:block;height:4px;border-radius:99px;background:#eee3d5;transition:.2s}.gp-wizard-dots i.is-current{background:#ffb06c}.gp-wizard-dots i.is-done{background:var(–vit-orange)}.gp-progress-copy{min-height:20px;margin:9px 0 0}
.gp-wizard.is-enhanced .gp-question{display:none}.gp-wizard.is-enhanced .gp-question.is-active{display:block;animation:gp-question-in .32s ease both}.gp-wizard .gp-question{min-height:350px;margin:20px 0 0;padding:27px 0 18px;border:0}.gp-wizard .gp-question legend{max-width:720px;margin:0 0 22px;padding:0;font-size:clamp(1.35rem,2.8vw,2.15rem);font-weight:900;line-height:1.18;letter-spacing:-.035em}.gp-wizard .gp-options{counter-reset:answer;gap:10px}.gp-wizard .gp-option{counter-increment:answer;grid-template-columns:43px minmax(0,1fr) 24px;min-height:64px;align-items:center;padding:12px 15px;border-color:#e8dccb;border-radius:15px;background:#fff;box-shadow:0 13px 30px -28px rgba(46,29,10,.65);font-size:.82rem;transition:border-color .18s,background .18s,transform .18s,box-shadow .18s}.gp-wizard .gp-option:before{content:counter(answer,upper-alpha);display:grid;width:37px;height:37px;place-items:center;border-radius:11px;background:#f7efe3;color:var(–vit-muted);font-size:.66rem;font-weight:900}.gp-wizard .gp-option>span{grid-column:2;line-height:1.42}.gp-wizard .gp-option input{grid-column:3;grid-row:1;width:20px;height:20px;margin:0}.gp-wizard .gp-option:hover{transform:translateY(-1px);border-color:#ffb875;box-shadow:0 18px 35px -29px rgba(63,35,7,.72)}.gp-wizard .gp-option:has(input:checked){border-color:var(–vit-orange);background:linear-gradient(90deg,#fff8ee,#fff)}.gp-wizard .gp-option:has(input:checked):before{background:var(–vit-orange);color:#fff}
.gp-wizard-nav{display:none;grid-template-columns:auto minmax(160px,1fr) auto;gap:15px;align-items:center;margin-top:12px;padding-top:19px;border-top:1px solid var(–vit-line)}.gp-wizard.is-enhanced .gp-wizard-nav{display:grid}.gp-wizard-nav button{min-height:46px;padding:10px 17px;border:1px solid var(–vit-line);border-radius:999px;background:#fff;color:var(–vit-ink);font-weight:850;cursor:pointer}.gp-wizard-nav button:disabled{cursor:not-allowed;opacity:.4}.gp-wizard-nav .gp-wizard-next{border-color:var(–vit-orange);background:var(–vit-orange);color:#fff}.gp-wizard-nav>span{color:var(–vit-muted);font-size:.65rem;text-align:center}.gp-wizard.is-enhanced .gp-fallback-submit{display:none}.gp-wizard.is-complete .gp-wizard-content{display:none}
.gp-result-screen{margin:0;padding:0;border:0;background:transparent}.gp-result-screen.is-visible{display:block;animation:gp-question-in .4s ease both}.gp-result-top{display:grid;grid-template-columns:180px 1fr;gap:30px;align-items:center;padding-bottom:30px;border-bottom:1px solid var(–vit-line)}.gp-result-top h2{margin:5px 0 12px;font-size:clamp(1.8rem,3.6vw,3rem)}.gp-result-top p:last-child{margin:0;color:var(–vit-copy)}.gp-score-ring{–score:0;display:grid;width:168px;height:168px;padding:13px;place-items:center;border-radius:50%;background:conic-gradient(var(–vit-orange) calc(var(–score)*1%),#f1e7da 0);box-shadow:0 25px 50px -35px rgba(57,33,7,.7)}.gp-score-ring>div{display:grid;width:100%;height:100%;place-items:center;align-content:center;border-radius:50%;background:#fff}.gp-score-ring strong{color:var(–vit-orange);font-size:3.2rem;line-height:1;letter-spacing:-.06em}.gp-score-ring span{color:var(–vit-muted);font-size:.68rem}.gp-result-grid{display:grid;grid-template-columns:1fr .9fr;gap:18px;margin-top:26px}.gp-result-grid>div:first-child{padding:8px 5px}.gp-result-grid h3{font-size:1.1rem}.gp-result-grid .gp-recommendations{counter-reset:attention}.gp-result-grid .gp-recommendations li{counter-increment:attention;position:relative;padding:14px 14px 14px 48px;border:1px solid var(–vit-line);border-radius:13px;background:#fff;color:var(–vit-copy)}.gp-result-grid .gp-recommendations li:before{content:counter(attention);position:absolute;left:14px;top:14px;display:grid;width:23px;height:23px;place-items:center;border-radius:50%;background:var(–vit-orange-soft);color:var(–vit-orange-dark);font-size:.6rem;font-weight:900}.gp-result-contact{padding:24px;border:1px solid #ffc58e;border-radius:20px;background:linear-gradient(145deg,#fff7eb,#fff)}.gp-result-contact>small{color:var(–vit-orange-dark);font-size:.62rem;font-weight:900}.gp-result-contact h3{margin-top:10px;font-size:1.35rem}.gp-result-contact p{color:var(–vit-copy);font-size:.76rem}.gp-result-phone{display:grid;margin:18px 0 10px;padding:13px 15px;border-radius:13px;background:var(–vit-orange);color:#fff}.gp-result-phone span{font-size:.58rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em}.gp-result-phone strong{font-size:1.25rem}.gp-result-contact .gp-btn{width:100%;box-shadow:none}.gp-result-foot{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:22px;padding-top:18px;border-top:1px solid var(–vit-line)}.gp-result-foot p{margin:0;color:var(–vit-muted);font-size:.63rem}.gp-result-foot button{padding:7px 0;border:0;background:transparent;color:var(–vit-orange-dark);font-size:.65rem;font-weight:850;text-decoration:underline;cursor:pointer}.gp-scan-aside{overflow:hidden}.gp-scan-aside h2{font-size:clamp(1.75rem,3vw,2.5rem)}
@keyframes gp-question-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(max-width:980px){.gp-hero-grid,.gp-split,.gp-head,.gp-tool-shell{grid-template-columns:1fr}.gp-hero-media{min-height:430px}.gp-service-rail{grid-template-columns:1fr 1fr}.gp-service:first-child{grid-column:1/-1;grid-row:auto}.gp-service:nth-child(4){grid-column:auto}.gp-cards{grid-template-columns:1fr 1fr}.gp-process{grid-template-columns:1fr 1fr}.gp-step:nth-child(2){border-right:0}.gp-step:nth-child(-n+2){border-bottom:1px solid var(–vit-line)}.gp-tool-aside{position:static}.gp-review-grid{grid-template-columns:1fr}.gp-review:first-child{grid-row:auto}}
@media(max-width:700px){.gp-wrap{width:min(100% – 28px,1180px)}.gp-nav{min-height:66px}.gp-navlinks a:not(.gp-nav-cta){display:none}.gp-hero{padding-top:45px}.gp-hero-grid{gap:32px}.gp-hero-media{min-height:330px}.gp-hero-note{right:8px;bottom:16px;max-width:230px}.gp-answer-grid,.gp-service-rail,.gp-cards,.gp-process,.gp-input-grid{grid-template-columns:1fr}.gp-service:first-child{grid-column:auto}.gp-process{border:0;background:transparent;gap:10px}.gp-step,.gp-step:nth-child(n){min-height:0;border:1px solid var(–vit-line);border-radius:15px;background:#fff}.gp-step span{margin-bottom:22px}.gp-actions{display:grid}.gp-btn{width:100%}.gp-review-grid{grid-template-columns:1fr}.gp-field.full{grid-column:auto}}
@media(max-width:980px){.gp-amersfoort .gp-hero-grid,.gp-barneveld .gp-hero-grid,.gp-scan .gp-hero-grid,.gp-calculator .gp-hero-grid{grid-template-columns:1fr}.gp-amersfoort .gp-card:nth-child(n){margin-top:0}.gp-nijkerk .gp-hero-grid{min-height:0}.gp-nijkerk .gp-hero-grid>div:first-child{grid-area:auto;margin:0}.gp-nijkerk .gp-hero-media{grid-area:auto;min-height:500px}.gp-nijkerk .gp-cards{grid-template-columns:1fr 1fr}.gp-nijkerk .gp-card:nth-child(n){grid-column:auto}.gp-apps .gp-service-rail{grid-template-columns:1fr 1fr}.gp-apps .gp-service:nth-child(n){grid-column:auto}.gp-apps .gp-service:first-child{grid-column:1/-1}.gp-calculator .gp-hero-grid>div:first-child,.gp-calculator .gp-hero-media{order:initial}}
@media(max-width:700px){.gp-page-label{margin-top:0}.gp-mini-photo{display:none}.gp-hoevelaken .gp-hero{background:#fffdf8}.gp-hoevelaken .gp-service-rail,.gp-nijkerk .gp-cards,.gp-barneveld .gp-cards,.gp-apps .gp-service-rail{grid-template-columns:1fr}.gp-nijkerk .gp-hero-grid>div:first-child{padding:24px;border-radius:16px}.gp-nijkerk .gp-hero-media,.gp-apps .gp-hero-media{min-height:340px}.gp-barneveld .gp-card{grid-template-columns:48px 1fr}.gp-apps .gp-service:first-child{grid-column:auto}}
.gp-apps .gp-hero-media>figure:first-child img{object-position:center 18%}
@media(max-width:1050px){.gp-portal-main{padding-right:30px}.gp-portal-phone{position:relative;right:auto;bottom:auto;grid-column:1/-1;width:min(280px,calc(100% – 40px));margin:-8px auto 28px;transform:none}.gp-case-flow{grid-template-columns:1fr 1fr}.gp-case-flow article:nth-child(2){border-right:0}.gp-case-flow article:nth-child(-n+2){border-bottom:1px solid var(–vit-line)}}
@media(max-width:800px){.gp-case-intro,.gp-case-proof{grid-template-columns:1fr}.gp-portal-app{grid-template-columns:1fr}.gp-portal-sidebar{display:none}.gp-portal-main{padding:24px}.gp-portal-kpis{grid-template-columns:1fr 1fr}.gp-portal-kpis article:last-child{grid-column:1/-1}.gp-case-disclaimer{text-align:left}}
@media(max-width:600px){.gp-portal-browser strong{display:none}.gp-portal-main{padding:18px}.gp-portal-title{display:grid}.gp-portal-action{justify-self:start}.gp-portal-kpis,.gp-case-flow{grid-template-columns:1fr}.gp-portal-kpis article:last-child{grid-column:auto}.gp-case-flow article:nth-child(n){border-right:0;border-bottom:1px solid var(–vit-line)}.gp-case-flow article:last-child{border-bottom:0}.gp-portal-planning li{grid-template-columns:40px 1fr}.gp-portal-planning li>b{grid-column:2;justify-self:start}.gp-portal-table>[role=row]{grid-template-columns:1.15fr .85fr}.gp-portal-table>[role=row]>*:last-child{display:none}.gp-portal-phone{width:calc(100% – 28px)}}
@media(max-width:980px){.gp-scan .gp-tool-shell{grid-template-columns:1fr}.gp-scan-aside{display:grid;grid-template-columns:1fr 1fr;gap:22px}.gp-scan-aside .gp-eyebrow,.gp-scan-aside h2{grid-column:1/-1}.gp-scan-aside .gp-tool-points,.gp-scan-aside .gp-live-number{margin:0}.gp-scan-aside .gp-photo{display:none}}
@media(max-width:700px){.gp-wizard{min-height:0;padding:23px 18px}.gp-wizard-head{align-items:center}.gp-wizard-head h2{font-size:1.55rem}.gp-step-count{min-width:76px;padding:10px 12px}.gp-wizard .gp-question{min-height:395px;padding-top:23px}.gp-wizard .gp-question legend{font-size:1.4rem}.gp-wizard .gp-option{grid-template-columns:39px minmax(0,1fr) 22px;min-height:68px;padding:11px}.gp-wizard .gp-option:before{width:34px;height:34px}.gp-wizard-nav{position:sticky;z-index:3;bottom:10px;grid-template-columns:1fr 1fr;padding:12px;border:1px solid var(–vit-line);border-radius:17px;background:rgba(255,255,255,.96);box-shadow:0 18px 45px -28px rgba(57,33,7,.7);backdrop-filter:blur(10px)}.gp-wizard-nav>span{grid-column:1/-1;grid-row:1}.gp-wizard-nav button{width:100%}.gp-result-top,.gp-result-grid{grid-template-columns:1fr}.gp-score-ring{width:145px;height:145px}.gp-result-contact{padding:20px}.gp-result-foot{align-items:flex-start;flex-direction:column}.gp-scan-aside{grid-template-columns:1fr}}
@media(max-width:430px){.gp-wizard-head h2{max-width:185px}.gp-wizard .gp-question{min-height:430px}.gp-wizard .gp-option{font-size:.76rem}.gp-result-phone strong{font-size:1.1rem}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;animation:none!important;transition:none!important}}

Ga naar de inhoud

Webapps · klantportalen · procesautomatisering · API-koppelingen

Webapp laten maken · klantportaal · automatisering

Applicatie- en portaalontwikkeling die handwerk automatiseert en tijd teruggeeft.

Veenstra IT ontwikkelt vanuit Hoevelaken webapps, klantportalen en procesautomatiseringen voor MKB-bedrijven. We beginnen bij het moment waarop uw team nu moet overtypen, nabellen, controleren of wachten en bouwen daarna een veilige toepassing die precies daar rust en snelheid brengt.

Proces vóór techniekKleine werkende eerste versieVeilig beheer na livegang
Mike Veenstra toont een maatwerk werkportaal met planning en werkopdrachten op monitor en laptop
Mike Veenstra toont de werkopdrachtweergave van een zakelijke webapp op een laptop
Een mobiele werkopdracht met planning, checklist, foto’s en voortgang.
Geanonimiseerde praktijkweergave: echte portaalfunctionaliteit, met fictieve gegevens en zonder klantlogo.
Wat is procesautomatisering voor het MKB?

Procesautomatisering laat vaste, terugkerende handelingen gecontroleerd doorstromen tussen medewerkers en systemen. Denk aan een aanvraag die automatisch een dossier start, een taak die bij de juiste collega terechtkomt, een herinnering op het goede moment en documenten die zonder dubbel invoerwerk worden opgebouwd.

Geanonimiseerde praktijkcase

Van aanvraag tot ondertekende werkbon in één eigen portaal.

Voor een serviceorganisatie met medewerkers op kantoor en onderweg bouwden we een centraal werkportaal. Geen losse Excel-lijsten, foto’s in privé-apps en statusvragen per telefoon, maar één dossier dat met het werk meebeweegt.

Het probleem

Planning, klantgegevens, formulieren, materialen, foto’s en oplevering leefden op verschillende plekken. Daardoor moest informatie steeds opnieuw worden gezocht, gecontroleerd en overgetypt.

De gekozen route

We brachten eerst de rollen en overdrachtsmomenten in kaart. Daarna bouwden we de kernflow: werk voorbereiden, buiten uitvoeren, bewijs vastleggen en voortgang terugbrengen naar kantoor en klant.

Het resultaat in de praktijk

Iedere rol werkt vanuit hetzelfde dossier, maar ziet alleen wat nodig is. De historie blijft inzichtelijk en het portaal kan per processtap worden uitgebreid zonder alles opnieuw te bouwen.

Onderstaande productweergave is gebaseerd op functionaliteit die wij daadwerkelijk hebben gebouwd. Namen, locaties, aantallen en dossiergegevens zijn fictief.

Mijn werkportaalVeilige demo
MAANDAG · 18 JULI

Goedemorgen, planner

Dit vraagt vandaag uw aandacht.

+ Nieuwe werkopdracht

Vandaag gepland82 locaties in de regio
In uitvoering53 voortgangsupdates
Wacht op controle3Formulier of handtekening
PLANNING

Vandaag onderweg

Bekijk week →

  1. Periodieke inspectieVoorbeeldproject 2026-014 · Regio Midden

    Gereed

  2. Inbedrijfstelling installatieVoorbeeldproject 2026-021 · Bedrijfslocatie

    Onderweg

  3. Onderhoud & metingenVoorbeeldproject 2026-028 · Regio Oost

    Gepland

WERKOPDRACHTEN

Recente voortgang

Alle opdrachten →

OpdrachtVoortgangStatus
WO-26028Onderhoud72%Actief
WO-26021Inbedrijfstelling44%Controle
WO-26014Inspectie100%Gereed
09:41

WERKOPDRACHT WO-26021

Inbedrijfstelling

Bedrijfslocatie · Regio Midden

3 van 5 stappen gereed

  • Veiligheidscheck
  • Installatiegegevens
  • Foto’s toegevoegd
  • Meetwaarden invullen
  • Handtekening klant

Volgende stap →

Wat gebeurt er achter dit scherm?

Niet één mooie dashboardpagina, maar een volledige werkroute.

De waarde zit in de overdrachten: wat kantoor voorbereidt, wat de medewerker onderweg nodig heeft en wat de klant uiteindelijk mag zien of ondertekenen.

01 · KANTOOR

Opdracht voorbereiden

Klant, contactpersoon, locatie, planning, producten en benodigde formulieren komen samen in één werkopdracht.

  • Planning en verantwoordelijke medewerker
  • Notities, uitzonderingen en materialen
  • Versiebeheer op formulieren
02 · ONDERWEG

Uitvoeren zonder zoekwerk

De medewerker ziet op mobiel precies de stappen, gegevens en documenten die voor deze opdracht nodig zijn.

  • Checks, metingen en werklog
  • Foto’s direct bij het juiste dossier
  • Certificeringen en installatie-assets
03 · OPLEVERING

Bewijs netjes vastleggen

Formulieren, foto’s, materiaalverbruik en handtekening vormen samen een controleerbare oplevering.

  • Digitale ondertekening
  • Inbedrijfstellings- en onderhoudsregistratie
  • Volledige tijdlijn van wijzigingen
04 · KLANT & BEHEER

Status zonder heen-en-weer bellen

De juiste informatie kan veilig worden gedeeld, terwijl kantoor grip houdt op opvolging, rapportage en koppelingen.

  • Offertes, documenten en status
  • Onderhoudsmomenten en historie
  • Koppelingen en gecontroleerde synchronisatie
Mike Veenstra en zijn vader bespreken samen de werking van een zakelijk portaal

Gemaakt rond mensen, niet rond tabellen

De techniek blijft op de achtergrond. Het werk wordt duidelijker.

Een planner denkt anders dan een medewerker onderweg, een klant of een beheerder. Daarom krijgt iedere rol een eigen logische route, terwijl alles onderliggend bij hetzelfde project en dezelfde historie hoort.

WerkopdrachtenKlanten & contactenPlanningFormulierenInspectiesInstallatie-assetsMaterialenFoto’sHandtekeningenOffertesUrenregistratieOnderhoudKoppelingenAuditlog

Wat kunnen we bouwen?

Geen technische catalogus. Wel oplossingen voor herkenbaar werk.

De beste toepassing begint niet met “we willen een app”, maar met een concreet moment dat nu te veel tijd, fouten of uitleg kost.

Klantportaal

Geef klanten zelf inzicht in documenten, aanvragen, afspraken en status.

Minder terugkerende vragen, duidelijkere verwachtingen en één veilige plek voor uitwisseling.

Partnerportaal

Samenwerken zonder losse mailketens

Opdrachten, bestanden, controles en voortgang per partner gebundeld.

Interne webapp

Uw proces in één werkbare flow

Taken, formulieren, goedkeuringen en rollen passend bij uw team.

Dashboard

Sturen op actuele informatie

Data uit meerdere bronnen vertaald naar één begrijpelijk overzicht.

API & automatisering

Systemen laten samenwerken

Minder dubbel invoeren door veilige koppelingen en controleerbare automatisering.

Veenstra IT bespreekt beheer en doorontwikkeling van een zakelijke applicatie

Wat lost dit op?

Van vijf losse handelingen naar één duidelijke stap.

Veel digitale frustratie zit niet in één groot systeem, maar in overdrachten ertussen. Een offerte wordt een project, een project wordt een planning en de klant wil ondertussen weten wat de status is. Daar ontstaan dubbel werk en fouten.

  • Gegevens één keer invoeren en gecontroleerd doorgeven
  • Klanten en partners alleen toegang geven tot wat voor hen bedoeld is
  • Goedkeuringen, herinneringen en statusupdates automatisch laten verlopen
  • Documenten, afspraken en communicatie bij het juiste dossier houden
  • Rapportages opbouwen uit actuele brongegevens
  • Handmatige uitzonderingen zichtbaar houden in plaats van ze te verbergen

Procesautomatisering voor het MKB

Laat terugkerend werk vanzelf de goede kant op bewegen.

Een automatisering hoeft geen groot softwareproject te zijn. Vaak begint de meeste tijdwinst met één terugkerende handeling die dagelijks onnodig aandacht vraagt.

Van aanvraag naar actie

Een aanvraag uit een formulier, e-mail of telefoongesprek start een dossier, krijgt een eigenaar en zet de juiste vervolgstap klaar.

Van status naar communicatie

Een wijziging in planning of uitvoering kan automatisch een interne taak, klantbericht of herinnering activeren.

Van gegevens naar document

Goedgekeurde brongegevens vullen een offerte, werkbon, rapport of opleverdocument zonder opnieuw te typen.

01 · SIGNALEREN

Het systeem ziet wat aandacht vraagt

Open acties, ontbrekende informatie en naderende deadlines worden zichtbaar voordat iemand er toevallig aan denkt.

  • Herinneringen en vervolgdata
  • Uitzonderingen en ontbrekende velden
  • Toewijzing op rol, regio of status
02 · UITVOEREN

Vaste stappen worden automatisch gestart

Een goedgekeurde actie kan vervolgwerk aanmaken, informatie doorzetten of een document voorbereiden.

  • Taken en werkopdrachten
  • Document- en rapportgeneratie
  • Statusupdates en meldingen
03 · KOPPELEN

Systemen delen alleen wat nodig is

Via een beschikbare API of gecontroleerde import wordt informatie veilig gesynchroniseerd, met duidelijke foutafhandeling.

  • CRM, boekhouding en planning
  • Formulieren en klantportalen
  • Dashboards en rapportages
04 · CONTROLEREN

U houdt grip op uitzonderingen

Automatiseren betekent niet blind uitvoeren. Belangrijke beslissingen, afwijkingen en fouten blijven controleerbaar voor medewerkers.

  • Goedkeuring door een medewerker
  • Logboek en herstelmogelijkheid
  • Monitoring na livegang
Mike Veenstra toont een geautomatiseerde werkopdracht met checklist en voortgang

Tijdwinst die aantoonbaar moet zijn

Geen loze belofte over percentages. Wel meten waar de minuten verdwijnen.

Tijdens de procesanalyse leggen we vast hoe vaak een handeling voorkomt, hoeveel overdrachten nodig zijn en waar fouten of wachttijd ontstaan. Zo wordt duidelijk of een losse automatisering, een API-koppeling of een complete webapp de beste investering is.

  • Start met één proces dat medewerkers direct herkennen
  • Bewaar menselijke controle waar een beslissing nodig blijft
  • Bouw pas verder wanneer de eerste stap in de praktijk werkt
  • Leg beheer, beveiliging en foutafhandeling vooraf vast

Veenstra IT bouwt webapps, klantportalen, API-koppelingen en workflow-automatisering vanuit Hoevelaken voor MKB-organisaties in de regio Amersfoort, Barneveld en Nijkerk én elders in Nederland.

Standaardsoftware of maatwerk?

Maatwerk is niet altijd het antwoord. Dat zeggen we ook.

Als bestaande software het probleem goed en duurzaam oplost, is dat vaak de verstandigste route. Maatwerk verdient zijn plek wanneer uw proces, koppeling of klantbeleving werkelijk onderscheidend is.

Vraag Standaardsoftware past beter Maatwerk past beter
Proces Uw werkwijze is gangbaar en goed te configureren Uw proces bevat unieke rollen, beslissingen of klantinteractie
Snelheid U wilt snel starten met bekende functies U wilt gefaseerd een specifieke kernflow bouwen
Koppelingen Bestaande integraties dekken de behoefte Bronnen moeten veilig op een eigen manier gegevens uitwisselen
Beheer De leverancier beheert product en updates U wilt eigenaarschap, roadmap en doorontwikkeling afspreken
Investering Abonnement en inrichting zijn voordeliger Tijdwinst, foutreductie of klantwaarde rechtvaardigt ontwikkeling

Van idee naar betrouwbare applicatie

Klein beginnen. Eerder leren. Beheerst uitbreiden.

We vermijden een maandenlang traject waarin pas aan het einde zichtbaar wordt of de oplossing prettig werkt. De belangrijkste gebruikersflow komt eerst.

01 · ONTDEKKEN

Proces & doel

We spreken met betrokkenen, tekenen de huidige route en bepalen welk resultaat telt.

02 · AFBAKENEN

Werkende kern

We kiezen de kleinste versie die echte waarde levert en leggen rollen en gegevens vast.

03 · BOUWEN

Testen met gebruikers

We leveren in overzichtelijke stappen en verwerken feedback voordat complexiteit groeit.

04 · BEHEREN

Veilig live & verder

Monitoring, updates, back-up, documentatie en vervolgontwikkeling worden afgesproken.

Veiligheid vanaf het ontwerp

Een portaal is pas professioneel als toegang, gegevens en beheer kloppen.

Beveiliging wordt niet als laatste vinkje toegevoegd. We bepalen vooraf welke gegevens nodig zijn, wie ze mag zien, hoe toegang wordt gecontroleerd en welke gebeurtenissen moeten worden vastgelegd.

ID

Rollen & toegang

Gebruikers zien alleen functies en gegevens die bij hun rol horen, met passende authenticatie.

AVG

Dataminimalisatie

Alleen gegevens verzamelen en bewaren die voor het proces aantoonbaar nodig zijn.

LOG

Audit & inzicht

Belangrijke wijzigingen en acties herleidbaar maken zonder onnodig alles vast te leggen.

API

Veilige koppelingen

Gegevensuitwisseling valideren, begrenzen en beschermen tegen misbruik of fouten.

BKP

Back-up & herstel

Niet alleen code, maar ook gegevens, configuratie en herstelstappen beheersbaar houden.

OWN

Eigenaarschap

Vooraf duidelijkheid over broncode, hosting, beheer, documentatie en doorontwikkeling.

Veelgestelde vragen

Webapp, portaal en automatisering: eerst helderheid.

Wat kost een maatwerk webapp of klantportaal?

Dat hangt af van gebruikersrollen, gegevens, koppelingen, beveiliging en gewenste beheerafspraken. We beginnen met een afgebakende analyse en maken daarna scope, fasering en investering inzichtelijk voordat de bouw start.

Bouwen jullie ook losse automatiseringen zonder compleet nieuw portaal?

Ja. Als uw huidige systemen over geschikte gegevens, exports of API-koppelingen beschikken, kunnen we bijvoorbeeld taken, herinneringen, statusupdates, documentopbouw en gegevensoverdracht automatiseren. We kiezen eerst één terugkerende handeling waarvan de tijdwinst en foutreductie praktisch te beoordelen zijn.

Kunnen jullie koppelen met onze bestaande software?

Vaak wel, wanneer de betreffende software een geschikte en toegestane API of andere integratiemogelijkheid biedt. We onderzoeken eerst documentatie, beveiliging, limieten en eigenaarschap van gegevens.

Kunnen we met een kleine eerste versie beginnen?

Ja. Dat is meestal verstandig. Een eerste versie richt zich op de belangrijkste gebruikersflow en levert zo snel mogelijk bruikbare feedback op voordat extra functies worden toegevoegd.

Regelen jullie ook hosting, monitoring en onderhoud?

Ja. Hosting, back-up, monitoring, updates, beveiligingsonderhoud en doorontwikkeling kunnen als onderdeel van de beheerafspraak worden opgenomen.

Van wie is de applicatie na oplevering?

Eigenaarschap, gebruiksrechten, hosting, broncode en afhankelijkheden worden vooraf in het voorstel en de overeenkomst vastgelegd. Zo is duidelijk wat van u is en welke onderdelen van externe software gebruikmaken.

Kunnen jullie ook eerst alleen ons proces onderzoeken?

Ja. Een procesanalyse kan als losse eerste stap worden uitgevoerd. De uitkomst kan ook zijn dat configuratie van bestaande software verstandiger is dan maatwerk.

Inhoudelijk bijgewerkt op 18 juli 2026 door Mike Veenstra, oprichter en technisch specialist van Veenstra IT.

Begin bij het knelpunt

Welk proces kost uw team iedere week opnieuw onnodig tijd?

Laat ons één concrete route uittekenen. Daarna weet u of standaardsoftware, een koppeling, automatisering of maatwerk de verstandigste volgende stap is.

(() => {
const portal = document.querySelector(‘.gp-portal-animated’);
if (!portal) return;

const revealPortal = () => portal.classList.add(‘is-visible’);
const reduceMotion = window.matchMedia(‘(prefers-reduced-motion: reduce)’).matches;

if (reduceMotion || !(‘IntersectionObserver’ in window)) {
revealPortal();
return;
}

const observer = new IntersectionObserver((entries) => {
if (!entries.some((entry) => entry.isIntersecting)) return;
revealPortal();
observer.disconnect();
}, { threshold: 0.18 });

observer.observe(portal);
})();

{
“@context”: “https://schema.org”,
“@graph”: [
{
“@type”: “Organization”,
“@id”: “https://staging.veenstra-it.nl/#organization”,
“name”: “Veenstra IT”,
“url”: “https://staging.veenstra-it.nl/”,
“telephone”: “+31337811000”
},
{
“@type”: “WebPage”,
“@id”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/#webpage”,
“url”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/”,
“name”: “Webapp of klantportaal laten maken | Veenstra IT”,
“description”: “Webapps, klantportalen, API-koppelingen en procesautomatisering voor MKB-bedrijven, ontwikkeld vanuit Hoevelaken.”,
“inLanguage”: “nl-NL”,
“lastReviewed”: “2026-07-18”,
“isPartOf”: {“@type”: “WebSite”, “@id”: “https://staging.veenstra-it.nl/#website”, “name”: “Veenstra IT”, “url”: “https://staging.veenstra-it.nl/”},
“about”: [
{“@type”: “Thing”, “name”: “Webapp laten maken”},
{“@type”: “Thing”, “name”: “Klantportaal laten maken”},
{“@type”: “Thing”, “name”: “Procesautomatisering voor het MKB”},
{“@type”: “Thing”, “name”: “API-koppelingen”}
],
“mainEntity”: {“@id”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/#service”},
“breadcrumb”: {“@id”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/#breadcrumb”}
},
{
“@type”: “BreadcrumbList”,
“@id”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/#breadcrumb”,
“itemListElement”: [
{“@type”: “ListItem”, “position”: 1, “name”: “Home”, “item”: “https://staging.veenstra-it.nl/”},
{“@type”: “ListItem”, “position”: 2, “name”: “Zakelijke ICT”, “item”: “https://staging.veenstra-it.nl/zakelijk/”},
{“@type”: “ListItem”, “position”: 3, “name”: “Applicatie- en portaalontwikkeling”, “item”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/”}
]
},
{
“@type”: “Service”,
“@id”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/#service”,
“name”: “Webapp, klantportaal en procesautomatisering voor MKB”,
“url”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/”,
“serviceType”: “Webapp-, klantportaal-, API- en procesautomatiseringsontwikkeling”,
“provider”: {“@id”: “https://staging.veenstra-it.nl/#organization”},
“audience”: {“@type”: “BusinessAudience”, “audienceType”: “ZZP en MKB”},
“areaServed”: [
{“@type”: “City”, “name”: “Hoevelaken”},
{“@type”: “AdministrativeArea”, “name”: “Regio Amersfoort”},
{“@type”: “Country”, “name”: “Nederland”}
],
“hasOfferCatalog”: {
“@type”: “OfferCatalog”,
“name”: “Applicatie- en automatiseringsdiensten”,
“itemListElement”: [
{“@type”: “Offer”, “itemOffered”: {“@type”: “Service”, “name”: “Maatwerk webapp laten maken”}},
{“@type”: “Offer”, “itemOffered”: {“@type”: “Service”, “name”: “Klantportaal of werkportaal laten maken”}},
{“@type”: “Offer”, “itemOffered”: {“@type”: “Service”, “name”: “Workflow- en procesautomatisering”}},
{“@type”: “Offer”, “itemOffered”: {“@type”: “Service”, “name”: “API-koppelingen en gegevenssynchronisatie”}},
{“@type”: “Offer”, “itemOffered”: {“@type”: “Service”, “name”: “Dashboard en rapportage”}}
]
}
},
{
“@type”: “FAQPage”,
“@id”: “https://staging.veenstra-it.nl/applicatie-en-portaalontwikkeling/#faq”,
“mainEntity”: [
{“@type”: “Question”, “name”: “Wat kost een maatwerk webapp of klantportaal?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “De investering hangt af van gebruikersrollen, gegevens, koppelingen, beveiliging en beheer. Na een afgebakende analyse worden scope, fasering en investering vastgelegd.”}},
{“@type”: “Question”, “name”: “Bouwen jullie ook losse automatiseringen zonder compleet nieuw portaal?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “Ja. Als bestaande systemen geschikte gegevens, exports of API-koppelingen bieden, kan Veenstra IT onder meer taken, herinneringen, statusupdates, documentopbouw en gegevensoverdracht automatiseren.”}},
{“@type”: “Question”, “name”: “Kunnen jullie koppelen met onze bestaande software?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “Vaak wel wanneer de software een geschikte en toegestane API of andere integratiemogelijkheid biedt. Eerst worden documentatie, beveiliging, limieten en eigenaarschap onderzocht.”}},
{“@type”: “Question”, “name”: “Kunnen we met een kleine eerste versie beginnen?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “Ja. Een eerste versie richt zich op de belangrijkste gebruikersflow en levert vroeg bruikbare feedback op voordat extra functies worden toegevoegd.”}},
{“@type”: “Question”, “name”: “Regelen jullie ook hosting, monitoring en onderhoud?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “Ja. Hosting, back-up, monitoring, updates, beveiligingsonderhoud en doorontwikkeling kunnen in de beheerafspraak worden opgenomen.”}},
{“@type”: “Question”, “name”: “Van wie is de applicatie na oplevering?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “Eigenaarschap, gebruiksrechten, hosting, broncode en afhankelijkheden worden vooraf in het voorstel en de overeenkomst vastgelegd.”}},
{“@type”: “Question”, “name”: “Kunnen jullie ook eerst alleen ons proces onderzoeken?”, “acceptedAnswer”: {“@type”: “Answer”, “text”: “Ja. Een procesanalyse kan als losse eerste stap worden uitgevoerd; de uitkomst kan ook zijn dat configuratie van bestaande software verstandiger is dan maatwerk.”}}
]
}
]
}

WhatsApp 033 - 781 1000