{"title":"KajakSport","description":"\u003cstyle\u003e\n\n  .ko-collection { font-family: inherit; color: #1E2D34; line-height: 1.65; }\n  .ko-collection * { box-sizing: border-box; margin: 0; padding: 0; }\n  .ko-collection p { font-size: 15px; color: #5A7A86; line-height: 1.75; margin-bottom: 12px; }\n  .ko-collection p:last-child { margin-bottom: 0; }\n  .ko-collection strong { color: #1E2D34; }\n  .ko-collection em { color: #1E2D34; font-style: normal; font-weight: 600; }\n  .ko-collection-label {\n    font-size: 10px; font-weight: 700; letter-spacing: 1.5px;\n    text-transform: uppercase; color: #2D8C9E;\n    margin-bottom: 10px; display: block;\n  }\n  .ko-collection-highlights {\n    display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px;\n    margin-top: 20px; padding-top: 20px;\n    border-top: 1px solid #E5E9EB;\n  }\n  .ko-collection-highlight {\n    padding: 14px;\n    background: #F8FAFB; border-radius: 8px;\n    text-align: center;\n  }\n  .ko-collection-highlight-title {\n    font-size: 13px; font-weight: 700; color: #0B1D26;\n    margin-bottom: 4px; display: block;\n  }\n  .ko-collection-highlight-desc {\n    font-size: 12px; color: #5A7A86; line-height: 1.5;\n  }\n  .ko-collection-chips {\n    margin: 20px 0 0; padding-top: 20px;\n    border-top: 1px solid #E5E9EB;\n  }\n  .ko-collection-chips .wrap {\n    display: flex; flex-wrap: wrap; gap: 8px;\n    justify-content: center;\n  }\n  .ko-collection-chips a {\n    display: inline-block; padding: 7px 14px;\n    border: 1px solid #E5E9EB; border-radius: 999px;\n    text-decoration: none; color: #1E2D34;\n    font-size: 13px; font-weight: 600; line-height: 1.2;\n    white-space: nowrap; transition: all 0.15s;\n  }\n  .ko-collection-chips a:hover { border-color: #2D8C9E; color: #2D8C9E; }\n  @media (max-width: 600px) {\n    .ko-collection-highlights { grid-template-columns: 1fr; gap: 8px; }\n    .ko-collection-chips a { font-size: 12px; padding: 6px 12px; }\n  }\n  @media (max-width: 380px) {\n    .ko-collection p { font-size: 14px; }\n    .ko-collection-highlight-desc { font-size: 11px; }\n  }\n\n\n  *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }\n\n  :root {\n    --ko-teal: #2D8C9E;\n    --ko-teal-light: #E8F4F7;\n    --ko-dark: #0B1D26;\n    --ko-mid: #1E2D34;\n    --ko-muted: #5A7A86;\n    --ko-border: #E5E9EB;\n    --ko-surface: #F8FAFB;\n    --ko-white: #ffffff;\n    --ko-radius: 8px;\n    --ko-radius-lg: 12px;\n  }\n\n  body {\n    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n    color: var(--ko-mid);\n    background: var(--ko-white);\n    line-height: 1.65;\n    padding: 0;\n    margin: 0;\n  }\n\n  .finder {\n    max-width: 100%;\n    padding: 1.5rem 1.25rem 2rem;\n  }\n\n  .accordion {\n    border: 1px solid var(--ko-border);\n    border-radius: var(--ko-radius-lg);\n    overflow: hidden;\n    margin-bottom: 1rem;\n  }\n\n  .accordion-trigger {\n    width: 100%;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    padding: 1rem 1.25rem;\n    background: var(--ko-surface);\n    border: none;\n    cursor: pointer;\n    text-align: left;\n    gap: 12px;\n    transition: background 0.15s;\n  }\n\n  .accordion-trigger:hover { background: #EEF3F5; }\n\n  .accordion-trigger-label {\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--ko-teal);\n    display: block;\n    margin-bottom: 2px;\n  }\n\n  .accordion-trigger-title {\n    font-size: 15px;\n    font-weight: 600;\n    color: var(--ko-dark);\n  }\n\n  .accordion-chevron {\n    flex-shrink: 0;\n    width: 20px;\n    height: 20px;\n    color: var(--ko-muted);\n    transition: transform 0.2s;\n  }\n\n  .accordion.open .accordion-chevron { transform: rotate(180deg); }\n\n  .accordion-body {\n    display: none;\n    border-top: 1px solid var(--ko-border);\n  }\n\n  .accordion.open .accordion-body { display: block; }\n\n  .finder-header {\n    margin-bottom: 2rem;\n    padding-bottom: 1.5rem;\n    border-bottom: 1px solid var(--ko-border);\n  }\n\n  .finder-eyebrow {\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--ko-teal);\n    margin-bottom: 8px;\n    display: block;\n  }\n\n  .finder-title {\n    font-size: 22px;\n    font-weight: 700;\n    color: var(--ko-dark);\n    margin-bottom: 8px;\n  }\n\n  .finder-desc {\n    font-size: 14px;\n    color: var(--ko-muted);\n    line-height: 1.75;\n  }\n\n  .section {\n    margin-bottom: 1.75rem;\n  }\n\n  .section-label {\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--ko-teal);\n    margin-bottom: 10px;\n    display: block;\n  }\n\n  .section-title {\n    font-size: 15px;\n    font-weight: 600;\n    color: var(--ko-dark);\n    margin-bottom: 6px;\n  }\n\n  .section-body {\n    font-size: 13px;\n    color: var(--ko-muted);\n    line-height: 1.75;\n    margin-bottom: 12px;\n  }\n\n  .measure-card {\n    background: var(--ko-surface);\n    border-radius: var(--ko-radius-lg);\n    padding: 1rem 1.25rem;\n    margin-bottom: 10px;\n  }\n\n  .measure-item {\n    display: flex;\n    align-items: flex-start;\n    gap: 10px;\n    padding: 6px 0;\n  }\n\n  .measure-item + .measure-item {\n    border-top: 1px solid var(--ko-border);\n  }\n\n  .measure-dot {\n    width: 8px;\n    height: 8px;\n    border-radius: 50%;\n    flex-shrink: 0;\n    margin-top: 5px;\n  }\n\n  .dot-round { background: var(--ko-teal); }\n  .dot-oval { background: #1D9E75; }\n\n  .measure-text {\n    font-size: 13px;\n    color: var(--ko-mid);\n    line-height: 1.6;\n  }\n\n  .measure-text em {\n    color: var(--ko-muted);\n    font-style: normal;\n  }\n\n  .spec-img {\n    width: 100%;\n    border-radius: var(--ko-radius-lg);\n    margin-top: 12px;\n    display: block;\n  }\n\n  .spec-img-placeholder {\n    width: 100%;\n    height: 140px;\n    background: var(--ko-surface);\n    border-radius: var(--ko-radius-lg);\n    border: 1px dashed var(--ko-border);\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    font-size: 12px;\n    color: var(--ko-muted);\n    margin-top: 12px;\n  }\n\n  .divider {\n    border: none;\n    border-top: 1px solid var(--ko-border);\n    margin: 1.75rem 0;\n  }\n\n  .unit-toggle {\n    display: flex;\n    gap: 6px;\n    margin-bottom: 1.25rem;\n  }\n\n  .unit-btn {\n    padding: 6px 14px;\n    border: 1px solid var(--ko-border);\n    border-radius: 999px;\n    background: transparent;\n    color: var(--ko-muted);\n    font-size: 12px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.15s;\n    letter-spacing: 0.3px;\n  }\n\n  .unit-btn:hover { border-color: var(--ko-teal); color: var(--ko-teal); }\n  .unit-btn.active { border-color: var(--ko-teal); color: var(--ko-teal); background: var(--ko-teal-light); }\n\n  .shape-toggle {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 8px;\n    margin-bottom: 1.25rem;\n  }\n\n  .shape-btn {\n    padding: 12px;\n    border: 1px solid var(--ko-border);\n    border-radius: var(--ko-radius);\n    background: transparent;\n    color: var(--ko-muted);\n    font-size: 13px;\n    font-weight: 600;\n    cursor: pointer;\n    transition: all 0.15s;\n    text-align: center;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n  }\n\n  .shape-btn:hover { border-color: var(--ko-teal); color: var(--ko-teal); }\n  .shape-btn.active { border-color: var(--ko-teal); color: var(--ko-teal); background: var(--ko-teal-light); }\n\n  .shape-icon {\n    display: inline-block;\n    border: 2px solid currentColor;\n    flex-shrink: 0;\n  }\n\n  .shape-icon.round { width: 20px; height: 20px; border-radius: 50%; }\n  .shape-icon.oval { width: 28px; height: 18px; border-radius: 50%; }\n\n  .input-row {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 10px;\n    margin-bottom: 1rem;\n  }\n\n  .input-row.single { grid-template-columns: 1fr; }\n\n  .input-group label {\n    display: block;\n    font-size: 11px;\n    font-weight: 700;\n    letter-spacing: 0.8px;\n    text-transform: uppercase;\n    color: var(--ko-muted);\n    margin-bottom: 6px;\n    text-align: center;\n  }\n\n  .input-group input {\n    width: 100%;\n    padding: 10px 12px;\n    border: 1px solid var(--ko-border);\n    border-radius: var(--ko-radius);\n    background: var(--ko-white);\n    color: var(--ko-dark);\n    font-size: 15px;\n    outline: none;\n    transition: border-color 0.15s;\n    -moz-appearance: textfield;\n  }\n\n  .input-group input::-webkit-outer-spin-button,\n  .input-group input::-webkit-inner-spin-button { -webkit-appearance: none; }\n\n  .input-group input:focus { border-color: var(--ko-teal); }\n\n  .find-btn {\n    width: 100%;\n    padding: 13px;\n    border: none;\n    border-radius: var(--ko-radius);\n    background: var(--ko-teal);\n    color: var(--ko-white);\n    font-size: 14px;\n    font-weight: 700;\n    letter-spacing: 0.3px;\n    cursor: pointer;\n    transition: background 0.15s, transform 0.1s;\n  }\n\n  .find-btn:hover { background: #267d8e; }\n  .find-btn:active { transform: scale(0.99); }\n\n  .result {\n    margin-top: 1.5rem;\n    border: 1px solid var(--ko-border);\n    border-radius: var(--ko-radius-lg);\n    overflow: hidden;\n    display: none;\n  }\n\n  .result.show { display: block; }\n\n  .result-header {\n    padding: 1rem 1.25rem;\n    background: var(--ko-surface);\n    border-bottom: 1px solid var(--ko-border);\n  }\n\n  .result-eyebrow {\n    font-size: 10px;\n    font-weight: 700;\n    letter-spacing: 1.5px;\n    text-transform: uppercase;\n    color: var(--ko-teal);\n    margin-bottom: 4px;\n    display: block;\n  }\n\n  .result-name {\n    font-size: 18px;\n    font-weight: 700;\n    color: var(--ko-dark);\n  }\n\n  .result-body {\n    padding: 1rem 1.25rem;\n  }\n\n  .result-desc {\n    font-size: 13px;\n    color: var(--ko-muted);\n    line-height: 1.75;\n    margin-bottom: 1rem;\n  }\n\n  .result-sizes {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 6px;\n    margin-bottom: 1.25rem;\n  }\n\n  .size-chip {\n    padding: 4px 10px;\n    background: var(--ko-surface);\n    border: 1px solid var(--ko-border);\n    border-radius: 999px;\n    font-size: 12px;\n    font-weight: 600;\n    color: var(--ko-mid);\n  }\n\n  .result-links {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 8px;\n  }\n\n  .result-link {\n    display: inline-block;\n    padding: 8px 16px;\n    border: 1px solid var(--ko-border);\n    border-radius: 999px;\n    text-decoration: none;\n    color: var(--ko-mid);\n    font-size: 13px;\n    font-weight: 600;\n    transition: all 0.15s;\n    cursor: pointer;\n  }\n\n  .result-link:hover { border-color: var(--ko-teal); color: var(--ko-teal); }\n  .result-link.primary { border-color: var(--ko-teal); color: var(--ko-teal); background: var(--ko-teal-light); }\n  .result-link.primary:hover { background: #d4ecf0; }\n\n  .no-match-box {\n    padding: 1rem 1.25rem;\n  }\n\n  .no-match-box p {\n    font-size: 13px;\n    color: var(--ko-muted);\n    line-height: 1.75;\n  }\n\n  .no-match-box a {\n    color: var(--ko-teal);\n    text-decoration: none;\n    font-weight: 600;\n  }\n\n  .note {\n    margin-top: 1.5rem;\n    padding: 1rem 1.25rem;\n    background: var(--ko-surface);\n    border-radius: var(--ko-radius);\n    border-left: 3px solid var(--ko-teal);\n  }\n\n  .note p {\n    font-size: 12px;\n    color: var(--ko-muted);\n    line-height: 1.75;\n  }\n\n  .note strong { color: var(--ko-mid); }\n\n  @media (max-width: 420px) {\n    .input-row { grid-template-columns: 1fr; }\n  }\n\n\u003c\/style\u003e\n\n\u003cdiv class=\"ko-collection\"\u003e\n\n  \u003cspan class=\"ko-collection-label\"\u003eGear — Kajak Sport\u003c\/span\u003e\n\n  \u003cp\u003eKajak Sport has been making kayak components in Finland for over 30 years. Their hatch covers are on more sea kayaks than any other brand — if you've paddled a composite boat from Valley, P\u0026amp;H, NDK, Tiderace, or Zegul, there's a good chance you already own one. We carry the full range: hatch covers and rims, rudder and skeg systems, SmartTrack footrests, cockpit components, and deck fittings.\u003c\/p\u003e\n\n  \u003cp\u003eHatch covers make up the bulk of what we sell here, and for good reason — they wear out, they get lost on expeditions, and upgrading from an old rubber cover to the new generation makes a genuine difference. \u003cem\u003eNot sure which size or type you need?\u003c\/em\u003e Use the hatch finder below before you order.\u003c\/p\u003e\n\n  \u003cdiv class=\"ko-collection-highlights\"\u003e\n    \u003cdiv class=\"ko-collection-highlight\"\u003e\n      \u003cspan class=\"ko-collection-highlight-title\"\u003eHatch covers \u0026amp; rims\u003c\/span\u003e\n      \u003cspan class=\"ko-collection-highlight-desc\"\u003eOriginal rubber, Click-on, LRC-HT, and the new generation cover. Round and oval in all standard sizes including VCP.\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ko-collection-highlight\"\u003e\n      \u003cspan class=\"ko-collection-highlight-title\"\u003eKajak Sport\u003c\/span\u003e\n      \u003cdiv style=\"margin-top: 8px;\"\u003e\n        \u003cimg src=\"YOUR_KS_LOGO_CDN_URL\" alt=\"Kajak Sport\" style=\"max-width: 120px; opacity: 0.75; display: block; margin: 0 auto;\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"ko-collection-highlight\"\u003e\n      \u003cspan class=\"ko-collection-highlight-title\"\u003eFull component range\u003c\/span\u003e\n      \u003cspan class=\"ko-collection-highlight-desc\"\u003eSmartTrack footrests, rudder systems, skeg systems, cockpit fittings, and deck hardware.\u003c\/span\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"ko-collection-chips\"\u003e\n    \u003cdiv class=\"wrap\"\u003e\n      \u003ca href=\"\/collections\/kajak-sport\/hatch-covers\"\u003eHatch covers\u003c\/a\u003e\n      \u003ca href=\"\/collections\/kajak-sport\/hatch-rims\"\u003eHatch rims\u003c\/a\u003e\n      \u003ca href=\"\/collections\/kajak-sport\/smarttrack\"\u003eSmartTrack footrests\u003c\/a\u003e\n      \u003ca href=\"\/collections\/kajak-sport\/rudder-skeg\"\u003eRudder \u0026amp; skeg\u003c\/a\u003e\n      \u003ca href=\"\/collections\/kajak-sport\/cockpit\"\u003eCockpit\u003c\/a\u003e\n      \u003ca href=\"\/collections\/kajak-sport\/deck-fittings\"\u003eDeck fittings\u003c\/a\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cdiv style=\"margin-top: 24px; padding-top: 24px; border-top: 1px solid #E5E9EB;\"\u003e\n\u003cdiv class=\"accordion\" id=\"hatch-accordion\"\u003e\n\n  \u003cbutton class=\"accordion-trigger\" onclick=\"toggleAccordion()\" aria-expanded=\"false\"\u003e\n    \u003cdiv\u003e\n      \u003cspan class=\"accordion-trigger-label\"\u003eKajak Sport — Hatches \u0026amp; Rims\u003c\/span\u003e\n      \u003cspan class=\"accordion-trigger-title\"\u003eFind the right hatch cover\u003c\/span\u003e\n    \u003c\/div\u003e\n    \u003csvg class=\"accordion-chevron\" viewbox=\"0 0 20 20\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\n      \u003cpath d=\"M5 7.5l5 5 5-5\"\u003e\u003c\/path\u003e\n    \u003c\/svg\u003e\n  \u003c\/button\u003e\n\n  \u003cdiv class=\"accordion-body\"\u003e\n  \u003cdiv class=\"finder\"\u003e\n\n  \u003cdiv class=\"section\"\u003e\n    \u003cspan class=\"section-label\"\u003eStep 1 — measure your rim\u003c\/span\u003e\n    \u003cp class=\"section-title\"\u003eMeasure the inside of the rim opening\u003c\/p\u003e\n    \u003cp class=\"section-body\"\u003eUse a ruler or tape measure across the \u003cstrong\u003einside\u003c\/strong\u003e edge of the hatch rim — not the outside lip, not the cover itself. The KS size number refers to the nominal outer diameter of the rim; your inside measurement will be slightly smaller. That's normal — enter what you measure and the tool will match it.\u003c\/p\u003e\n\n    \u003cdiv class=\"measure-card\"\u003e\n      \u003cdiv class=\"measure-item\"\u003e\n        \u003cdiv class=\"measure-dot dot-round\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"measure-text\"\u003e\n          \u003cstrong\u003eRound hatches:\u003c\/strong\u003e one measurement — diameter straight across the centre of the opening \u003cem\u003e(not the outer flange)\u003c\/em\u003e\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"measure-item\"\u003e\n        \u003cdiv class=\"measure-dot dot-oval\"\u003e\u003c\/div\u003e\n        \u003cdiv class=\"measure-text\"\u003e\n          \u003cstrong\u003eOval hatches:\u003c\/strong\u003e two measurements — long axis × short axis, both across the inside opening\n        \u003c\/div\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003c!-- Replace src below with your CDN URL for the KS technical spec image --\u003e\n    \u003cdiv style=\"display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-top:12px;\"\u003e\n\n      \u003csvg width=\"100%\" viewbox=\"0 0 340 380\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n        \u003cdefs\u003e\n          \u003cmarker id=\"arr-r\" viewbox=\"0 0 10 10\" refx=\"8\" refy=\"5\" markerwidth=\"6\" markerheight=\"6\" orient=\"auto-start-reverse\"\u003e\n            \u003cpath d=\"M2 1L8 5L2 9\" fill=\"none\" stroke=\"context-stroke\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n          \u003c\/marker\u003e\n        \u003c\/defs\u003e\n        \u003ccircle cx=\"170\" cy=\"200\" r=\"118\" fill=\"none\" stroke=\"#1E2D34\" stroke-width=\"14\" opacity=\"0.13\"\u003e\u003c\/circle\u003e\n        \u003ccircle cx=\"170\" cy=\"200\" r=\"104\" fill=\"none\" stroke=\"#1E2D34\" stroke-width=\"3.5\" opacity=\"0.45\"\u003e\u003c\/circle\u003e\n        \u003ccircle cx=\"170\" cy=\"200\" r=\"100\" fill=\"#F8FAFB\"\u003e\u003c\/circle\u003e\n        \u003ccircle cx=\"170\" cy=\"200\" r=\"100\" fill=\"none\" stroke=\"#1E2D34\" stroke-width=\"1\" opacity=\"0.3\"\u003e\u003c\/circle\u003e\n        \u003cline x1=\"52\" y1=\"186\" x2=\"288\" y2=\"186\" stroke=\"#5A7A86\" stroke-width=\"1\" stroke-dasharray=\"4 3\" opacity=\"0.45\" marker-start=\"url(#arr-r)\" marker-end=\"url(#arr-r)\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"11\" fill=\"#5A7A86\" x=\"170\" y=\"178\" text-anchor=\"middle\"\u003eouter flange — do not use\u003c\/text\u003e\n        \u003cline x1=\"70\" y1=\"218\" x2=\"270\" y2=\"218\" stroke=\"#2D8C9E\" stroke-width=\"1.5\" marker-start=\"url(#arr-r)\" marker-end=\"url(#arr-r)\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"70\" y1=\"210\" x2=\"70\" y2=\"226\" stroke=\"#2D8C9E\" stroke-width=\"1.5\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"270\" y1=\"210\" x2=\"270\" y2=\"226\" stroke=\"#2D8C9E\" stroke-width=\"1.5\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"12\" fill=\"#2D8C9E\" font-weight=\"500\" x=\"170\" y=\"240\" text-anchor=\"middle\"\u003emeasure inside opening\u003c\/text\u003e\n        \u003crect x=\"112\" y=\"250\" width=\"116\" height=\"22\" rx=\"11\" fill=\"#2D8C9E\" opacity=\"0.12\"\u003e\u003c\/rect\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"11\" fill=\"#2D8C9E\" font-weight=\"600\" x=\"170\" y=\"265\" text-anchor=\"middle\"\u003e✓ measure here\u003c\/text\u003e\n        \u003ccircle cx=\"170\" cy=\"200\" r=\"3\" fill=\"#5A7A86\" opacity=\"0.4\"\u003e\u003c\/circle\u003e\n        \u003cline x1=\"170\" y1=\"186\" x2=\"170\" y2=\"214\" stroke=\"#5A7A86\" stroke-width=\"0.5\" opacity=\"0.3\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"156\" y1=\"200\" x2=\"184\" y2=\"200\" stroke=\"#5A7A86\" stroke-width=\"0.5\" opacity=\"0.3\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"15\" font-weight=\"600\" fill=\"#1E2D34\" x=\"170\" y=\"46\" text-anchor=\"middle\"\u003eRound hatch\u003c\/text\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"12\" fill=\"#5A7A86\" x=\"170\" y=\"64\" text-anchor=\"middle\"\u003einside diameter\u003c\/text\u003e\n      \u003c\/svg\u003e\n\n      \u003csvg width=\"100%\" viewbox=\"0 0 340 380\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\u003e\n        \u003cdefs\u003e\n          \u003cmarker id=\"arr-o\" viewbox=\"0 0 10 10\" refx=\"8\" refy=\"5\" markerwidth=\"6\" markerheight=\"6\" orient=\"auto-start-reverse\"\u003e\n            \u003cpath d=\"M2 1L8 5L2 9\" fill=\"none\" stroke=\"context-stroke\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003c\/path\u003e\n          \u003c\/marker\u003e\n        \u003c\/defs\u003e\n        \u003cellipse cx=\"170\" cy=\"200\" rx=\"152\" ry=\"102\" fill=\"none\" stroke=\"#1E2D34\" stroke-width=\"14\" opacity=\"0.13\"\u003e\u003c\/ellipse\u003e\n        \u003cellipse cx=\"170\" cy=\"200\" rx=\"138\" ry=\"88\" fill=\"none\" stroke=\"#1E2D34\" stroke-width=\"3.5\" opacity=\"0.45\"\u003e\u003c\/ellipse\u003e\n        \u003cellipse cx=\"170\" cy=\"200\" rx=\"134\" ry=\"84\" fill=\"#F8FAFB\"\u003e\u003c\/ellipse\u003e\n        \u003cellipse cx=\"170\" cy=\"200\" rx=\"134\" ry=\"84\" fill=\"none\" stroke=\"#1E2D34\" stroke-width=\"1\" opacity=\"0.3\"\u003e\u003c\/ellipse\u003e\n        \u003cline x1=\"36\" y1=\"218\" x2=\"304\" y2=\"218\" stroke=\"#2D8C9E\" stroke-width=\"1.5\" marker-start=\"url(#arr-o)\" marker-end=\"url(#arr-o)\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"36\" y1=\"210\" x2=\"36\" y2=\"226\" stroke=\"#2D8C9E\" stroke-width=\"1.5\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"304\" y1=\"210\" x2=\"304\" y2=\"226\" stroke=\"#2D8C9E\" stroke-width=\"1.5\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"12\" fill=\"#2D8C9E\" font-weight=\"500\" x=\"170\" y=\"240\" text-anchor=\"middle\"\u003elong axis\u003c\/text\u003e\n        \u003cline x1=\"188\" y1=\"116\" x2=\"188\" y2=\"284\" stroke=\"#2D8C9E\" stroke-width=\"1.5\" marker-start=\"url(#arr-o)\" marker-end=\"url(#arr-o)\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"180\" y1=\"116\" x2=\"196\" y2=\"116\" stroke=\"#2D8C9E\" stroke-width=\"1.5\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"180\" y1=\"284\" x2=\"196\" y2=\"284\" stroke=\"#2D8C9E\" stroke-width=\"1.5\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"12\" fill=\"#2D8C9E\" font-weight=\"500\" x=\"204\" y=\"204\" text-anchor=\"start\"\u003eshort axis\u003c\/text\u003e\n        \u003cline x1=\"22\" y1=\"152\" x2=\"40\" y2=\"164\" stroke=\"#5A7A86\" stroke-width=\"1\" stroke-dasharray=\"3 3\" opacity=\"0.5\" marker-end=\"url(#arr-o)\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"11\" fill=\"#5A7A86\" x=\"20\" y=\"148\" text-anchor=\"middle\"\u003eouter lip\u003c\/text\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"11\" fill=\"#5A7A86\" x=\"20\" y=\"160\" text-anchor=\"middle\"\u003e— not here\u003c\/text\u003e\n        \u003crect x=\"112\" y=\"300\" width=\"116\" height=\"22\" rx=\"11\" fill=\"#2D8C9E\" opacity=\"0.12\"\u003e\u003c\/rect\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"11\" fill=\"#2D8C9E\" font-weight=\"600\" x=\"170\" y=\"315\" text-anchor=\"middle\"\u003e✓ measure both axes\u003c\/text\u003e\n        \u003ccircle cx=\"170\" cy=\"200\" r=\"3\" fill=\"#5A7A86\" opacity=\"0.4\"\u003e\u003c\/circle\u003e\n        \u003cline x1=\"170\" y1=\"186\" x2=\"170\" y2=\"214\" stroke=\"#5A7A86\" stroke-width=\"0.5\" opacity=\"0.3\"\u003e\u003c\/line\u003e\n        \u003cline x1=\"156\" y1=\"200\" x2=\"184\" y2=\"200\" stroke=\"#5A7A86\" stroke-width=\"0.5\" opacity=\"0.3\"\u003e\u003c\/line\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"15\" font-weight=\"600\" fill=\"#1E2D34\" x=\"170\" y=\"46\" text-anchor=\"middle\"\u003eOval hatch\u003c\/text\u003e\n        \u003ctext font-family=\"-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif\" font-size=\"12\" fill=\"#5A7A86\" x=\"170\" y=\"64\" text-anchor=\"middle\"\u003einside long × short axis\u003c\/text\u003e\n      \u003c\/svg\u003e\n\n    \u003c\/div\u003e\n\n  \u003c\/div\u003e\n\n  \u003chr class=\"divider\"\u003e\n\n  \u003cdiv class=\"section\"\u003e\n    \u003cspan class=\"section-label\"\u003eStep 2 — enter your measurements\u003c\/span\u003e\n\n    \u003cdiv class=\"unit-toggle\"\u003e\n      \u003cbutton class=\"unit-btn active\" onclick=\"setUnit('mm', this)\"\u003emm\u003c\/button\u003e\n      \u003cbutton class=\"unit-btn\" onclick=\"setUnit('cm', this)\"\u003ecm\u003c\/button\u003e\n      \u003cbutton class=\"unit-btn\" onclick=\"setUnit('in', this)\"\u003einches\u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"shape-toggle\"\u003e\n      \u003cbutton class=\"shape-btn active\" id=\"btn-round\" onclick=\"setShape('round')\"\u003e\n        \u003cspan class=\"shape-icon round\"\u003e\u003c\/span\u003e Round\n      \u003c\/button\u003e\n      \u003cbutton class=\"shape-btn\" id=\"btn-oval\" onclick=\"setShape('oval')\"\u003e\n        \u003cspan class=\"shape-icon oval\"\u003e\u003c\/span\u003e Oval\n      \u003c\/button\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"input-row single\" id=\"input-row\"\u003e\n      \u003cdiv class=\"input-group\"\u003e\n        \u003clabel id=\"dim1-label\"\u003eDiameter\u003c\/label\u003e\n        \u003cinput type=\"number\" id=\"dim1\" placeholder=\"e.g. 155\" min=\"1\" step=\"0.1\"\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"input-group\" id=\"dim2-group\" style=\"display:none;\"\u003e\n        \u003clabel\u003eShort axis\u003c\/label\u003e\n        \u003cinput type=\"number\" id=\"dim2\" placeholder=\"e.g. 285\" min=\"1\" step=\"0.1\"\u003e\n      \u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cbutton class=\"find-btn\" onclick=\"findHatch()\"\u003eFind my hatch cover\u003c\/button\u003e\n\n    \u003cdiv class=\"result\" id=\"result-box\"\u003e\n      \u003cdiv class=\"result-header\"\u003e\n        \u003cspan class=\"result-eyebrow\" id=\"result-eyebrow\"\u003eYour match\u003c\/span\u003e\n        \u003cdiv class=\"result-name\" id=\"result-name\"\u003e\u003c\/div\u003e\n      \u003c\/div\u003e\n      \u003cdiv class=\"result-body\" id=\"result-body\"\u003e\u003c\/div\u003e\n    \u003c\/div\u003e\n\n    \u003cdiv class=\"note\"\u003e\n      \u003cp\u003e\u003cstrong\u003eNot sure if you have a KS rim?\u003c\/strong\u003e Kajak Sport rims are used by many kayak manufacturers including Valley, NDK, North Shore, P\u0026amp;H, Tiderace, Zegul, and others. If your boat is a Valley, NDK, North Shore, Necky, or Impex, select the VCP size option — those brands use a slightly different rim standard.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n\u003c\/div\u003e\n\n\u003cscript\u003e\nvar unit = 'mm';\nvar shape = 'round';\n\nvar hatches = [\n  {\n    name: 'Round 10',\n    shape: 'round',\n    rimOD: 110, inner: 100,\n    desc: 'Smallest round hatch. Typically used for a small day hatch, compass recess, or drain plug on older designs.',\n    sizes: ['Rim OD: 110 mm', 'Cover OD: ~115 mm'],\n    covers: [\n      { label: 'Original Rubber Cover', url: '\/products\/ks-original-round-10' },\n      { label: 'New Kayak Hatch Cover', url: '\/products\/ks-hatch-cover-round-10', primary: true }\n    ]\n  },\n  {\n    name: 'Round 15',\n    shape: 'round',\n    rimOD: 155, inner: 145,\n    desc: 'Common small round — frequently the day hatch on many sea kayaks. Found on Valley, NDK, P\u0026H, Tiderace, and others.',\n    sizes: ['Rim OD: 155 mm \/ 6.1\"', 'Cover OD: ~164 mm \/ 6.5\"'],\n    covers: [\n      { label: 'Original Rubber', url: '\/products\/ks-original-round-15' },\n      { label: 'Click-on', url: '\/products\/ks-clickon-round-15' },\n      { label: 'LRC-HT', url: '\/products\/ks-lrc-ht-round-15' },\n      { label: 'New Hatch Cover', url: '\/products\/ks-hatch-cover-round-15', primary: true }\n    ]\n  },\n  {\n    name: 'Round 20',\n    shape: 'round',\n    rimOD: 200, inner: 190,\n    desc: 'Mid-size round — commonly the rear day hatch or bow hatch on many composite sea kayaks.',\n    sizes: ['Rim OD: 200 mm \/ 7.9\"', 'Cover OD: ~210 mm \/ 8.3\"'],\n    covers: [\n      { label: 'Original Rubber', url: '\/products\/ks-original-round-20' },\n      { label: 'Click-on', url: '\/products\/ks-clickon-round-20' },\n      { label: 'LRC-HT', url: '\/products\/ks-lrc-ht-round-20' },\n      { label: 'New Hatch Cover', url: '\/products\/ks-hatch-cover-round-20', primary: true }\n    ]\n  },\n  {\n    name: 'Round 24',\n    shape: 'round',\n    rimOD: 245, inner: 232,\n    desc: 'Large round — the typical stern hatch on many sea kayaks. Very common size across most manufacturers.',\n    sizes: ['Rim OD: 245 mm \/ 9.6\"', 'Cover OD: ~255 mm \/ 10\"'],\n    covers: [\n      { label: 'Original Rubber', url: '\/products\/ks-original-round-24' },\n      { label: 'Click-on', url: '\/products\/ks-clickon-round-24' },\n      { label: 'LRC-HT', url: '\/products\/ks-lrc-ht-round-24' },\n      { label: 'New Hatch Cover', url: '\/products\/ks-hatch-cover-round-24', primary: true }\n    ]\n  },\n  {\n    name: 'VCP Round 19.5',\n    shape: 'round',\n    rimOD: 195, inner: 183,\n    desc: 'Valley\/VCP-pattern round hatch. Fits Valley, North Shore, NDK, Necky, and Impex kayaks. Different fit than the standard KS Round 20 — confirm your brand before ordering.',\n    sizes: ['Rim OD: ~195 mm \/ 7.7\"'],\n    covers: [\n      { label: 'VCP Round 19.5 Cover', url: '\/products\/ks-vcp-round-195', primary: true }\n    ]\n  },\n  {\n    name: 'Oval 42\/30',\n    shape: 'oval',\n    rimOD_long: 420, rimOD_short: 300, inner_long: 405, inner_short: 285,\n    desc: 'Standard large oval stern hatch. Very common on European composite sea kayaks including P\u0026H, Tiderace, Zegul, and many others.',\n    sizes: ['Rim OD: 420 × 300 mm', '16.5\" × 11.8\"'],\n    covers: [\n      { label: 'Original Rubber', url: '\/products\/ks-original-oval-4230' },\n      { label: 'LRC-HT', url: '\/products\/ks-lrc-ht-oval-4230' },\n      { label: 'New Hatch Cover', url: '\/products\/ks-hatch-cover-oval-4230', primary: true }\n    ]\n  },\n  {\n    name: 'Oval 44\/26',\n    shape: 'oval',\n    rimOD_long: 440, rimOD_short: 260, inner_long: 425, inner_short: 245,\n    desc: 'Narrower oval — used on some P\u0026H, Tiderace, and other designs with a more elongated hatch opening.',\n    sizes: ['Rim OD: 440 × 260 mm', '17.3\" × 10.2\"'],\n    covers: [\n      { label: 'Original Rubber', url: '\/products\/ks-original-oval-4426' },\n      { label: 'LRC-HT', url: '\/products\/ks-lrc-ht-oval-4426' },\n      { label: 'New Hatch Cover', url: '\/products\/ks-hatch-cover-oval-4426', primary: true }\n    ]\n  },\n  {\n    name: 'VCP Oval 41\/22',\n    shape: 'oval',\n    rimOD_long: 410, rimOD_short: 220, inner_long: 395, inner_short: 205,\n    desc: 'Valley\/VCP-pattern oval. Fits Valley, North Shore, NDK, Necky, and Impex kayaks. Confirm your brand before ordering.',\n    sizes: ['Rim OD: ~410 × 220 mm', '16.1\" × 8.7\"'],\n    covers: [\n      { label: 'VCP Oval 41\/22 Cover', url: '\/products\/ks-vcp-oval-4122', primary: true }\n    ]\n  }\n];\n\nfunction toMM(val) {\n  var v = parseFloat(val);\n  if (isNaN(v)) return NaN;\n  if (unit === 'cm') return v * 10;\n  if (unit === 'in') return v * 25.4;\n  return v;\n}\n\nfunction setUnit(u, btn) {\n  unit = u;\n  document.querySelectorAll('.unit-btn').forEach(function(b) { b.classList.remove('active'); });\n  btn.classList.add('active');\n  updatePlaceholders();\n}\n\nfunction setShape(s) {\n  shape = s;\n  document.getElementById('btn-round').classList.toggle('active', s === 'round');\n  document.getElementById('btn-oval').classList.toggle('active', s === 'oval');\n  var d2 = document.getElementById('dim2-group');\n  d2.style.display = s === 'oval' ? '' : 'none';\n  document.getElementById('dim1-label').textContent = s === 'round' ? 'Diameter' : 'Long axis';\n  var row = document.getElementById('input-row');\n  row.className = 'input-row' + (s === 'round' ? ' single' : '');\n  updatePlaceholders();\n  document.getElementById('result-box').classList.remove('show');\n}\n\nfunction updatePlaceholders() {\n  var d1 = document.getElementById('dim1');\n  var d2 = document.getElementById('dim2');\n  var examples = {\n    round: { mm: '155', cm: '15.5', 'in': '6.1' },\n    oval_long: { mm: '405', cm: '40.5', 'in': '15.9' },\n    oval_short: { mm: '285', cm: '28.5', 'in': '11.2' }\n  };\n  if (shape === 'round') {\n    d1.placeholder = 'e.g. ' + examples.round[unit];\n  } else {\n    d1.placeholder = 'e.g. ' + examples.oval_long[unit];\n    d2.placeholder = 'e.g. ' + examples.oval_short[unit];\n  }\n}\n\nfunction findHatch() {\n  var d1mm = toMM(document.getElementById('dim1').value);\n  var d2mm = shape === 'oval' ? toMM(document.getElementById('dim2').value) : null;\n  var tol = 20;\n  var match = null;\n\n  if (isNaN(d1mm) || (shape === 'oval' \u0026\u0026 isNaN(d2mm))) {\n    showNoMatch('Please enter a measurement first.');\n    return;\n  }\n\n  for (var i = 0; i \u003c hatches.length; i++) {\n    var h = hatches[i];\n    if (h.shape !== shape) continue;\n    if (shape === 'round') {\n      if (Math.abs(d1mm - h.inner) \u003c= tol || Math.abs(d1mm - h.rimOD) \u003c= tol) { match = h; break; }\n    } else {\n      var longMatch = Math.abs(d1mm - h.inner_long) \u003c= tol || Math.abs(d1mm - h.rimOD_long) \u003c= tol;\n      var shortMatch = Math.abs(d2mm - h.inner_short) \u003c= tol || Math.abs(d2mm - h.rimOD_short) \u003c= tol;\n      if (longMatch \u0026\u0026 shortMatch) { match = h; break; }\n    }\n  }\n\n  var box = document.getElementById('result-box');\n  box.classList.add('show');\n\n  if (!match) {\n    showNoMatch('No standard KS size matched your measurement. Double-check that you measured the inside of the rim opening. If your kayak is a Valley, NDK, North Shore, Necky, or Impex, try the VCP sizes. Still stuck? \u003ca href=\"\/pages\/contact\"\u003eContact us before ordering.\u003c\/a\u003e');\n    return;\n  }\n\n  document.getElementById('result-eyebrow').textContent = 'Your match';\n  document.getElementById('result-name').textContent = 'Kajak Sport ' + match.name;\n\n  var sizesHtml = match.sizes.map(function(s) { return '\u003cspan class=\"size-chip\"\u003e' + s + '\u003c\/span\u003e'; }).join('');\n  var linksHtml = match.covers.map(function(c) {\n    return '\u003ca class=\"result-link' + (c.primary ? ' primary' : '') + '\" href=\"' + c.url + '\"\u003e' + c.label + (c.primary ? ' →' : '') + '\u003c\/a\u003e';\n  }).join('');\n\n  document.getElementById('result-body').innerHTML =\n    '\u003cp class=\"result-desc\"\u003e' + match.desc + '\u003c\/p\u003e' +\n    '\u003cdiv class=\"result-sizes\"\u003e' + sizesHtml + '\u003c\/div\u003e' +\n    '\u003cdiv class=\"result-links\"\u003e' + linksHtml + '\u003c\/div\u003e';\n}\n\nfunction showNoMatch(msg) {\n  document.getElementById('result-eyebrow').textContent = 'No exact match found';\n  document.getElementById('result-name').textContent = '';\n  document.getElementById('result-body').innerHTML = '\u003cp class=\"result-desc\"\u003e' + msg + '\u003c\/p\u003e';\n}\n\nupdatePlaceholders();\n\u003c\/script\u003e\n\n\u003c\/div\u003e\n  \u003c\/div\u003e\n\u003cscript\u003e\nfunction toggleAccordion() {\n  var acc = document.getElementById('hatch-accordion');\n  var btn = acc.querySelector('.accordion-trigger');\n  var isOpen = acc.classList.toggle('open');\n  btn.setAttribute('aria-expanded', isOpen);\n}\n\u003c\/script\u003e\n\u003c\/div\u003e","products":[],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0042\/9608\/1443\/collections\/Kajak-Sport-Logo-OnlineShop.webp?v=1774100966","url":"https:\/\/www.kayak-ontario.com\/collections\/kajaksport.oembed","provider":"Kayak Ontario","version":"1.0","type":"link"}