{"id":6,"date":"2024-01-05T12:20:07","date_gmt":"2024-01-05T11:20:07","guid":{"rendered":"http:\/\/karniszelodz.pl\/?page_id=6"},"modified":"2026-05-29T18:09:40","modified_gmt":"2026-05-29T16:09:40","slug":"karnisze-elektryczne-lodz","status":"publish","type":"page","link":"https:\/\/karniszelodz.pl\/","title":{"rendered":"Karnisze elektryczne \u0141\u00f3d\u017a"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull is-light has-parallax\" style=\"min-height:100vh;aspect-ratio:unset;\"><div class=\"wp-block-cover__image-background wp-image-240 size-large has-parallax\" style=\"background-position:50% 50%;background-image:url(https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/07\/salon2-1024x435.webp)\"><\/div><span aria-hidden=\"true\" class=\"wp-block-cover__background has-white-background-color has-background-dim-80 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<h1 class=\"wp-block-heading has-text-color has-link-color wp-elements-c22a35628131f39ad9641f67bf0831f5\" style=\"color:#000000;margin-top:var(--wp--preset--spacing--70)\"><strong>Karnisze elektryczne \u0141\u00f3d\u017a<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"letter-spacing:1px;line-height:2\">Karnisze elektryczne \u0141\u00f3d\u017a to propozycja dla os\u00f3b, kt\u00f3re chc\u0105 wygodnie sterowa\u0107 zas\u0142onami i jednocze\u015bnie zachowa\u0107 elegancki wygl\u0105d wn\u0119trza. Oferujemy markowe systemy do zas\u0142on sterowane pilotem, aplikacj\u0105 lub automatyk\u0105 smart home. Specjalizujemy si\u0119 w produkcji karniszy elektrycznych A-OK, a w ofercie dost\u0119pne s\u0105 r\u00f3wnie\u017c rozwi\u0105zania Somfy i Forest. Przygotowujemy karnisze z nap\u0119dem sieciowym oraz wersje bateryjne \/ akumulatorowe, czyli karnisze bezprzewodowe. Ka\u017cdy system wykonujemy na wymiar, z rozsuwaniem jednostronnym albo dwustronnym typu kurtyna. Mo\u017cemy tak\u017ce dopasowa\u0107 karnisz do zas\u0142on na flexach oraz do eleganckiego systemu wave.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-color has-link-color wp-elements-2322d8929da331f9b7bfb7e4db3fcc9e\" style=\"color:#000000;font-size:20px\"><strong>Karnisze na wymiar w \u0141odzi<\/strong><\/h2>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-25f65e1ad605dc5f0ac0eadfa6857b4d wp-block-paragraph\" style=\"color:#000000;font-size:17px;letter-spacing:1px;line-height:2\">Karnisz elektryczny to w praktyce automatyczny system do przesuwania zas\u0142on lub firan za pomoc\u0105 silnika. Dzi\u0119ki niemu mo\u017cesz sterowa\u0107 dekoracj\u0105 okienn\u0105 z pilota, aplikacji w telefonie albo z poziomu bardziej rozbudowanego systemu smart home. Nasze nap\u0119dy mog\u0105 wsp\u00f3\u0142pracowa\u0107 m.in. z systemami KNX, Grenton, Ampio, Loxone, Fibaro oraz Tuya. Wszystkie karnisze wykonujemy indywidualnie, pod konkretny wymiar i konkretne okno. Dost\u0119pne s\u0105 r\u00f3wnie\u017c karnisze gi\u0119te, <a title=\"Karnisze elektryczne do skos\u00f3w\" href=\"https:\/\/okarnisze.pl\/karnisze-elektryczne-do-skosow\">karnisze elektryczne do skos\u00f3w<\/a> oraz systemy do wysokich przeszkle\u0144. Dzi\u0119ki temu ca\u0142o\u015b\u0107 mo\u017cna precyzyjnie dopasowa\u0107 do projektu wn\u0119trza.<\/p>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-fe48e5de wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"tel:+48667057777\">Wyceny +48 667 057 777<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"mailto:kontakt@karniszelodz.pl\">kontakt@karniszelodz.pl<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/okarnisze.pl\">Sklep Online<\/a><\/div>\n\n\n\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.youtube.com\/playlist?list=PLjjJROwsQQdRmHc9e4chi8YapJhhSD5gE\" title=\"Relizacje monta\u017cu karniszy elektrycznych\" target=\"_blank\" rel=\"noreferrer noopener\">Nasze realizacje &#8211; Filmy w YouTube<\/a><\/div>\n<\/div>\n<\/div><\/div>\n\n\n<!-- HFCM by 99 Robots - Snippet # 4: pasek wymiar\u00f3w -->\n<style>\r\n  \/* ===== AZHOME \u2014 pasek wymiar\u00f3w + cena + podpowied\u017a tylko na kropce ===== *\/\r\n\r\n  @keyframes azTrackBgFloat{\r\n    0%{ background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n    35%{ background-position:55% 16%, 58% 32%, 68% 68%, 0% 0%; }\r\n    70%{ background-position:100% 28%, 18% 62%, 95% 42%, 0% 0%; }\r\n    100%{ background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n  }\r\n\r\n  @keyframes azTrackFloat{\r\n    0%,100%{ transform:translateY(0); }\r\n    50%{ transform:translateY(-3px); }\r\n  }\r\n\r\n  @keyframes azTrackPulse{\r\n    0%{ box-shadow:0 0 0 rgba(53,214,41,0); }\r\n    50%{ box-shadow:0 0 28px rgba(53,214,41,.48); }\r\n    100%{ box-shadow:0 0 0 rgba(53,214,41,0); }\r\n  }\r\n\r\n  @keyframes azTrackBoom{\r\n    0%{ transform:scale(1); }\r\n    34%{ transform:scale(1.24); }\r\n    68%{ transform:scale(.96); }\r\n    100%{ transform:scale(1); }\r\n  }\r\n\r\n  @keyframes azTrackMessageIn{\r\n    0%{ opacity:0; transform:translateY(8px); }\r\n    100%{ opacity:1; transform:translateY(0); }\r\n  }\r\n\r\n  @keyframes azTrackHintPop{\r\n    0%{ opacity:0; transform:translate(-50%, 8px) scale(.92); }\r\n    65%{ opacity:1; transform:translate(-50%, -2px) scale(1.06); }\r\n    100%{ opacity:1; transform:translate(-50%, 0) scale(1); }\r\n  }\r\n\r\n  @keyframes azTrackHintGlow{\r\n    0%,100%{\r\n      box-shadow:\r\n        0 10px 24px rgba(0,0,0,.18),\r\n        0 0 0 rgba(53,214,41,0);\r\n    }\r\n    50%{\r\n      box-shadow:\r\n        0 12px 28px rgba(0,0,0,.22),\r\n        0 0 22px rgba(53,214,41,.36);\r\n    }\r\n  }\r\n\r\n  .az-track-wrap{\r\n    width:100%;\r\n    margin:24px auto;\r\n    padding:0;\r\n    box-sizing:border-box;\r\n    isolation:isolate;\r\n    text-align:center;\r\n  }\r\n\r\n  .az-track-card{\r\n    max-width:860px;\r\n    margin:0 auto;\r\n    padding:16px;\r\n    border:1px solid rgba(184,137,45,.50);\r\n    border-radius:24px;\r\n    position:relative;\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    box-sizing:border-box;\r\n    background:\r\n      radial-gradient(1200px 420px at 18% 12%,\r\n        rgba(48,190,34,.30) 0%,\r\n        rgba(48,190,34,.13) 36%,\r\n        rgba(255,255,255,0) 72%),\r\n      radial-gradient(900px 360px at 86% 22%,\r\n        rgba(117,28,34,.18) 0%,\r\n        rgba(117,28,34,.08) 42%,\r\n        rgba(255,255,255,0) 74%),\r\n      radial-gradient(980px 520px at 58% 92%,\r\n        rgba(184,137,45,.22) 0%,\r\n        rgba(184,137,45,.12) 38%,\r\n        rgba(255,255,255,0) 74%),\r\n      linear-gradient(180deg,\r\n        rgba(255,255,255,.95) 0%,\r\n        rgba(255,255,255,.88) 100%);\r\n    background-color:#fff;\r\n    background-size:230% 230%, 250% 250%, 240% 240%, 100% 100%;\r\n    background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%;\r\n    animation:\r\n      azTrackBgFloat 4s ease-in-out infinite,\r\n      azTrackFloat 3.4s ease-in-out infinite;\r\n    box-shadow:\r\n      0 18px 46px rgba(0,0,0,.14),\r\n      0 0 26px rgba(48,190,34,.12),\r\n      inset 0 0 0 1px rgba(255,255,255,.70);\r\n  }\r\n\r\n  .az-track-card::before{\r\n    content:\"\";\r\n    position:absolute;\r\n    inset:0;\r\n    z-index:0;\r\n    pointer-events:none;\r\n    border-radius:inherit;\r\n    box-shadow:\r\n      inset 0 0 0 1px rgba(255,255,255,.78),\r\n      inset 0 0 34px rgba(255,255,255,.42);\r\n  }\r\n\r\n  .az-track-inner{\r\n    position:relative;\r\n    z-index:1;\r\n    padding:18px 16px 16px;\r\n    border:1px solid rgba(0,0,0,.08);\r\n    border-radius:20px;\r\n    background:rgba(255,255,255,.86);\r\n    box-shadow:0 12px 30px rgba(0,0,0,.08);\r\n    backdrop-filter:blur(6px);\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-track-head{\r\n    display:grid;\r\n    grid-template-columns:1fr auto;\r\n    gap:18px;\r\n    align-items:end;\r\n    margin:0 0 14px;\r\n    text-align:left;\r\n  }\r\n\r\n  .az-track-title{\r\n    margin:0;\r\n    font-size:21px;\r\n    line-height:1.18;\r\n    font-weight:900;\r\n    color:#111;\r\n    letter-spacing:-.025em;\r\n  }\r\n\r\n  .az-track-subtitle{\r\n    margin:6px 0 0;\r\n    color:rgba(0,0,0,.62);\r\n    font-size:13.5px;\r\n    line-height:1.45;\r\n  }\r\n\r\n  .az-track-live-box{\r\n    min-width:210px;\r\n    text-align:right;\r\n  }\r\n\r\n  .az-track-live{\r\n    display:flex;\r\n    align-items:baseline;\r\n    justify-content:flex-end;\r\n    gap:6px;\r\n    text-align:right;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .az-track-live-label{\r\n    font-size:12px;\r\n    color:rgba(0,0,0,.58);\r\n    font-weight:700;\r\n  }\r\n\r\n  .az-track-live-number{\r\n    display:inline-block;\r\n    font-family:Arial, sans-serif;\r\n    font-size:30px;\r\n    line-height:.95;\r\n    font-weight:900;\r\n    letter-spacing:-.06em;\r\n    color:#16a34a;\r\n    transform-origin:center;\r\n  }\r\n\r\n  .az-track-live-number.az-track-live-number--boom{\r\n    animation:azTrackBoom .56s cubic-bezier(.2,.9,.2,1.25);\r\n  }\r\n\r\n  .az-track-live-unit{\r\n    font-size:14px;\r\n    font-weight:900;\r\n    color:#111;\r\n  }\r\n\r\n  .az-track-price{\r\n    margin-top:8px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    align-items:flex-end;\r\n    gap:3px;\r\n  }\r\n\r\n  .az-track-price-row{\r\n    display:flex;\r\n    align-items:baseline;\r\n    justify-content:flex-end;\r\n    gap:7px;\r\n  }\r\n\r\n  .az-track-price-label{\r\n    font-size:12px;\r\n    color:rgba(0,0,0,.58);\r\n    font-weight:800;\r\n    text-transform:uppercase;\r\n    letter-spacing:.08em;\r\n  }\r\n\r\n  .az-track-price-value{\r\n    font-size:28px;\r\n    line-height:1;\r\n    font-weight:900;\r\n    color:#111;\r\n    letter-spacing:-.04em;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .az-track-price-note{\r\n    font-size:12px;\r\n    color:rgba(0,0,0,.55);\r\n    line-height:1.35;\r\n  }\r\n\r\n  .az-track-scale{\r\n    position:relative;\r\n    height:44px;\r\n    margin:0 0 8px;\r\n    user-select:none;\r\n  }\r\n\r\n  .az-track-scale-label{\r\n    position:absolute;\r\n    top:0;\r\n    transform:translateX(-50%);\r\n    font-size:10px;\r\n    line-height:1;\r\n    color:rgba(0,0,0,.58);\r\n    font-weight:800;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .az-track-scale-label::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    left:50%;\r\n    top:15px;\r\n    width:1px;\r\n    height:18px;\r\n    background:rgba(0,0,0,.16);\r\n    transform:translateX(-50%);\r\n  }\r\n\r\n  .az-track-bar-area{\r\n    position:relative;\r\n    padding:18px 0 0;\r\n  }\r\n\r\n  .az-track-bar-shell{\r\n    position:relative;\r\n    height:24px;\r\n    border-radius:999px;\r\n    background:\r\n      linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.035)),\r\n      rgba(255,255,255,.92);\r\n    border:1px solid rgba(0,0,0,.12);\r\n    overflow:visible;\r\n    box-shadow:\r\n      inset 0 2px 5px rgba(0,0,0,.10),\r\n      0 8px 18px rgba(0,0,0,.06);\r\n    cursor:pointer;\r\n    touch-action:none;\r\n  }\r\n\r\n  .az-track-bar-fill{\r\n    position:absolute;\r\n    left:0;\r\n    top:0;\r\n    height:100%;\r\n    width:0%;\r\n    border-radius:999px;\r\n    background:\r\n      linear-gradient(90deg,\r\n        rgba(53,214,41,.95) 0%,\r\n        rgba(31,184,44,.98) 42%,\r\n        rgba(8,145,55,.98) 100%);\r\n    box-shadow:\r\n      0 0 18px rgba(53,214,41,.42),\r\n      inset 0 1px 0 rgba(255,255,255,.44);\r\n    transition:width 1.55s cubic-bezier(.18,.9,.22,1);\r\n    pointer-events:none;\r\n  }\r\n\r\n  .az-track-bar-fill.az-track-bar-fill--pulse{\r\n    animation:azTrackPulse .7s ease-in-out;\r\n  }\r\n\r\n  .az-track-pointer{\r\n    position:absolute;\r\n    top:50%;\r\n    left:0%;\r\n    width:30px;\r\n    height:30px;\r\n    border-radius:50%;\r\n    background:#fff;\r\n    border:4px solid #16a34a;\r\n    box-shadow:\r\n      0 8px 18px rgba(0,0,0,.20),\r\n      0 0 18px rgba(53,214,41,.40);\r\n    transform:translate(-50%,-50%);\r\n    transition:left 1.55s cubic-bezier(.18,.9,.22,1), transform .15s ease;\r\n    z-index:4;\r\n    cursor:pointer;\r\n    touch-action:none;\r\n  }\r\n\r\n  .az-track-pointer::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    inset:5px;\r\n    border-radius:50%;\r\n    background:#16a34a;\r\n  }\r\n\r\n  .az-track-pointer:hover{\r\n    transform:translate(-50%,-50%) scale(1.14);\r\n  }\r\n\r\n  .az-track-wrap.az-track-manual .az-track-pointer{\r\n    transform:translate(-50%,-50%) scale(1.08);\r\n  }\r\n\r\n  .az-track-wrap.az-track-dragging .az-track-pointer{\r\n    cursor:grabbing;\r\n    transform:translate(-50%,-50%) scale(1.14);\r\n  }\r\n\r\n  .az-track-wrap.az-track-manual .az-track-bar-fill,\r\n  .az-track-wrap.az-track-manual .az-track-pointer{\r\n    transition:none;\r\n  }\r\n\r\n  .az-track-hint{\r\n    position:absolute;\r\n    left:0%;\r\n    top:-18px;\r\n    z-index:8;\r\n    transform:translateX(-50%);\r\n    display:none;\r\n    align-items:center;\r\n    justify-content:center;\r\n    min-height:34px;\r\n    padding:8px 14px;\r\n    border-radius:999px;\r\n    background:#111;\r\n    color:#fff !important;\r\n    text-decoration:none !important;\r\n    font-size:13px;\r\n    line-height:1;\r\n    font-weight:900;\r\n    white-space:nowrap;\r\n    box-shadow:0 10px 24px rgba(0,0,0,.18);\r\n    cursor:pointer;\r\n  }\r\n\r\n  .az-track-hint::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    left:50%;\r\n    bottom:-6px;\r\n    width:12px;\r\n    height:12px;\r\n    background:#111;\r\n    transform:translateX(-50%) rotate(45deg);\r\n    border-radius:2px;\r\n  }\r\n\r\n  .az-track-hint.az-track-hint--show{\r\n    display:inline-flex;\r\n    animation:\r\n      azTrackHintPop .30s ease both,\r\n      azTrackHintGlow 1.6s ease-in-out infinite;\r\n  }\r\n\r\n  .az-track-message{\r\n    min-height:70px;\r\n    margin:14px 0 0;\r\n    padding:13px 15px;\r\n    border-radius:16px;\r\n    border:1px solid rgba(48,190,34,.26);\r\n    background:\r\n      linear-gradient(135deg, rgba(48,190,34,.08), rgba(255,255,255,.90) 48%, rgba(184,137,45,.10));\r\n    color:rgba(0,0,0,.76);\r\n    font-size:15px;\r\n    line-height:1.45;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-track-message.az-track-message--show{\r\n    animation:azTrackMessageIn .34s ease both;\r\n  }\r\n\r\n  .az-track-message strong{\r\n    color:#111;\r\n    font-weight:900;\r\n  }\r\n\r\n  @media (max-width:760px){\r\n    .az-track-card{\r\n      max-width:94%;\r\n      padding:10px;\r\n      border-radius:20px;\r\n    }\r\n\r\n    .az-track-inner{\r\n      padding:16px 10px 12px;\r\n      border-radius:18px;\r\n    }\r\n\r\n    .az-track-head{\r\n      grid-template-columns:1fr;\r\n      text-align:center;\r\n      gap:12px;\r\n    }\r\n\r\n    .az-track-title{\r\n      font-size:19px;\r\n    }\r\n\r\n    .az-track-subtitle{\r\n      max-width:460px;\r\n      margin-left:auto;\r\n      margin-right:auto;\r\n    }\r\n\r\n    .az-track-live-box{\r\n      min-width:0;\r\n      text-align:center;\r\n    }\r\n\r\n    .az-track-live,\r\n    .az-track-price-row{\r\n      justify-content:center;\r\n      text-align:center;\r\n    }\r\n\r\n    .az-track-price{\r\n      align-items:center;\r\n    }\r\n\r\n    .az-track-live-number{\r\n      font-size:34px;\r\n    }\r\n\r\n    .az-track-price-value{\r\n      font-size:30px;\r\n    }\r\n\r\n    .az-track-scale{\r\n      height:54px;\r\n      margin-top:4px;\r\n    }\r\n\r\n    .az-track-scale-label{\r\n      font-size:9px;\r\n    }\r\n\r\n    .az-track-scale-label:nth-child(even){\r\n      top:22px;\r\n    }\r\n\r\n    .az-track-scale-label:nth-child(even)::after{\r\n      top:-7px;\r\n      height:12px;\r\n    }\r\n\r\n    .az-track-hint{\r\n      font-size:12px;\r\n      padding:8px 12px;\r\n      top:-17px;\r\n    }\r\n\r\n    .az-track-message{\r\n      font-size:14px;\r\n      min-height:82px;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce){\r\n    .az-track-card,\r\n    .az-track-bar-fill,\r\n    .az-track-pointer,\r\n    .az-track-live-number.az-track-live-number--boom,\r\n    .az-track-message.az-track-message--show,\r\n    .az-track-hint.az-track-hint--show{\r\n      animation:none !important;\r\n      transition:none !important;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"az-track-wrap\">\r\n  <div class=\"az-track-card\">\r\n    <div class=\"az-track-inner\">\r\n\r\n      <div class=\"az-track-head\">\r\n        <div>\r\n          <h3 class=\"az-track-title\">Karnisz elektryczny na dok\u0142adny wymiar<\/h3>\r\n          <p class=\"az-track-subtitle\">\r\n            Przesu\u0144 zielon\u0105 kropk\u0119 lub zatrzymaj animacj\u0119 kursorem. Poka\u017cemy orientacyjny zakres d\u0142ugo\u015bci i cen\u0119 dla wybranego wymiaru.\r\n          <\/p>\r\n        <\/div>\r\n\r\n        <div class=\"az-track-live-box\">\r\n          <div class=\"az-track-live\" aria-label=\"Wybrany wymiar karnisza\">\r\n            <span class=\"az-track-live-label\">wymiar<\/span>\r\n            <span class=\"az-track-live-number\">100<\/span>\r\n            <span class=\"az-track-live-unit\">cm<\/span>\r\n          <\/div>\r\n\r\n          <div class=\"az-track-price\" aria-label=\"Cena karnisza dla wybranego zakresu d\u0142ugo\u015bci\">\r\n            <div class=\"az-track-price-row\">\r\n              <span class=\"az-track-price-label\">cena od<\/span>\r\n              <span class=\"az-track-price-value\">938,70 z\u0142<\/span>\r\n            <\/div>\r\n            <span class=\"az-track-price-note\">dla zakresu: do 100 cm<\/span>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-track-scale\" aria-hidden=\"true\"><\/div>\r\n\r\n      <div class=\"az-track-bar-area\">\r\n        <div\r\n          class=\"az-track-bar-shell\"\r\n          role=\"slider\"\r\n          aria-label=\"Wybierz d\u0142ugo\u015b\u0107 karnisza\"\r\n          aria-valuemin=\"100\"\r\n          aria-valuemax=\"1200\"\r\n          aria-valuenow=\"100\"\r\n          tabindex=\"0\">\r\n          <div class=\"az-track-bar-fill\"><\/div>\r\n          <div class=\"az-track-pointer\"><\/div>\r\n        <\/div>\r\n\r\n        <a\r\n          class=\"az-track-hint\"\r\n          href=\"https:\/\/osklep.pl\/products\/karnisz-elektryczny-warszawa-rf-wifi-5w-zigbee\"\r\n          target=\"_blank\"\r\n          rel=\"noopener\"\r\n          aria-label=\"Kliknij i zam\u00f3w karnisz elektryczny\">\r\n          Kliknij i zam\u00f3w.\r\n        <\/a>\r\n      <\/div>\r\n\r\n      <div class=\"az-track-message\">\r\n        Tw\u00f3j karnisz wykonamy na dok\u0142adny rozmiar, jaki potrzebujesz.\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const min = 100;\r\n  const max = 1200;\r\n  const step = 50;\r\n  const orderUrl = 'https:\/\/osklep.pl\/products\/karnisz-elektryczny-warszawa-rf-wifi-5w-zigbee';\r\n\r\n  \/*\r\n    Ceny do 950 cm wpisane r\u0119cznie.\r\n    Zakresy od 1000 cm do 1200 cm s\u0105 liczone automatycznie\r\n    na podstawie \u015bredniej r\u00f3\u017cnicy mi\u0119dzy kolejnymi wcze\u015bniejszymi zakresami.\r\n  *\/\r\n  const BASE_PRICE_BY_RANGE = {\r\n    100: 938.70,\r\n    150: 1006.20,\r\n    200: 1073.70,\r\n    250: 1141.20,\r\n    300: 1208.70,\r\n    350: 1276.20,\r\n    400: 1343.70,\r\n    450: 1411.20,\r\n    500: 1478.70,\r\n    550: 1546.20,\r\n    600: 1613.70,\r\n    650: 1681.20,\r\n    700: 1748.70,\r\n    750: 1816.20,\r\n    800: 1883.70,\r\n    850: 1951.20,\r\n    900: 2018.70,\r\n    950: 2086.20\r\n  };\r\n\r\n  function buildPriceMap(){\r\n    const priceMap = Object.assign({}, BASE_PRICE_BY_RANGE);\r\n    const ranges = Object.keys(BASE_PRICE_BY_RANGE).map(Number).sort(function(a,b){ return a - b; });\r\n\r\n    let sumDiff = 0;\r\n    let diffCount = 0;\r\n\r\n    for(let i = 1; i < ranges.length; i++){\r\n      const previousRange = ranges[i - 1];\r\n      const currentRange = ranges[i];\r\n      const diff = BASE_PRICE_BY_RANGE[currentRange] - BASE_PRICE_BY_RANGE[previousRange];\r\n\r\n      sumDiff += diff;\r\n      diffCount++;\r\n    }\r\n\r\n    const averageDiff = diffCount ? (sumDiff \/ diffCount) : 0;\r\n\r\n    for(let range = 1000; range <= 1200; range += step){\r\n      const previousRange = range - step;\r\n      priceMap[range] = Math.round((priceMap[previousRange] + averageDiff) * 100) \/ 100;\r\n    }\r\n\r\n    return priceMap;\r\n  }\r\n\r\n  const PRICE_BY_RANGE = buildPriceMap();\r\n\r\n  const wrap = document.querySelector('.az-track-wrap');\r\n  if(!wrap) return;\r\n\r\n  const card = wrap.querySelector('.az-track-card');\r\n  const scale = wrap.querySelector('.az-track-scale');\r\n  const bar = wrap.querySelector('.az-track-bar-shell');\r\n  const fill = wrap.querySelector('.az-track-bar-fill');\r\n  const pointer = wrap.querySelector('.az-track-pointer');\r\n  const numberEl = wrap.querySelector('.az-track-live-number');\r\n  const message = wrap.querySelector('.az-track-message');\r\n  const hint = wrap.querySelector('.az-track-hint');\r\n  const priceValueEl = wrap.querySelector('.az-track-price-value');\r\n  const priceNoteEl = wrap.querySelector('.az-track-price-note');\r\n\r\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  let currentValue = min;\r\n  let autoTimer = null;\r\n  let hintHideTimer = null;\r\n  let isManual = false;\r\n  let isDragging = false;\r\n  let lastUserValue = min;\r\n\r\n  function clamp(value, minValue, maxValue){\r\n    return Math.max(minValue, Math.min(maxValue, value));\r\n  }\r\n\r\n  function valueToPercent(value){\r\n    return ((value - min) \/ (max - min)) * 100;\r\n  }\r\n\r\n  function percentToValue(percent){\r\n    return Math.round(min + ((max - min) * (percent \/ 100)));\r\n  }\r\n\r\n  function getRangeForValue(value){\r\n    return clamp(Math.ceil(value \/ step) * step, min, max);\r\n  }\r\n\r\n  function formatPrice(price){\r\n    return price.toLocaleString('pl-PL', {\r\n      minimumFractionDigits: 2,\r\n      maximumFractionDigits: 2\r\n    }) + ' z\u0142';\r\n  }\r\n\r\n  function getPriceForValue(value){\r\n    const range = getRangeForValue(value);\r\n    return PRICE_BY_RANGE[range] || PRICE_BY_RANGE[max];\r\n  }\r\n\r\n  function updatePrice(value){\r\n    const range = getRangeForValue(value);\r\n    const price = getPriceForValue(value);\r\n\r\n    if(priceValueEl){\r\n      priceValueEl.textContent = formatPrice(price);\r\n    }\r\n\r\n    if(priceNoteEl){\r\n      priceNoteEl.textContent = 'dla zakresu: do ' + range + ' cm';\r\n    }\r\n  }\r\n\r\n  function randomBetweenRanges(){\r\n    const rangesCount = Math.floor((max - min) \/ step);\r\n    const rangeIndex = Math.floor(Math.random() * rangesCount);\r\n    const rangeStart = min + (rangeIndex * step);\r\n\r\n    return Math.floor(rangeStart + 1 + Math.random() * (step - 2));\r\n  }\r\n\r\n  function renderScale(){\r\n    scale.innerHTML = '';\r\n\r\n    for(let value = min; value <= max; value += step){\r\n      const label = document.createElement('span');\r\n      label.className = 'az-track-scale-label';\r\n      label.textContent = value;\r\n      label.style.left = valueToPercent(value) + '%';\r\n      scale.appendChild(label);\r\n    }\r\n  }\r\n\r\n  function setPosition(value){\r\n    const safeValue = clamp(value, min, max);\r\n    const percent = valueToPercent(safeValue);\r\n\r\n    fill.style.width = percent + '%';\r\n    pointer.style.left = percent + '%';\r\n    hint.style.left = percent + '%';\r\n    bar.setAttribute('aria-valuenow', safeValue);\r\n\r\n    currentValue = safeValue;\r\n    updatePrice(safeValue);\r\n  }\r\n\r\n  function setMessage(value){\r\n\r\n  message.innerHTML =\r\n\r\n    'Tw\u00f3j karnisz wykonamy na dok\u0142adny rozmiar, jaki potrzebujesz. <strong>' +\r\n\r\n    value +\r\n\r\n    ' cm<\/strong>';\r\n\r\n  message.classList.remove('az-track-message--show');\r\n\r\n  void message.offsetWidth;\r\n\r\n  message.classList.add('az-track-message--show');\r\n\r\n}\r\n  function boomNumber(){\r\n    numberEl.classList.remove('az-track-live-number--boom');\r\n    void numberEl.offsetWidth;\r\n    numberEl.classList.add('az-track-live-number--boom');\r\n  }\r\n\r\n  function pulseFill(){\r\n    fill.classList.remove('az-track-bar-fill--pulse');\r\n    void fill.offsetWidth;\r\n    fill.classList.add('az-track-bar-fill--pulse');\r\n  }\r\n\r\n  function animateNumber(from, to, duration){\r\n    const startTime = performance.now();\r\n\r\n    function tick(now){\r\n      const elapsed = now - startTime;\r\n      const progress = Math.min(elapsed \/ duration, 1);\r\n      const eased = 1 - Math.pow(1 - progress, 2.2);\r\n      const current = Math.round(from + ((to - from) * eased));\r\n\r\n      numberEl.textContent = current;\r\n\r\n      if(progress < 1){\r\n        requestAnimationFrame(tick);\r\n      } else {\r\n        numberEl.textContent = to;\r\n        boomNumber();\r\n      }\r\n    }\r\n\r\n    requestAnimationFrame(tick);\r\n  }\r\n\r\n  function clearAuto(){\r\n    if(autoTimer){\r\n      clearTimeout(autoTimer);\r\n      autoTimer = null;\r\n    }\r\n  }\r\n\r\n  function clearHintTimer(){\r\n    if(hintHideTimer){\r\n      clearTimeout(hintHideTimer);\r\n      hintHideTimer = null;\r\n    }\r\n  }\r\n\r\n  function hideHint(){\r\n    clearHintTimer();\r\n    hint.classList.remove('az-track-hint--show');\r\n  }\r\n\r\n  function showHint(value){\r\n    clearHintTimer();\r\n    hint.style.left = valueToPercent(value) + '%';\r\n    hint.classList.remove('az-track-hint--show');\r\n    void hint.offsetWidth;\r\n    hint.classList.add('az-track-hint--show');\r\n  }\r\n\r\n  function scheduleHintHide(){\r\n    clearHintTimer();\r\n    hintHideTimer = setTimeout(function(){\r\n      if(!hint.matches(':hover') && !pointer.matches(':hover')){\r\n        hideHint();\r\n      }\r\n    }, 260);\r\n  }\r\n\r\n  function manualValueFromEvent(event){\r\n    const rect = bar.getBoundingClientRect();\r\n    const clientX = event.touches && event.touches[0] ? event.touches[0].clientX : event.clientX;\r\n    const percent = clamp(((clientX - rect.left) \/ rect.width) * 100, 0, 100);\r\n    return percentToValue(percent);\r\n  }\r\n\r\n  function updateManual(event){\r\n    const value = manualValueFromEvent(event);\r\n    lastUserValue = value;\r\n\r\n    setPosition(value);\r\n    numberEl.textContent = value;\r\n    setMessage(value);\r\n  }\r\n\r\n  function startManual(){\r\n    isManual = true;\r\n    clearAuto();\r\n    wrap.classList.add('az-track-manual');\r\n  }\r\n\r\n  function stopManual(){\r\n    isManual = false;\r\n    isDragging = false;\r\n    wrap.classList.remove('az-track-manual');\r\n    wrap.classList.remove('az-track-dragging');\r\n    hideHint();\r\n    autoTimer = setTimeout(loop, 1200);\r\n  }\r\n\r\n  function loop(){\r\n    if(isManual || isDragging) return;\r\n\r\n    const fromValue = currentValue;\r\n    const nextValue = randomBetweenRanges();\r\n\r\n    message.classList.remove('az-track-message--show');\r\n    fill.classList.remove('az-track-bar-fill--pulse');\r\n    hideHint();\r\n\r\n    setPosition(nextValue);\r\n\r\n    if(prefersReducedMotion){\r\n      numberEl.textContent = nextValue;\r\n      setMessage(nextValue);\r\n      return;\r\n    }\r\n\r\n    animateNumber(fromValue, nextValue, 1500);\r\n\r\n    setTimeout(function(){\r\n      if(isManual || isDragging) return;\r\n\r\n      pulseFill();\r\n      setMessage(nextValue);\r\n      boomNumber();\r\n\r\n      currentValue = nextValue;\r\n    }, 1580);\r\n\r\n    autoTimer = setTimeout(loop, 4300);\r\n  }\r\n\r\n  renderScale();\r\n  setPosition(min);\r\n  setMessage(min);\r\n\r\n  card.addEventListener('mouseenter', function(){\r\n    startManual();\r\n  });\r\n\r\n  card.addEventListener('mouseleave', function(){\r\n    stopManual();\r\n  });\r\n\r\n  pointer.addEventListener('mouseenter', function(){\r\n    showHint(currentValue);\r\n  });\r\n\r\n  pointer.addEventListener('mouseleave', function(){\r\n    scheduleHintHide();\r\n  });\r\n\r\n  hint.addEventListener('mouseenter', function(){\r\n    clearHintTimer();\r\n  });\r\n\r\n  hint.addEventListener('mouseleave', function(){\r\n    scheduleHintHide();\r\n  });\r\n\r\n  pointer.addEventListener('click', function(event){\r\n    event.preventDefault();\r\n    event.stopPropagation();\r\n    window.open(orderUrl, '_blank', 'noopener');\r\n  });\r\n\r\n  hint.addEventListener('click', function(event){\r\n    event.stopPropagation();\r\n  });\r\n\r\n  bar.addEventListener('pointerdown', function(event){\r\n    event.preventDefault();\r\n    startManual();\r\n    isDragging = true;\r\n    wrap.classList.add('az-track-dragging');\r\n    bar.setPointerCapture(event.pointerId);\r\n    updateManual(event);\r\n    hideHint();\r\n  });\r\n\r\n  bar.addEventListener('pointermove', function(event){\r\n    if(!isManual && !isDragging) return;\r\n    updateManual(event);\r\n  });\r\n\r\n  bar.addEventListener('pointerup', function(event){\r\n    isDragging = false;\r\n    wrap.classList.remove('az-track-dragging');\r\n\r\n    try{\r\n      bar.releasePointerCapture(event.pointerId);\r\n    }catch(e){}\r\n\r\n    boomNumber();\r\n\r\n    if(pointer.matches(':hover')){\r\n      showHint(lastUserValue);\r\n    }\r\n  });\r\n\r\n  bar.addEventListener('click', function(event){\r\n    if(event.target === hint || event.target === pointer) return;\r\n    updateManual(event);\r\n    boomNumber();\r\n    pulseFill();\r\n  });\r\n\r\n  bar.addEventListener('keydown', function(event){\r\n    let value = currentValue;\r\n\r\n    if(event.key === 'ArrowLeft') value -= 1;\r\n    if(event.key === 'ArrowRight') value += 1;\r\n    if(event.key === 'PageDown') value -= 50;\r\n    if(event.key === 'PageUp') value += 50;\r\n    if(event.key === 'Home') value = min;\r\n    if(event.key === 'End') value = max;\r\n\r\n    if(value !== currentValue){\r\n      event.preventDefault();\r\n      startManual();\r\n\r\n      value = clamp(value, min, max);\r\n      lastUserValue = value;\r\n\r\n      setPosition(value);\r\n      numberEl.textContent = value;\r\n      setMessage(value);\r\n      boomNumber();\r\n      pulseFill();\r\n\r\n      if(pointer.matches(':hover')){\r\n        showHint(value);\r\n      }\r\n    }\r\n  });\r\n\r\n  autoTimer = setTimeout(loop, 700);\r\n})();\r\n<\/script>\n<!-- \/end HFCM by 99 Robots -->\n\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><!-- HFCM by 99 Robots - Snippet # 5: cena am50 -->\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Audiowide&display=swap');\r\n\r\n  \/* ===== AZHOME BOX \u2014 AM75 WiFi \/ Zigbee \u2014 logo+cena \/ opis \/ tytu\u0142 \/ przycisk ===== *\/\r\n\r\n  @keyframes azPriceBgFloat{\r\n    0%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n    35%{ background-position: 55% 16%, 58% 32%, 68% 68%, 0% 0%; }\r\n    70%{ background-position: 100% 28%, 18% 62%, 95% 42%, 0% 0%; }\r\n    100%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n  }\r\n\r\n  @keyframes azPriceFloat{\r\n    0%,100%{ transform:translateY(0); }\r\n    50%{ transform:translateY(-3px); }\r\n  }\r\n\r\n  @keyframes azPriceShine{\r\n    0%{ left:-45%; opacity:0; }\r\n    10%{ opacity:1; }\r\n    28%{ left:115%; opacity:0; }\r\n    100%{ left:115%; opacity:0; }\r\n  }\r\n\r\n  @keyframes azPriceBoom{\r\n    0%{ transform:scale(1); }\r\n    35%{ transform:scale(1.18); }\r\n    65%{ transform:scale(.97); }\r\n    100%{ transform:scale(1); }\r\n  }\r\n\r\n  .az-price-wrap{\r\n    width:100%;\r\n    margin:24px auto;\r\n    padding:0;\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    isolation:isolate;\r\n  }\r\n\r\n  .az-price-card{\r\n    max-width:720px;\r\n    margin:0 auto;\r\n    padding:14px;\r\n    border:1px solid rgba(184,137,45,.55);\r\n    border-radius:22px;\r\n    text-align:center;\r\n    position:relative;\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    box-sizing:border-box;\r\n    background:\r\n      radial-gradient(1200px 420px at 18% 12%,\r\n        rgba(48,190,34,.34) 0%,\r\n        rgba(48,190,34,.15) 36%,\r\n        rgba(255,255,255,0) 72%),\r\n      radial-gradient(900px 360px at 86% 22%,\r\n        rgba(117,28,34,.28) 0%,\r\n        rgba(117,28,34,.12) 42%,\r\n        rgba(255,255,255,0) 74%),\r\n      radial-gradient(980px 520px at 58% 92%,\r\n        rgba(17,17,17,.20) 0%,\r\n        rgba(184,137,45,.20) 38%,\r\n        rgba(255,255,255,0) 74%),\r\n      linear-gradient(180deg,\r\n        rgba(255,255,255,.94) 0%,\r\n        rgba(255,255,255,.86) 100%);\r\n    background-color:#fff;\r\n    background-size:230% 230%, 250% 250%, 240% 240%, 100% 100%;\r\n    background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%;\r\n    animation:\r\n      azPriceBgFloat 3.8s ease-in-out infinite,\r\n      azPriceFloat 3.2s ease-in-out infinite;\r\n    box-shadow:\r\n      0 18px 46px rgba(0,0,0,.16),\r\n      0 0 26px rgba(48,190,34,.12),\r\n      0 0 24px rgba(117,28,34,.10),\r\n      inset 0 0 0 1px rgba(255,255,255,.72);\r\n  }\r\n\r\n  .az-price-card::before{\r\n    content:\"\";\r\n    position:absolute;\r\n    inset:0;\r\n    z-index:0;\r\n    pointer-events:none;\r\n    border-radius:inherit;\r\n    box-shadow:\r\n      inset 0 0 0 1px rgba(255,255,255,.78),\r\n      inset 0 0 34px rgba(255,255,255,.42);\r\n  }\r\n\r\n  .az-price-inner{\r\n    position:relative;\r\n    z-index:1;\r\n    display:grid;\r\n    grid-template-columns:220px 1fr;\r\n    grid-template-rows:auto auto auto;\r\n    background:rgba(255,255,255,.86);\r\n    border:1px solid rgba(0,0,0,.08);\r\n    border-radius:18px;\r\n    overflow:hidden;\r\n    box-shadow:0 12px 30px rgba(0,0,0,.10);\r\n    backdrop-filter:blur(6px);\r\n  }\r\n\r\n  .az-price-brand{\r\n    grid-column:1;\r\n    grid-row:1;\r\n    min-height:190px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    align-items:center;\r\n    justify-content:center;\r\n    border-right:1px solid rgba(0,0,0,.10);\r\n    background:rgba(255,255,255,.68);\r\n    padding:18px 12px;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-logo{\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    gap:2px;\r\n    font-family:\"Audiowide\", \"Arial Black\", Arial, sans-serif;\r\n    font-size:28px;\r\n    line-height:1;\r\n    font-weight:400;\r\n    letter-spacing:-.06em;\r\n    margin:0 0 16px;\r\n    text-transform:uppercase;\r\n    filter:\r\n      drop-shadow(0 1px 0 rgba(255,255,255,.75))\r\n      drop-shadow(0 2px 2px rgba(0,0,0,.16));\r\n  }\r\n\r\n  .az-price-logo span{\r\n    display:inline-block;\r\n    transform-origin:center;\r\n    transition:transform .18s ease, filter .18s ease;\r\n  }\r\n\r\n  .az-price-logo span.az-logo-pop{\r\n    transform:scale(1.10);\r\n    filter:brightness(1.18);\r\n  }\r\n\r\n  .az-logo-a{\r\n    color:#35d629;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.46),\r\n      0 2px 3px rgba(0,0,0,.18);\r\n  }\r\n\r\n  .az-logo-z{\r\n    color:#7a1e27;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.46),\r\n      0 2px 3px rgba(0,0,0,.18);\r\n  }\r\n\r\n  .az-logo-dark{\r\n    color:#263034;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.45),\r\n      0 2px 3px rgba(0,0,0,.20);\r\n  }\r\n\r\n  .az-price-line{\r\n    display:flex;\r\n    align-items:flex-end;\r\n    justify-content:center;\r\n    gap:8px;\r\n    flex-wrap:wrap;\r\n    width:100%;\r\n  }\r\n\r\n  .az-price-number{\r\n    display:block;\r\n    font-family:Arial, sans-serif;\r\n    font-size:38px;\r\n    font-weight:900;\r\n    letter-spacing:-.06em;\r\n    line-height:.92;\r\n    color:#222;\r\n    will-change:transform,color;\r\n    text-align:center;\r\n  }\r\n\r\n  .az-price-number.az-price-number--boom{\r\n    animation:azPriceBoom .54s cubic-bezier(.2,.9,.2,1.25);\r\n  }\r\n\r\n  .az-price-currency{\r\n    display:block;\r\n    padding-bottom:4px;\r\n    font-size:14px;\r\n    font-weight:900;\r\n    color:#222;\r\n    letter-spacing:.04em;\r\n    line-height:1;\r\n  }\r\n\r\n  .az-price-date-note{\r\n    margin:9px 0 0;\r\n    font-size:12px;\r\n    line-height:1.35;\r\n    color:rgba(0,0,0,.62);\r\n    font-weight:400;\r\n    letter-spacing:.01em;\r\n  }\r\n\r\n  .az-price-size-note{\r\n    margin:2px 0 0;\r\n    font-size:12px;\r\n    line-height:1.35;\r\n    color:rgba(0,0,0,.62);\r\n    font-weight:400;\r\n    letter-spacing:.01em;\r\n  }\r\n\r\n  .az-price-content{\r\n    grid-column:2;\r\n    grid-row:1;\r\n    display:flex;\r\n    flex-direction:column;\r\n    justify-content:center;\r\n    padding:22px 24px;\r\n    text-align:left;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-sub{\r\n    margin:0;\r\n    color:rgba(0,0,0,.76);\r\n    font-size:16px;\r\n    line-height:1.42;\r\n  }\r\n\r\n  .az-price-title-row{\r\n    grid-column:1 \/ -1;\r\n    grid-row:2;\r\n    padding:14px 12px 6px;\r\n    border-top:1px solid rgba(0,0,0,.08);\r\n    background:rgba(255,255,255,.50);\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    overflow:hidden;\r\n  }\r\n\r\n  .az-price-title{\r\n    margin:0;\r\n    font-size:20px;\r\n    line-height:1.15;\r\n    font-weight:900;\r\n    color:#111;\r\n    letter-spacing:-.035em;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .az-price-button-row{\r\n    grid-column:1 \/ -1;\r\n    grid-row:3;\r\n    padding:14px;\r\n    border-top:1px solid rgba(0,0,0,.08);\r\n    background:rgba(255,255,255,.58);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-btn{\r\n    position:relative;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    width:min(100%, 520px);\r\n    min-height:48px;\r\n    padding:13px 20px;\r\n    border-radius:999px;\r\n    background:#111;\r\n    color:#fff !important;\r\n    text-decoration:none !important;\r\n    font-weight:100;\r\n    font-size:9px;\r\n    line-height:1.15;\r\n    text-align:center;\r\n    box-shadow:\r\n      0 12px 24px rgba(0,0,0,.20),\r\n      0 0 14px rgba(48,190,34,.16);\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    transition:transform .16s ease, box-shadow .16s ease;\r\n  }\r\n\r\n  .az-price-btn::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    top:-30%;\r\n    left:-45%;\r\n    width:38%;\r\n    height:160%;\r\n    transform:skewX(-18deg);\r\n    pointer-events:none;\r\n    background:linear-gradient(\r\n      90deg,\r\n      rgba(255,255,255,0) 0%,\r\n      rgba(255,255,255,.95) 45%,\r\n      rgba(255,255,255,.10) 65%,\r\n      rgba(255,255,255,0) 100%\r\n    );\r\n    filter:blur(.35px);\r\n    opacity:.9;\r\n    animation:azPriceShine 2.1s ease-in-out infinite;\r\n  }\r\n\r\n  .az-price-btn:hover{\r\n    transform:translateY(-1px);\r\n    box-shadow:\r\n      0 15px 30px rgba(0,0,0,.24),\r\n      0 0 18px rgba(48,190,34,.20);\r\n  }\r\n\r\n  .az-price-btn:focus-visible{\r\n    outline:3px solid rgba(48,190,34,.45);\r\n    outline-offset:3px;\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce){\r\n    .az-price-card,\r\n    .az-price-btn::after,\r\n    .az-price-number.az-price-number--boom{\r\n      animation:none !important;\r\n    }\r\n  }\r\n\r\n  @media (max-width:640px){\r\n    .az-price-card{\r\n      max-width:94%;\r\n      padding:10px;\r\n      border-radius:18px;\r\n    }\r\n\r\n    .az-price-inner{\r\n      grid-template-columns:1fr;\r\n      grid-template-rows:auto auto auto auto;\r\n      border-radius:16px;\r\n    }\r\n\r\n    .az-price-brand{\r\n      grid-column:1;\r\n      grid-row:1;\r\n      min-height:154px;\r\n      border-right:0;\r\n      border-bottom:1px solid rgba(0,0,0,.10);\r\n      padding:16px;\r\n    }\r\n\r\n    .az-price-logo{\r\n      font-size:28px;\r\n      margin-bottom:14px;\r\n    }\r\n\r\n    .az-price-number{\r\n      font-size:46px;\r\n    }\r\n\r\n    .az-price-content{\r\n      grid-column:1;\r\n      grid-row:2;\r\n      padding:18px 16px;\r\n      text-align:center;\r\n    }\r\n\r\n    .az-price-sub{\r\n      font-size:15px;\r\n    }\r\n\r\n    .az-price-title-row{\r\n      grid-column:1;\r\n      grid-row:3;\r\n      padding:14px 8px 6px;\r\n    }\r\n\r\n    .az-price-title{\r\n      font-size:16px;\r\n      line-height:1.12;\r\n      letter-spacing:-.045em;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .az-price-button-row{\r\n      grid-column:1;\r\n      grid-row:4;\r\n      padding:14px;\r\n    }\r\n\r\n    .az-price-btn{\r\n      width:100%;\r\n      box-sizing:border-box;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"az-price-wrap\">\r\n  <div class=\"az-price-card\">\r\n    <div class=\"az-price-inner\">\r\n\r\n      <div class=\"az-price-brand\" aria-label=\"AZHOME cena karnisza elektrycznego\">\r\n        <div class=\"az-price-logo\" aria-label=\"AZHOME\">\r\n          <span class=\"az-logo-a\">A<\/span>\r\n          <span class=\"az-logo-z\">Z<\/span>\r\n          <span class=\"az-logo-dark\">H<\/span>\r\n          <span class=\"az-logo-dark\">O<\/span>\r\n          <span class=\"az-logo-dark\">M<\/span>\r\n          <span class=\"az-logo-dark\">E<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-price-line\">\r\n          <span\r\n            class=\"az-price-number\"\r\n            data-az-price-max=\"973.00\"\r\n            data-az-price-final=\"681.10\">0,00<\/span>\r\n          <span class=\"az-price-currency\">PLN<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-price-date-note\">\r\n          Cena w dniu <span class=\"az-price-current-date\">24 maj 2026<\/span>\r\n        <\/div>\r\n        <div class=\"az-price-size-note\">\r\n          Cena za karnisz 100 cm\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-content\">\r\n        <p class=\"az-price-sub\">\r\n          Nowoczesny karnisz elektryczny z silnikiem AM50 sterowany pilotem. Posiada funkcj\u0119 Touch Motion. Moc silnika 1,2Nm. Dost\u0119pna wersja super silent .\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-title-row\">\r\n        <div class=\"az-price-title\">Karnisz elektryczny AM50 RF<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-button-row\">\r\n        <a\r\n          class=\"az-price-btn\"\r\n          href=\"https:\/\/osklep.pl\/products\/karnisz-elektryczny-a-ok-am50-tanie-karnisze\"\r\n          target=\"_blank\"\r\n          rel=\"noopener\"\r\n          aria-label=\"Zam\u00f3w online lub zadzwo\u0144 do nas.\">\r\n          Zam\u00f3w online lub zadzwo\u0144 do nas.\r\n        <\/a>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const priceEls = document.querySelectorAll('.az-price-number[data-az-price-max][data-az-price-final]');\r\n  const logoLetters = document.querySelectorAll('.az-price-logo span');\r\n  const dateEls = document.querySelectorAll('.az-price-current-date');\r\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  let azIndex = 0;\r\n\r\n  function formatPLN(value){\r\n    return value.toLocaleString('pl-PL', {\r\n      minimumFractionDigits: 2,\r\n      maximumFractionDigits: 2\r\n    });\r\n  }\r\n\r\n  function formatPolishDate(date){\r\n    const months = [\r\n      'stycze\u0144', 'luty', 'marzec', 'kwiecie\u0144', 'maj', 'czerwiec',\r\n      'lipiec', 'sierpie\u0144', 'wrzesie\u0144', 'pa\u017adziernik', 'listopad', 'grudzie\u0144'\r\n    ];\r\n\r\n    return date.getDate() + ' ' + months[date.getMonth()] + ' ' + date.getFullYear();\r\n  }\r\n\r\n  dateEls.forEach(function(el){\r\n    el.textContent = formatPolishDate(new Date());\r\n  });\r\n\r\n  function spectrumColor(progress){\r\n    const hue = Math.round(260 - (260 * progress));\r\n    return 'hsl(' + hue + ', 88%, 46%)';\r\n  }\r\n\r\n  function startLogoAnimation(){\r\n    setInterval(function(){\r\n      logoLetters.forEach(function(letter, index){\r\n        letter.classList.remove('az-logo-pop');\r\n\r\n        if(index === azIndex){\r\n          void letter.offsetWidth;\r\n          letter.classList.add('az-logo-pop');\r\n        }\r\n      });\r\n\r\n      azIndex = (azIndex + 1) % logoLetters.length;\r\n    }, 520);\r\n  }\r\n\r\n  if(prefersReducedMotion){\r\n    priceEls.forEach(function(el){\r\n      const finalPrice = parseFloat(el.getAttribute('data-az-price-final')) || 973.00;\r\n      el.textContent = formatPLN(finalPrice);\r\n      el.style.color = '#16a34a';\r\n    });\r\n    return;\r\n  }\r\n\r\n  startLogoAnimation();\r\n\r\n  priceEls.forEach(function(el){\r\n    const maxPrice = parseFloat(el.getAttribute('data-az-price-max')) || 973.00;\r\n    const finalPrice = parseFloat(el.getAttribute('data-az-price-final')) || 681.10;\r\n\r\n    const upDuration = 1550;\r\n    const holdMax = 1100;\r\n    const downDuration = 2600;\r\n    const holdFinal = 4300;\r\n\r\n    function animateUp(){\r\n      const startTime = performance.now();\r\n\r\n      el.classList.remove('az-price-number--boom');\r\n      el.style.color = spectrumColor(0);\r\n      el.textContent = formatPLN(0);\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ upDuration, 1);\r\n\r\n        const eased = 1 - Math.pow(1 - progress, 3.2);\r\n        const current = maxPrice * eased;\r\n\r\n        el.textContent = formatPLN(current);\r\n        el.style.color = spectrumColor(progress);\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          el.textContent = formatPLN(maxPrice);\r\n          el.style.color = '#dc2626';\r\n\r\n          el.classList.remove('az-price-number--boom');\r\n          void el.offsetWidth;\r\n          el.classList.add('az-price-number--boom');\r\n\r\n          setTimeout(animateDown, holdMax);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    function animateDown(){\r\n      const startTime = performance.now();\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ downDuration, 1);\r\n\r\n        const eased = 1 - Math.pow(1 - progress, 2.1);\r\n        const current = maxPrice - ((maxPrice - finalPrice) * eased);\r\n\r\n        el.textContent = formatPLN(current);\r\n\r\n        if(progress < .78){\r\n          el.style.color = '#dc2626';\r\n        } else {\r\n          el.style.color = '#16a34a';\r\n        }\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          el.textContent = formatPLN(finalPrice);\r\n          el.style.color = '#16a34a';\r\n\r\n          el.classList.remove('az-price-number--boom');\r\n          void el.offsetWidth;\r\n          el.classList.add('az-price-number--boom');\r\n\r\n          setTimeout(animateUp, holdFinal);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    animateUp();\r\n  });\r\n})();\r\n<\/script>\n<!-- \/end HFCM by 99 Robots -->\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><!-- HFCM by 99 Robots - Snippet # 6: cena am75 -->\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Audiowide&display=swap');\r\n\r\n  \/* ===== AZHOME BOX \u2014 AM75 WiFi \/ Zigbee \u2014 logo+cena \/ opis \/ tytu\u0142 \/ przycisk ===== *\/\r\n\r\n  @keyframes azPriceBgFloat{\r\n    0%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n    35%{ background-position: 55% 16%, 58% 32%, 68% 68%, 0% 0%; }\r\n    70%{ background-position: 100% 28%, 18% 62%, 95% 42%, 0% 0%; }\r\n    100%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n  }\r\n\r\n  @keyframes azPriceFloat{\r\n    0%,100%{ transform:translateY(0); }\r\n    50%{ transform:translateY(-3px); }\r\n  }\r\n\r\n  @keyframes azPriceShine{\r\n    0%{ left:-45%; opacity:0; }\r\n    10%{ opacity:1; }\r\n    28%{ left:115%; opacity:0; }\r\n    100%{ left:115%; opacity:0; }\r\n  }\r\n\r\n  @keyframes azPriceBoom{\r\n    0%{ transform:scale(1); }\r\n    35%{ transform:scale(1.18); }\r\n    65%{ transform:scale(.97); }\r\n    100%{ transform:scale(1); }\r\n  }\r\n\r\n  .az-price-wrap{\r\n    width:100%;\r\n    margin:24px auto;\r\n    padding:0;\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    isolation:isolate;\r\n  }\r\n\r\n  .az-price-card{\r\n    max-width:720px;\r\n    margin:0 auto;\r\n    padding:14px;\r\n    border:1px solid rgba(184,137,45,.55);\r\n    border-radius:22px;\r\n    text-align:center;\r\n    position:relative;\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    box-sizing:border-box;\r\n    background:\r\n      radial-gradient(1200px 420px at 18% 12%,\r\n        rgba(48,190,34,.34) 0%,\r\n        rgba(48,190,34,.15) 36%,\r\n        rgba(255,255,255,0) 72%),\r\n      radial-gradient(900px 360px at 86% 22%,\r\n        rgba(117,28,34,.28) 0%,\r\n        rgba(117,28,34,.12) 42%,\r\n        rgba(255,255,255,0) 74%),\r\n      radial-gradient(980px 520px at 58% 92%,\r\n        rgba(17,17,17,.20) 0%,\r\n        rgba(184,137,45,.20) 38%,\r\n        rgba(255,255,255,0) 74%),\r\n      linear-gradient(180deg,\r\n        rgba(255,255,255,.94) 0%,\r\n        rgba(255,255,255,.86) 100%);\r\n    background-color:#fff;\r\n    background-size:230% 230%, 250% 250%, 240% 240%, 100% 100%;\r\n    background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%;\r\n    animation:\r\n      azPriceBgFloat 3.8s ease-in-out infinite,\r\n      azPriceFloat 3.2s ease-in-out infinite;\r\n    box-shadow:\r\n      0 18px 46px rgba(0,0,0,.16),\r\n      0 0 26px rgba(48,190,34,.12),\r\n      0 0 24px rgba(117,28,34,.10),\r\n      inset 0 0 0 1px rgba(255,255,255,.72);\r\n  }\r\n\r\n  .az-price-card::before{\r\n    content:\"\";\r\n    position:absolute;\r\n    inset:0;\r\n    z-index:0;\r\n    pointer-events:none;\r\n    border-radius:inherit;\r\n    box-shadow:\r\n      inset 0 0 0 1px rgba(255,255,255,.78),\r\n      inset 0 0 34px rgba(255,255,255,.42);\r\n  }\r\n\r\n  .az-price-inner{\r\n    position:relative;\r\n    z-index:1;\r\n    display:grid;\r\n    grid-template-columns:220px 1fr;\r\n    grid-template-rows:auto auto auto;\r\n    background:rgba(255,255,255,.86);\r\n    border:1px solid rgba(0,0,0,.08);\r\n    border-radius:18px;\r\n    overflow:hidden;\r\n    box-shadow:0 12px 30px rgba(0,0,0,.10);\r\n    backdrop-filter:blur(6px);\r\n  }\r\n\r\n  .az-price-brand{\r\n    grid-column:1;\r\n    grid-row:1;\r\n    min-height:190px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    align-items:center;\r\n    justify-content:center;\r\n    border-right:1px solid rgba(0,0,0,.10);\r\n    background:rgba(255,255,255,.68);\r\n    padding:18px 12px;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-logo{\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    gap:2px;\r\n    font-family:\"Audiowide\", \"Arial Black\", Arial, sans-serif;\r\n    font-size:28px;\r\n    line-height:1;\r\n    font-weight:400;\r\n    letter-spacing:-.06em;\r\n    margin:0 0 16px;\r\n    text-transform:uppercase;\r\n    filter:\r\n      drop-shadow(0 1px 0 rgba(255,255,255,.75))\r\n      drop-shadow(0 2px 2px rgba(0,0,0,.16));\r\n  }\r\n\r\n  .az-price-logo span{\r\n    display:inline-block;\r\n    transform-origin:center;\r\n    transition:transform .18s ease, filter .18s ease;\r\n  }\r\n\r\n  .az-price-logo span.az-logo-pop{\r\n    transform:scale(1.10);\r\n    filter:brightness(1.18);\r\n  }\r\n\r\n  .az-logo-a{\r\n    color:#35d629;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.46),\r\n      0 2px 3px rgba(0,0,0,.18);\r\n  }\r\n\r\n  .az-logo-z{\r\n    color:#7a1e27;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.46),\r\n      0 2px 3px rgba(0,0,0,.18);\r\n  }\r\n\r\n  .az-logo-dark{\r\n    color:#263034;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.45),\r\n      0 2px 3px rgba(0,0,0,.20);\r\n  }\r\n\r\n  .az-price-line{\r\n    display:flex;\r\n    align-items:flex-end;\r\n    justify-content:center;\r\n    gap:8px;\r\n    flex-wrap:wrap;\r\n    width:100%;\r\n  }\r\n\r\n  .az-price-number{\r\n    display:block;\r\n    font-family:Arial, sans-serif;\r\n    font-size:38px;\r\n    font-weight:900;\r\n    letter-spacing:-.06em;\r\n    line-height:.92;\r\n    color:#222;\r\n    will-change:transform,color;\r\n    text-align:center;\r\n  }\r\n\r\n  .az-price-number.az-price-number--boom{\r\n    animation:azPriceBoom .54s cubic-bezier(.2,.9,.2,1.25);\r\n  }\r\n\r\n  .az-price-currency{\r\n    display:block;\r\n    padding-bottom:4px;\r\n    font-size:14px;\r\n    font-weight:900;\r\n    color:#222;\r\n    letter-spacing:.04em;\r\n    line-height:1;\r\n  }\r\n\r\n  .az-price-date-note{\r\n    margin:9px 0 0;\r\n    font-size:12px;\r\n    line-height:1.35;\r\n    color:rgba(0,0,0,.62);\r\n    font-weight:400;\r\n    letter-spacing:.01em;\r\n  }\r\n\r\n  .az-price-size-note{\r\n    margin:2px 0 0;\r\n    font-size:12px;\r\n    line-height:1.35;\r\n    color:rgba(0,0,0,.62);\r\n    font-weight:400;\r\n    letter-spacing:.01em;\r\n  }\r\n\r\n  .az-price-content{\r\n    grid-column:2;\r\n    grid-row:1;\r\n    display:flex;\r\n    flex-direction:column;\r\n    justify-content:center;\r\n    padding:22px 24px;\r\n    text-align:left;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-sub{\r\n    margin:0;\r\n    color:rgba(0,0,0,.76);\r\n    font-size:16px;\r\n    line-height:1.42;\r\n  }\r\n\r\n  .az-price-title-row{\r\n    grid-column:1 \/ -1;\r\n    grid-row:2;\r\n    padding:14px 12px 6px;\r\n    border-top:1px solid rgba(0,0,0,.08);\r\n    background:rgba(255,255,255,.50);\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    overflow:hidden;\r\n  }\r\n\r\n  .az-price-title{\r\n    margin:0;\r\n    font-size:20px;\r\n    line-height:1.15;\r\n    font-weight:900;\r\n    color:#111;\r\n    letter-spacing:-.035em;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .az-price-button-row{\r\n    grid-column:1 \/ -1;\r\n    grid-row:3;\r\n    padding:14px;\r\n    border-top:1px solid rgba(0,0,0,.08);\r\n    background:rgba(255,255,255,.58);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-btn{\r\n    position:relative;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    width:min(100%, 520px);\r\n    min-height:48px;\r\n    padding:13px 20px;\r\n    border-radius:999px;\r\n    background:#111;\r\n    color:#fff !important;\r\n    text-decoration:none !important;\r\n    font-weight:900;\r\n    font-size:15px;\r\n    line-height:1.15;\r\n    text-align:center;\r\n    box-shadow:\r\n      0 12px 24px rgba(0,0,0,.20),\r\n      0 0 14px rgba(48,190,34,.16);\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    transition:transform .16s ease, box-shadow .16s ease;\r\n  }\r\n\r\n  .az-price-btn::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    top:-30%;\r\n    left:-45%;\r\n    width:38%;\r\n    height:160%;\r\n    transform:skewX(-18deg);\r\n    pointer-events:none;\r\n    background:linear-gradient(\r\n      90deg,\r\n      rgba(255,255,255,0) 0%,\r\n      rgba(255,255,255,.95) 45%,\r\n      rgba(255,255,255,.10) 65%,\r\n      rgba(255,255,255,0) 100%\r\n    );\r\n    filter:blur(.35px);\r\n    opacity:.9;\r\n    animation:azPriceShine 2.1s ease-in-out infinite;\r\n  }\r\n\r\n  .az-price-btn:hover{\r\n    transform:translateY(-1px);\r\n    box-shadow:\r\n      0 15px 30px rgba(0,0,0,.24),\r\n      0 0 18px rgba(48,190,34,.20);\r\n  }\r\n\r\n  .az-price-btn:focus-visible{\r\n    outline:3px solid rgba(48,190,34,.45);\r\n    outline-offset:3px;\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce){\r\n    .az-price-card,\r\n    .az-price-btn::after,\r\n    .az-price-number.az-price-number--boom{\r\n      animation:none !important;\r\n    }\r\n  }\r\n\r\n  @media (max-width:640px){\r\n    .az-price-card{\r\n      max-width:94%;\r\n      padding:10px;\r\n      border-radius:18px;\r\n    }\r\n\r\n    .az-price-inner{\r\n      grid-template-columns:1fr;\r\n      grid-template-rows:auto auto auto auto;\r\n      border-radius:16px;\r\n    }\r\n\r\n    .az-price-brand{\r\n      grid-column:1;\r\n      grid-row:1;\r\n      min-height:154px;\r\n      border-right:0;\r\n      border-bottom:1px solid rgba(0,0,0,.10);\r\n      padding:16px;\r\n    }\r\n\r\n    .az-price-logo{\r\n      font-size:28px;\r\n      margin-bottom:14px;\r\n    }\r\n\r\n    .az-price-number{\r\n      font-size:46px;\r\n    }\r\n\r\n    .az-price-content{\r\n      grid-column:1;\r\n      grid-row:2;\r\n      padding:18px 16px;\r\n      text-align:center;\r\n    }\r\n\r\n    .az-price-sub{\r\n      font-size:15px;\r\n    }\r\n\r\n    .az-price-title-row{\r\n      grid-column:1;\r\n      grid-row:3;\r\n      padding:14px 8px 6px;\r\n    }\r\n\r\n    .az-price-title{\r\n      font-size:16px;\r\n      line-height:1.12;\r\n      letter-spacing:-.045em;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .az-price-button-row{\r\n      grid-column:1;\r\n      grid-row:4;\r\n      padding:14px;\r\n    }\r\n\r\n    .az-price-btn{\r\n      width:100%;\r\n      box-sizing:border-box;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"az-price-wrap\">\r\n  <div class=\"az-price-card\">\r\n    <div class=\"az-price-inner\">\r\n\r\n      <div class=\"az-price-brand\" aria-label=\"AZHOME cena karnisza elektrycznego\">\r\n        <div class=\"az-price-logo\" aria-label=\"AZHOME\">\r\n          <span class=\"az-logo-a\">A<\/span>\r\n          <span class=\"az-logo-z\">Z<\/span>\r\n          <span class=\"az-logo-dark\">H<\/span>\r\n          <span class=\"az-logo-dark\">O<\/span>\r\n          <span class=\"az-logo-dark\">M<\/span>\r\n          <span class=\"az-logo-dark\">E<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-price-line\">\r\n          <span\r\n            class=\"az-price-number\"\r\n            data-az-price-max=\"1043.00\"\r\n            data-az-price-final=\"938.70\">0,00<\/span>\r\n          <span class=\"az-price-currency\">PLN<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-price-date-note\">\r\n          Cena w dniu <span class=\"az-price-current-date\">24 maj 2026<\/span>\r\n        <\/div>\r\n        <div class=\"az-price-size-note\">\r\n          Cena za karnisz 100 cm\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-content\">\r\n        <p class=\"az-price-sub\">\r\n          Nowoczesny karnisz elektryczny z silnikiem AM75 w wersji z modu\u0142em Zigbee lub Wifi, oraz dost\u0119pna jest wersja silnika fazowego. Dost\u0119pna jest wersja super silent .\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-title-row\">\r\n        <div class=\"az-price-title\">Karnisz elektryczny AM75 Wifi, Zigbee, 5W<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-button-row\">\r\n        <a\r\n          class=\"az-price-btn\"\r\n          href=\"https:\/\/osklep.pl\/products\/karnisz-elektryczny-warszawa-rf-wifi-5w-zigbee\"\r\n          target=\"_blank\"\r\n          rel=\"noopener\"\r\n          aria-label=\"Zam\u00f3w online lub zadzwo\u0144 do nas.\">\r\n          Zam\u00f3w online lub zadzwo\u0144 do nas.\r\n        <\/a>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const priceEls = document.querySelectorAll('.az-price-number[data-az-price-max][data-az-price-final]');\r\n  const logoLetters = document.querySelectorAll('.az-price-logo span');\r\n  const dateEls = document.querySelectorAll('.az-price-current-date');\r\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  let azIndex = 0;\r\n\r\n  function formatPLN(value){\r\n    return value.toLocaleString('pl-PL', {\r\n      minimumFractionDigits: 2,\r\n      maximumFractionDigits: 2\r\n    });\r\n  }\r\n\r\n  function formatPolishDate(date){\r\n    const months = [\r\n      'stycze\u0144', 'luty', 'marzec', 'kwiecie\u0144', 'maj', 'czerwiec',\r\n      'lipiec', 'sierpie\u0144', 'wrzesie\u0144', 'pa\u017adziernik', 'listopad', 'grudzie\u0144'\r\n    ];\r\n\r\n    return date.getDate() + ' ' + months[date.getMonth()] + ' ' + date.getFullYear();\r\n  }\r\n\r\n  dateEls.forEach(function(el){\r\n    el.textContent = formatPolishDate(new Date());\r\n  });\r\n\r\n  function spectrumColor(progress){\r\n    const hue = Math.round(260 - (260 * progress));\r\n    return 'hsl(' + hue + ', 88%, 46%)';\r\n  }\r\n\r\n  function startLogoAnimation(){\r\n    setInterval(function(){\r\n      logoLetters.forEach(function(letter, index){\r\n        letter.classList.remove('az-logo-pop');\r\n\r\n        if(index === azIndex){\r\n          void letter.offsetWidth;\r\n          letter.classList.add('az-logo-pop');\r\n        }\r\n      });\r\n\r\n      azIndex = (azIndex + 1) % logoLetters.length;\r\n    }, 520);\r\n  }\r\n\r\n  if(prefersReducedMotion){\r\n    priceEls.forEach(function(el){\r\n      const finalPrice = parseFloat(el.getAttribute('data-az-price-final')) || 999.89;\r\n      el.textContent = formatPLN(finalPrice);\r\n      el.style.color = '#16a34a';\r\n    });\r\n    return;\r\n  }\r\n\r\n  startLogoAnimation();\r\n\r\n  priceEls.forEach(function(el){\r\n    const maxPrice = parseFloat(el.getAttribute('data-az-price-max')) || 1043.00;\r\n    const finalPrice = parseFloat(el.getAttribute('data-az-price-final')) || 938.70;\r\n\r\n    const upDuration = 1550;\r\n    const holdMax = 1100;\r\n    const downDuration = 2600;\r\n    const holdFinal = 4300;\r\n\r\n    function animateUp(){\r\n      const startTime = performance.now();\r\n\r\n      el.classList.remove('az-price-number--boom');\r\n      el.style.color = spectrumColor(0);\r\n      el.textContent = formatPLN(0);\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ upDuration, 1);\r\n\r\n        const eased = 1 - Math.pow(1 - progress, 3.2);\r\n        const current = maxPrice * eased;\r\n\r\n        el.textContent = formatPLN(current);\r\n        el.style.color = spectrumColor(progress);\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          el.textContent = formatPLN(maxPrice);\r\n          el.style.color = '#dc2626';\r\n\r\n          el.classList.remove('az-price-number--boom');\r\n          void el.offsetWidth;\r\n          el.classList.add('az-price-number--boom');\r\n\r\n          setTimeout(animateDown, holdMax);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    function animateDown(){\r\n      const startTime = performance.now();\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ downDuration, 1);\r\n\r\n        const eased = 1 - Math.pow(1 - progress, 2.1);\r\n        const current = maxPrice - ((maxPrice - finalPrice) * eased);\r\n\r\n        el.textContent = formatPLN(current);\r\n\r\n        if(progress < .78){\r\n          el.style.color = '#dc2626';\r\n        } else {\r\n          el.style.color = '#16a34a';\r\n        }\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          el.textContent = formatPLN(finalPrice);\r\n          el.style.color = '#16a34a';\r\n\r\n          el.classList.remove('az-price-number--boom');\r\n          void el.offsetWidth;\r\n          el.classList.add('az-price-number--boom');\r\n\r\n          setTimeout(animateUp, holdFinal);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    animateUp();\r\n  });\r\n})();\r\n<\/script>\n<!-- \/end HFCM by 99 Robots -->\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><!-- HFCM by 99 Robots - Snippet # 7: cena am50 akum -->\n<style>\r\n  @import url('https:\/\/fonts.googleapis.com\/css2?family=Audiowide&display=swap');\r\n\r\n  \/* ===== AZHOME BOX \u2014 AM75 WiFi \/ Zigbee \u2014 logo+cena \/ opis \/ tytu\u0142 \/ przycisk ===== *\/\r\n\r\n  @keyframes azPriceBgFloat{\r\n    0%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n    35%{ background-position: 55% 16%, 58% 32%, 68% 68%, 0% 0%; }\r\n    70%{ background-position: 100% 28%, 18% 62%, 95% 42%, 0% 0%; }\r\n    100%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n  }\r\n\r\n  @keyframes azPriceFloat{\r\n    0%,100%{ transform:translateY(0); }\r\n    50%{ transform:translateY(-3px); }\r\n  }\r\n\r\n  @keyframes azPriceShine{\r\n    0%{ left:-45%; opacity:0; }\r\n    10%{ opacity:1; }\r\n    28%{ left:115%; opacity:0; }\r\n    100%{ left:115%; opacity:0; }\r\n  }\r\n\r\n  @keyframes azPriceBoom{\r\n    0%{ transform:scale(1); }\r\n    35%{ transform:scale(1.18); }\r\n    65%{ transform:scale(.97); }\r\n    100%{ transform:scale(1); }\r\n  }\r\n\r\n  .az-price-wrap{\r\n    width:100%;\r\n    margin:24px auto;\r\n    padding:0;\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    isolation:isolate;\r\n  }\r\n\r\n  .az-price-card{\r\n    max-width:720px;\r\n    margin:0 auto;\r\n    padding:14px;\r\n    border:1px solid rgba(184,137,45,.55);\r\n    border-radius:22px;\r\n    text-align:center;\r\n    position:relative;\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    box-sizing:border-box;\r\n    background:\r\n      radial-gradient(1200px 420px at 18% 12%,\r\n        rgba(48,190,34,.34) 0%,\r\n        rgba(48,190,34,.15) 36%,\r\n        rgba(255,255,255,0) 72%),\r\n      radial-gradient(900px 360px at 86% 22%,\r\n        rgba(117,28,34,.28) 0%,\r\n        rgba(117,28,34,.12) 42%,\r\n        rgba(255,255,255,0) 74%),\r\n      radial-gradient(980px 520px at 58% 92%,\r\n        rgba(17,17,17,.20) 0%,\r\n        rgba(184,137,45,.20) 38%,\r\n        rgba(255,255,255,0) 74%),\r\n      linear-gradient(180deg,\r\n        rgba(255,255,255,.94) 0%,\r\n        rgba(255,255,255,.86) 100%);\r\n    background-color:#fff;\r\n    background-size:230% 230%, 250% 250%, 240% 240%, 100% 100%;\r\n    background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%;\r\n    animation:\r\n      azPriceBgFloat 3.8s ease-in-out infinite,\r\n      azPriceFloat 3.2s ease-in-out infinite;\r\n    box-shadow:\r\n      0 18px 46px rgba(0,0,0,.16),\r\n      0 0 26px rgba(48,190,34,.12),\r\n      0 0 24px rgba(117,28,34,.10),\r\n      inset 0 0 0 1px rgba(255,255,255,.72);\r\n  }\r\n\r\n  .az-price-card::before{\r\n    content:\"\";\r\n    position:absolute;\r\n    inset:0;\r\n    z-index:0;\r\n    pointer-events:none;\r\n    border-radius:inherit;\r\n    box-shadow:\r\n      inset 0 0 0 1px rgba(255,255,255,.78),\r\n      inset 0 0 34px rgba(255,255,255,.42);\r\n  }\r\n\r\n  .az-price-inner{\r\n    position:relative;\r\n    z-index:1;\r\n    display:grid;\r\n    grid-template-columns:220px 1fr;\r\n    grid-template-rows:auto auto auto;\r\n    background:rgba(255,255,255,.86);\r\n    border:1px solid rgba(0,0,0,.08);\r\n    border-radius:18px;\r\n    overflow:hidden;\r\n    box-shadow:0 12px 30px rgba(0,0,0,.10);\r\n    backdrop-filter:blur(6px);\r\n  }\r\n\r\n  .az-price-brand{\r\n    grid-column:1;\r\n    grid-row:1;\r\n    min-height:190px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    align-items:center;\r\n    justify-content:center;\r\n    border-right:1px solid rgba(0,0,0,.10);\r\n    background:rgba(255,255,255,.68);\r\n    padding:18px 12px;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-logo{\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    gap:2px;\r\n    font-family:\"Audiowide\", \"Arial Black\", Arial, sans-serif;\r\n    font-size:28px;\r\n    line-height:1;\r\n    font-weight:400;\r\n    letter-spacing:-.06em;\r\n    margin:0 0 16px;\r\n    text-transform:uppercase;\r\n    filter:\r\n      drop-shadow(0 1px 0 rgba(255,255,255,.75))\r\n      drop-shadow(0 2px 2px rgba(0,0,0,.16));\r\n  }\r\n\r\n  .az-price-logo span{\r\n    display:inline-block;\r\n    transform-origin:center;\r\n    transition:transform .18s ease, filter .18s ease;\r\n  }\r\n\r\n  .az-price-logo span.az-logo-pop{\r\n    transform:scale(1.10);\r\n    filter:brightness(1.18);\r\n  }\r\n\r\n  .az-logo-a{\r\n    color:#35d629;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.46),\r\n      0 2px 3px rgba(0,0,0,.18);\r\n  }\r\n\r\n  .az-logo-z{\r\n    color:#7a1e27;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.46),\r\n      0 2px 3px rgba(0,0,0,.18);\r\n  }\r\n\r\n  .az-logo-dark{\r\n    color:#263034;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.45),\r\n      0 2px 3px rgba(0,0,0,.20);\r\n  }\r\n\r\n  .az-price-line{\r\n    display:flex;\r\n    align-items:flex-end;\r\n    justify-content:center;\r\n    gap:8px;\r\n    flex-wrap:wrap;\r\n    width:100%;\r\n  }\r\n\r\n  .az-price-number{\r\n    display:block;\r\n    font-family:Arial, sans-serif;\r\n    font-size:38px;\r\n    font-weight:900;\r\n    letter-spacing:-.06em;\r\n    line-height:.92;\r\n    color:#222;\r\n    will-change:transform,color;\r\n    text-align:center;\r\n  }\r\n\r\n  .az-price-number.az-price-number--boom{\r\n    animation:azPriceBoom .54s cubic-bezier(.2,.9,.2,1.25);\r\n  }\r\n\r\n  .az-price-currency{\r\n    display:block;\r\n    padding-bottom:4px;\r\n    font-size:14px;\r\n    font-weight:900;\r\n    color:#222;\r\n    letter-spacing:.04em;\r\n    line-height:1;\r\n  }\r\n\r\n  .az-price-date-note{\r\n    margin:9px 0 0;\r\n    font-size:12px;\r\n    line-height:1.35;\r\n    color:rgba(0,0,0,.62);\r\n    font-weight:400;\r\n    letter-spacing:.01em;\r\n  }\r\n\r\n  .az-price-size-note{\r\n    margin:2px 0 0;\r\n    font-size:12px;\r\n    line-height:1.35;\r\n    color:rgba(0,0,0,.62);\r\n    font-weight:400;\r\n    letter-spacing:.01em;\r\n  }\r\n\r\n  .az-price-content{\r\n    grid-column:2;\r\n    grid-row:1;\r\n    display:flex;\r\n    flex-direction:column;\r\n    justify-content:center;\r\n    padding:22px 24px;\r\n    text-align:left;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-sub{\r\n    margin:0;\r\n    color:rgba(0,0,0,.76);\r\n    font-size:16px;\r\n    line-height:1.42;\r\n  }\r\n\r\n  .az-price-title-row{\r\n    grid-column:1 \/ -1;\r\n    grid-row:2;\r\n    padding:14px 12px 6px;\r\n    border-top:1px solid rgba(0,0,0,.08);\r\n    background:rgba(255,255,255,.50);\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    overflow:hidden;\r\n  }\r\n\r\n  .az-price-title{\r\n    margin:0;\r\n    font-size:20px;\r\n    line-height:1.15;\r\n    font-weight:900;\r\n    color:#111;\r\n    letter-spacing:-.035em;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  .az-price-button-row{\r\n    grid-column:1 \/ -1;\r\n    grid-row:3;\r\n    padding:14px;\r\n    border-top:1px solid rgba(0,0,0,.08);\r\n    background:rgba(255,255,255,.58);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-price-btn{\r\n    position:relative;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    width:min(100%, 520px);\r\n    min-height:48px;\r\n    padding:13px 20px;\r\n    border-radius:999px;\r\n    background:#111;\r\n    color:#fff !important;\r\n    text-decoration:none !important;\r\n    font-weight:900;\r\n    font-size:15px;\r\n    line-height:1.15;\r\n    text-align:center;\r\n    box-shadow:\r\n      0 12px 24px rgba(0,0,0,.20),\r\n      0 0 14px rgba(48,190,34,.16);\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    transition:transform .16s ease, box-shadow .16s ease;\r\n  }\r\n\r\n  .az-price-btn::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    top:-30%;\r\n    left:-45%;\r\n    width:38%;\r\n    height:160%;\r\n    transform:skewX(-18deg);\r\n    pointer-events:none;\r\n    background:linear-gradient(\r\n      90deg,\r\n      rgba(255,255,255,0) 0%,\r\n      rgba(255,255,255,.95) 45%,\r\n      rgba(255,255,255,.10) 65%,\r\n      rgba(255,255,255,0) 100%\r\n    );\r\n    filter:blur(.35px);\r\n    opacity:.9;\r\n    animation:azPriceShine 2.1s ease-in-out infinite;\r\n  }\r\n\r\n  .az-price-btn:hover{\r\n    transform:translateY(-1px);\r\n    box-shadow:\r\n      0 15px 30px rgba(0,0,0,.24),\r\n      0 0 18px rgba(48,190,34,.20);\r\n  }\r\n\r\n  .az-price-btn:focus-visible{\r\n    outline:3px solid rgba(48,190,34,.45);\r\n    outline-offset:3px;\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce){\r\n    .az-price-card,\r\n    .az-price-btn::after,\r\n    .az-price-number.az-price-number--boom{\r\n      animation:none !important;\r\n    }\r\n  }\r\n\r\n  @media (max-width:640px){\r\n    .az-price-card{\r\n      max-width:94%;\r\n      padding:10px;\r\n      border-radius:18px;\r\n    }\r\n\r\n    .az-price-inner{\r\n      grid-template-columns:1fr;\r\n      grid-template-rows:auto auto auto auto;\r\n      border-radius:16px;\r\n    }\r\n\r\n    .az-price-brand{\r\n      grid-column:1;\r\n      grid-row:1;\r\n      min-height:154px;\r\n      border-right:0;\r\n      border-bottom:1px solid rgba(0,0,0,.10);\r\n      padding:16px;\r\n    }\r\n\r\n    .az-price-logo{\r\n      font-size:28px;\r\n      margin-bottom:14px;\r\n    }\r\n\r\n    .az-price-number{\r\n      font-size:46px;\r\n    }\r\n\r\n    .az-price-content{\r\n      grid-column:1;\r\n      grid-row:2;\r\n      padding:18px 16px;\r\n      text-align:center;\r\n    }\r\n\r\n    .az-price-sub{\r\n      font-size:15px;\r\n    }\r\n\r\n    .az-price-title-row{\r\n      grid-column:1;\r\n      grid-row:3;\r\n      padding:14px 8px 6px;\r\n    }\r\n\r\n    .az-price-title{\r\n      font-size:16px;\r\n      line-height:1.12;\r\n      letter-spacing:-.045em;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .az-price-button-row{\r\n      grid-column:1;\r\n      grid-row:4;\r\n      padding:14px;\r\n    }\r\n\r\n    .az-price-btn{\r\n      width:100%;\r\n      box-sizing:border-box;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"az-price-wrap\">\r\n  <div class=\"az-price-card\">\r\n    <div class=\"az-price-inner\">\r\n\r\n      <div class=\"az-price-brand\" aria-label=\"AZHOME cena karnisza elektrycznego\">\r\n        <div class=\"az-price-logo\" aria-label=\"AZHOME\">\r\n          <span class=\"az-logo-a\">A<\/span>\r\n          <span class=\"az-logo-z\">Z<\/span>\r\n          <span class=\"az-logo-dark\">H<\/span>\r\n          <span class=\"az-logo-dark\">O<\/span>\r\n          <span class=\"az-logo-dark\">M<\/span>\r\n          <span class=\"az-logo-dark\">E<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-price-line\">\r\n          <span\r\n            class=\"az-price-number\"\r\n            data-az-price-max=\"1192.00\"\r\n            data-az-price-final=\"894,00\">0,00<\/span>\r\n          <span class=\"az-price-currency\">PLN<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-price-date-note\">\r\n          Cena w dniu <span class=\"az-price-current-date\">24 maj 2026<\/span>\r\n        <\/div>\r\n        <div class=\"az-price-size-note\">\r\n          Cena za karnisz 100 cm\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-content\">\r\n        <p class=\"az-price-sub\">\r\n          Nowoczesny karnisz elektryczny z silnikiem AM50 AKUMULATOROWY sterowany pilotem. Posiada funkcj\u0119 Touch Motion. Dost\u0119pna wersja super silent .\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-title-row\">\r\n        <div class=\"az-price-title\">Karnisz elektryczny AM50 Akumulatorowy<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-price-button-row\">\r\n        <a\r\n          class=\"az-price-btn\"\r\n          href=\"https:\/\/osklep.pl\/products\/karnisz-elektryczny-a-ok-am50-bezprzewodowy-akumulatorowy\"\r\n          target=\"_blank\"\r\n          rel=\"noopener\"\r\n          aria-label=\"Zam\u00f3w online lub zadzwo\u0144 do nas.\">\r\n          Zam\u00f3w online lub zadzwo\u0144 do nas.\r\n        <\/a>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const priceEls = document.querySelectorAll('.az-price-number[data-az-price-max][data-az-price-final]');\r\n  const logoLetters = document.querySelectorAll('.az-price-logo span');\r\n  const dateEls = document.querySelectorAll('.az-price-current-date');\r\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  let azIndex = 0;\r\n\r\n  function formatPLN(value){\r\n    return value.toLocaleString('pl-PL', {\r\n      minimumFractionDigits: 2,\r\n      maximumFractionDigits: 2\r\n    });\r\n  }\r\n\r\n  function formatPolishDate(date){\r\n    const months = [\r\n      'stycze\u0144', 'luty', 'marzec', 'kwiecie\u0144', 'maj', 'czerwiec',\r\n      'lipiec', 'sierpie\u0144', 'wrzesie\u0144', 'pa\u017adziernik', 'listopad', 'grudzie\u0144'\r\n    ];\r\n\r\n    return date.getDate() + ' ' + months[date.getMonth()] + ' ' + date.getFullYear();\r\n  }\r\n\r\n  dateEls.forEach(function(el){\r\n    el.textContent = formatPolishDate(new Date());\r\n  });\r\n\r\n  function spectrumColor(progress){\r\n    const hue = Math.round(260 - (260 * progress));\r\n    return 'hsl(' + hue + ', 88%, 46%)';\r\n  }\r\n\r\n  function startLogoAnimation(){\r\n    setInterval(function(){\r\n      logoLetters.forEach(function(letter, index){\r\n        letter.classList.remove('az-logo-pop');\r\n\r\n        if(index === azIndex){\r\n          void letter.offsetWidth;\r\n          letter.classList.add('az-logo-pop');\r\n        }\r\n      });\r\n\r\n      azIndex = (azIndex + 1) % logoLetters.length;\r\n    }, 520);\r\n  }\r\n\r\n  if(prefersReducedMotion){\r\n    priceEls.forEach(function(el){\r\n      const finalPrice = parseFloat(el.getAttribute('data-az-price-final')) || 894.00;\r\n      el.textContent = formatPLN(finalPrice);\r\n      el.style.color = '#16a34a';\r\n    });\r\n    return;\r\n  }\r\n\r\n  startLogoAnimation();\r\n\r\n  priceEls.forEach(function(el){\r\n    const maxPrice = parseFloat(el.getAttribute('data-az-price-max')) || 1192.00;\r\n    const finalPrice = parseFloat(el.getAttribute('data-az-price-final')) || 894.00;\r\n\r\n    const upDuration = 1550;\r\n    const holdMax = 1100;\r\n    const downDuration = 2600;\r\n    const holdFinal = 4300;\r\n\r\n    function animateUp(){\r\n      const startTime = performance.now();\r\n\r\n      el.classList.remove('az-price-number--boom');\r\n      el.style.color = spectrumColor(0);\r\n      el.textContent = formatPLN(0);\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ upDuration, 1);\r\n\r\n        const eased = 1 - Math.pow(1 - progress, 3.2);\r\n        const current = maxPrice * eased;\r\n\r\n        el.textContent = formatPLN(current);\r\n        el.style.color = spectrumColor(progress);\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          el.textContent = formatPLN(maxPrice);\r\n          el.style.color = '#dc2626';\r\n\r\n          el.classList.remove('az-price-number--boom');\r\n          void el.offsetWidth;\r\n          el.classList.add('az-price-number--boom');\r\n\r\n          setTimeout(animateDown, holdMax);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    function animateDown(){\r\n      const startTime = performance.now();\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ downDuration, 1);\r\n\r\n        const eased = 1 - Math.pow(1 - progress, 2.1);\r\n        const current = maxPrice - ((maxPrice - finalPrice) * eased);\r\n\r\n        el.textContent = formatPLN(current);\r\n\r\n        if(progress < .78){\r\n          el.style.color = '#dc2626';\r\n        } else {\r\n          el.style.color = '#16a34a';\r\n        }\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          el.textContent = formatPLN(finalPrice);\r\n          el.style.color = '#16a34a';\r\n\r\n          el.classList.remove('az-price-number--boom');\r\n          void el.offsetWidth;\r\n          el.classList.add('az-price-number--boom');\r\n\r\n          setTimeout(animateUp, holdFinal);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    animateUp();\r\n  });\r\n})();\r\n<\/script>\n<!-- \/end HFCM by 99 Robots -->\n\n<\/div>\n<\/div>\n\n\n<!-- HFCM by 99 Robots - Snippet # 3: opinie -->\n<style>\r\n  \/* ===== AZHOME OPINIE GOOGLE \u2014 animowany licznik + litery GOOGLE jedna po drugiej ===== *\/\r\n\r\n  @keyframes azReviewBgFloat{\r\n    0%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n    35%{ background-position: 55% 16%, 58% 32%, 68% 68%, 0% 0%; }\r\n    70%{ background-position: 100% 28%, 18% 62%, 95% 42%, 0% 0%; }\r\n    100%{ background-position: 0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n  }\r\n\r\n  @keyframes azReviewFloat{\r\n    0%,100%{ transform:translateY(0); }\r\n    50%{ transform:translateY(-3px); }\r\n  }\r\n\r\n  @keyframes azReviewShine{\r\n    0%{ left:-45%; opacity:0; }\r\n    10%{ opacity:1; }\r\n    28%{ left:115%; opacity:0; }\r\n    100%{ left:115%; opacity:0; }\r\n  }\r\n\r\n  @keyframes azReviewNumberBoom{\r\n    0%{ transform:scale(1); }\r\n    35%{ transform:scale(1.18); }\r\n    65%{ transform:scale(.96); }\r\n    100%{ transform:scale(1); }\r\n  }\r\n\r\n  .az-review-wrap{\r\n    width:100%;\r\n    margin:24px auto;\r\n    padding:0;\r\n    text-align:center;\r\n    box-sizing:border-box;\r\n    isolation:isolate;\r\n  }\r\n\r\n  .az-review-card{\r\n    max-width:620px;\r\n    margin:0 auto;\r\n    padding:14px;\r\n    border:1px solid rgba(184,137,45,.52);\r\n    border-radius:22px;\r\n    text-align:center;\r\n    position:relative;\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    box-sizing:border-box;\r\n    background:\r\n      radial-gradient(1200px 420px at 18% 12%,\r\n        rgba(66, 133, 244, .52) 0%,\r\n        rgba(66, 133, 244, .28) 34%,\r\n        rgba(255,255,255, 0) 72%),\r\n      radial-gradient(900px 360px at 86% 22%,\r\n        rgba(251, 188, 5, .50) 0%,\r\n        rgba(251, 188, 5, .26) 42%,\r\n        rgba(255,255,255, 0) 74%),\r\n      radial-gradient(980px 520px at 58% 92%,\r\n        rgba(234, 67, 53, .42) 0%,\r\n        rgba(52, 168, 83, .30) 38%,\r\n        rgba(255,255,255, 0) 74%),\r\n      linear-gradient(180deg,\r\n        rgba(255,255,255, .90) 0%,\r\n        rgba(255,255,255, .82) 100%);\r\n    background-color:#fff;\r\n    background-size:230% 230%, 250% 250%, 240% 240%, 100% 100%;\r\n    background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%;\r\n    animation:\r\n      azReviewBgFloat 3.6s ease-in-out infinite,\r\n      azReviewFloat 3.2s ease-in-out infinite;\r\n    box-shadow:\r\n      0 18px 46px rgba(0,0,0,.15),\r\n      0 0 26px rgba(66,133,244,.18),\r\n      0 0 24px rgba(251,188,5,.18),\r\n      0 0 22px rgba(234,67,53,.14),\r\n      inset 0 0 0 1px rgba(255,255,255,.72);\r\n  }\r\n\r\n  .az-review-card::before{\r\n    content:\"\";\r\n    position:absolute;\r\n    inset:0;\r\n    z-index:0;\r\n    pointer-events:none;\r\n    border-radius:inherit;\r\n    box-shadow:\r\n      inset 0 0 0 1px rgba(255,255,255,.78),\r\n      inset 0 0 34px rgba(255,255,255,.42);\r\n  }\r\n\r\n  .az-review-inner{\r\n    position:relative;\r\n    z-index:1;\r\n    display:flex;\r\n    align-items:stretch;\r\n    justify-content:center;\r\n    gap:0;\r\n    background:rgba(255,255,255,.82);\r\n    border:1px solid rgba(0,0,0,.08);\r\n    border-radius:18px;\r\n    overflow:hidden;\r\n    box-shadow:0 12px 30px rgba(0,0,0,.10);\r\n    backdrop-filter:blur(6px);\r\n  }\r\n\r\n  .az-review-google{\r\n    width:155px;\r\n    min-height:168px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    align-items:center;\r\n    justify-content:center;\r\n    border-right:1px solid rgba(0,0,0,.10);\r\n    background:rgba(255,255,255,.62);\r\n    padding:12px 8px;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-review-g{\r\n    font-size:70px;\r\n    line-height:1;\r\n    font-weight:900;\r\n    font-family:Arial, sans-serif;\r\n    letter-spacing:-.04em;\r\n  }\r\n\r\n  .az-review-google-letter{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    width:1.05em;\r\n    height:1em;\r\n    line-height:1;\r\n    color:#4285f4;\r\n    transform-origin:center;\r\n    transition:\r\n      color .18s ease,\r\n      transform .18s ease,\r\n      opacity .18s ease;\r\n  }\r\n\r\n  .az-review-google-letter.az-letter-pop{\r\n    transform:scale(1.16);\r\n  }\r\n\r\n  .az-review-count{\r\n    margin-top:4px;\r\n    text-align:center;\r\n    font-family:Arial, sans-serif;\r\n    line-height:1;\r\n    display:flex;\r\n    flex-direction:column;\r\n    align-items:center;\r\n  }\r\n\r\n  .az-review-count-small{\r\n    display:block;\r\n    font-size:11px;\r\n    font-weight:700;\r\n    color:#222222;\r\n    letter-spacing:.02em;\r\n    margin-bottom:2px;\r\n    line-height:1.1;\r\n    order:1;\r\n  }\r\n\r\n  .az-review-count-number{\r\n    display:block;\r\n    font-size:44px;\r\n    font-weight:900;\r\n    color:#222222;\r\n    letter-spacing:-.06em;\r\n    line-height:.95;\r\n    order:2;\r\n    will-change:transform;\r\n  }\r\n\r\n  .az-review-count-number.az-review-count-number--boom{\r\n    animation:azReviewNumberBoom .48s cubic-bezier(.2,.9,.2,1.25);\r\n  }\r\n\r\n  .az-review-count-label{\r\n    display:block;\r\n    font-size:15px;\r\n    font-weight:900;\r\n    color:#222222;\r\n    letter-spacing:.02em;\r\n    margin-top:1px;\r\n    line-height:1;\r\n    order:3;\r\n  }\r\n\r\n  .az-review-content{\r\n    flex:1;\r\n    padding:18px 22px;\r\n    text-align:left;\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  .az-review-stars{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:4px;\r\n    margin:0 0 4px;\r\n    font-size:34px;\r\n    line-height:1;\r\n    color:#fbbc04;\r\n    letter-spacing:1px;\r\n    text-shadow:\r\n      0 1px 0 rgba(0,0,0,.12),\r\n      0 0 10px rgba(251,188,4,.25);\r\n  }\r\n\r\n  .az-review-score{\r\n    display:inline-block;\r\n    margin-left:10px;\r\n    color:#111;\r\n    font-size:26px;\r\n    font-weight:900;\r\n    letter-spacing:0;\r\n    vertical-align:middle;\r\n  }\r\n\r\n  .az-review-title{\r\n    margin:4px 0 4px;\r\n    font-size:24px;\r\n    line-height:1.18;\r\n    font-weight:900;\r\n    color:#111;\r\n    letter-spacing:-.02em;\r\n  }\r\n\r\n  .az-review-sub{\r\n    margin:0 0 14px;\r\n    color:rgba(0,0,0,.76);\r\n    font-size:16px;\r\n    line-height:1.35;\r\n  }\r\n\r\n  .az-review-btn{\r\n    position:relative;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    min-height:44px;\r\n    padding:12px 18px;\r\n    border-radius:999px;\r\n    background:#111;\r\n    color:#fff !important;\r\n    text-decoration:none !important;\r\n    font-weight:900;\r\n    font-size:14px;\r\n    line-height:1.15;\r\n    box-shadow:\r\n      0 12px 24px rgba(0,0,0,.20),\r\n      0 0 14px rgba(66,133,244,.16);\r\n    overflow:hidden;\r\n    isolation:isolate;\r\n    transition:transform .16s ease, box-shadow .16s ease;\r\n  }\r\n\r\n  .az-review-btn::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    top:-30%;\r\n    left:-45%;\r\n    width:38%;\r\n    height:160%;\r\n    transform:skewX(-18deg);\r\n    pointer-events:none;\r\n    background:linear-gradient(\r\n      90deg,\r\n      rgba(255,255,255,0) 0%,\r\n      rgba(255,255,255,.95) 45%,\r\n      rgba(255,255,255,.10) 65%,\r\n      rgba(255,255,255,0) 100%\r\n    );\r\n    filter:blur(.35px);\r\n    opacity:.9;\r\n    animation:azReviewShine 2.1s ease-in-out infinite;\r\n  }\r\n\r\n  .az-review-btn:hover{\r\n    transform:translateY(-1px);\r\n    box-shadow:\r\n      0 15px 30px rgba(0,0,0,.24),\r\n      0 0 18px rgba(251,188,5,.20);\r\n  }\r\n\r\n  .az-review-btn:focus-visible{\r\n    outline:3px solid rgba(66,133,244,.50);\r\n    outline-offset:3px;\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce){\r\n    .az-review-card,\r\n    .az-review-btn::after,\r\n    .az-review-count-number.az-review-count-number--boom{\r\n      animation:none !important;\r\n    }\r\n  }\r\n\r\n  @media (max-width:640px){\r\n    .az-review-card{\r\n      max-width:94%;\r\n      padding:10px;\r\n      border-radius:18px;\r\n    }\r\n\r\n    .az-review-inner{\r\n      flex-direction:column;\r\n      border-radius:16px;\r\n    }\r\n\r\n    .az-review-google{\r\n      width:100%;\r\n      min-height:108px;\r\n      border-right:0;\r\n      border-bottom:1px solid rgba(0,0,0,.10);\r\n      padding:12px 14px;\r\n      box-sizing:border-box;\r\n      display:grid;\r\n      grid-template-columns:1fr auto auto 1fr;\r\n      align-items:center;\r\n      justify-content:center;\r\n      column-gap:10px;\r\n      text-align:center;\r\n    }\r\n\r\n    .az-review-g{\r\n      grid-column:2;\r\n      grid-row:1;\r\n      font-size:58px;\r\n      line-height:1;\r\n      justify-self:end;\r\n      align-self:center;\r\n      margin:0;\r\n    }\r\n\r\n    .az-review-count{\r\n      grid-column:3;\r\n      grid-row:1;\r\n      margin:0;\r\n      display:grid;\r\n      grid-template-columns:auto auto;\r\n      grid-template-rows:auto auto;\r\n      column-gap:8px;\r\n      row-gap:0;\r\n      align-items:center;\r\n      justify-content:center;\r\n      text-align:left;\r\n      font-family:Arial, sans-serif;\r\n      line-height:1;\r\n      color:#222222;\r\n    }\r\n\r\n    .az-review-count-number{\r\n      grid-column:1;\r\n      grid-row:1 \/ span 2;\r\n      display:block;\r\n      font-size:46px;\r\n      font-weight:900;\r\n      color:#222222;\r\n      letter-spacing:-.06em;\r\n      line-height:.92;\r\n      text-align:center;\r\n      align-self:center;\r\n      margin:0;\r\n    }\r\n\r\n    .az-review-count-small{\r\n      grid-column:2;\r\n      grid-row:1;\r\n      display:block;\r\n      font-size:11px;\r\n      font-weight:700;\r\n      color:#222222;\r\n      letter-spacing:.02em;\r\n      line-height:1.1;\r\n      margin:0 0 1px;\r\n      white-space:nowrap;\r\n      text-align:left;\r\n      align-self:end;\r\n    }\r\n\r\n    .az-review-count-label{\r\n      grid-column:2;\r\n      grid-row:2;\r\n      display:block;\r\n      font-size:15px;\r\n      font-weight:900;\r\n      color:#222222;\r\n      letter-spacing:.02em;\r\n      line-height:1;\r\n      margin:0;\r\n      white-space:nowrap;\r\n      text-align:left;\r\n      align-self:start;\r\n    }\r\n\r\n    .az-review-content{\r\n      width:100%;\r\n      padding:16px;\r\n      text-align:center;\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .az-review-stars{\r\n      justify-content:center;\r\n      font-size:28px;\r\n    }\r\n\r\n    .az-review-score{\r\n      font-size:22px;\r\n      margin-left:8px;\r\n    }\r\n\r\n    .az-review-title{\r\n      font-size:20px;\r\n    }\r\n\r\n    .az-review-sub{\r\n      font-size:15px;\r\n    }\r\n\r\n    .az-review-btn{\r\n      width:100%;\r\n      box-sizing:border-box;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"az-review-wrap\">\r\n  <div class=\"az-review-card\">\r\n    <div class=\"az-review-inner\">\r\n\r\n      <div class=\"az-review-google\" aria-label=\"Google, na podstawie 410 opinii\">\r\n        <div class=\"az-review-g\" aria-label=\"Google\">\r\n          <span class=\"az-review-google-letter\">G<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-review-count\">\r\n          <span class=\"az-review-count-number\" data-az-review-target=\"410\">0<\/span>\r\n          <span class=\"az-review-count-small\">na podstawie<\/span>\r\n          <span class=\"az-review-count-label\">opinii<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"az-review-content\">\r\n        <div class=\"az-review-stars\" aria-label=\"Ocena 5.0 na 5\">\r\n          \u2605\u2605\u2605\u2605\u2605 <span class=\"az-review-score\">5.0<\/span>\r\n        <\/div>\r\n\r\n        <div class=\"az-review-title\">Najwy\u017cej oceniana us\u0142uga<\/div>\r\n\r\n        <p class=\"az-review-sub\"><\/p>\r\n\r\n        <a\r\n          class=\"az-review-btn\"\r\n          href=\"https:\/\/www.google.com\/maps?cid=10805085060045519056&amp;g_mp=CiVnb29nbGUubWFwcy5wbGFjZXMudjEuUGxhY2VzLkdldFBsYWNlEAMYASAF&amp;hl=pl&amp;source=embed\"\r\n          target=\"_blank\"\r\n          rel=\"noopener nofollow\"\r\n          aria-label=\"Kliknij i przeczytaj opinie o AZHOME w Google Maps\">\r\n          Kliknij i przeczytaj opinie o AZHOME\r\n        <\/a>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script>\r\n(function(){\r\n  const counters = document.querySelectorAll('.az-review-count-number[data-az-review-target]');\r\n  const googleLetters = document.querySelectorAll('.az-review-google-letter');\r\n\r\n  const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n  const googleSequence = [\r\n    { letter: 'G', color: '#4285F4' },\r\n    { letter: 'O', color: '#DB4437' },\r\n    { letter: 'O', color: '#F4B400' },\r\n    { letter: 'G', color: '#4285F4' },\r\n    { letter: 'L', color: '#0F9D58' },\r\n    { letter: 'E', color: '#DB4437' }\r\n  ];\r\n\r\n  let googleIndex = 0;\r\n\r\n  function startGoogleLetters(){\r\n    googleLetters.forEach((el) => {\r\n      function changeLetter(){\r\n        const item = googleSequence[googleIndex];\r\n\r\n        el.classList.remove('az-letter-pop');\r\n        el.textContent = item.letter;\r\n        el.style.color = item.color;\r\n\r\n        void el.offsetWidth;\r\n        el.classList.add('az-letter-pop');\r\n\r\n        googleIndex = (googleIndex + 1) % googleSequence.length;\r\n      }\r\n\r\n      changeLetter();\r\n      setInterval(changeLetter, 500);\r\n    });\r\n  }\r\n\r\n  if(prefersReducedMotion){\r\n    googleLetters.forEach((el) => {\r\n      el.textContent = 'G';\r\n      el.style.color = '#4285F4';\r\n    });\r\n\r\n    counters.forEach((counter) => {\r\n      const target = parseInt(counter.getAttribute('data-az-review-target'), 10) || 0;\r\n      counter.textContent = target;\r\n    });\r\n\r\n    return;\r\n  }\r\n\r\n  startGoogleLetters();\r\n\r\n  counters.forEach((counter) => {\r\n    const target = parseInt(counter.getAttribute('data-az-review-target'), 10) || 0;\r\n    const duration = 1900;\r\n    const pause = 5000;\r\n\r\n    function animate(){\r\n      const startTime = performance.now();\r\n\r\n      counter.classList.remove('az-review-count-number--boom');\r\n      counter.textContent = '0';\r\n\r\n      function tick(now){\r\n        const elapsed = now - startTime;\r\n        const progress = Math.min(elapsed \/ duration, 1);\r\n        const eased = Math.pow(progress, 1.85);\r\n        const current = Math.floor(eased * target);\r\n\r\n        counter.textContent = current;\r\n\r\n        if(progress < 1){\r\n          requestAnimationFrame(tick);\r\n        } else {\r\n          counter.textContent = target;\r\n\r\n          counter.classList.remove('az-review-count-number--boom');\r\n          void counter.offsetWidth;\r\n          counter.classList.add('az-review-count-number--boom');\r\n\r\n          setTimeout(animate, pause);\r\n        }\r\n      }\r\n\r\n      requestAnimationFrame(tick);\r\n    }\r\n\r\n    animate();\r\n  });\r\n})();\r\n<\/script>\n<!-- \/end HFCM by 99 Robots -->\n\n\n<!-- HFCM by 99 Robots - Snippet # 1: kalkulator karniszy elektrycznych -->\n<!-- ===== KALKULATOR CEN \u2014 Karnisze ELEKTRYCZNE (g\u0142\u00f3wne) + informacja o cenie KS (dodatkowo) ===== -->\r\n<section class=\"sz-kscalc\" aria-label=\"Kalkulator cen: karnisze elektryczne + cena KS (info)\">\r\n  <style>\r\n    :root{ --szGlowCycle: 10s; }\r\n\r\n    .sz-kscalc{margin:26px 0;font-family:inherit}\r\n    .sz-kscalc *{box-sizing:border-box}\r\n    .sz-kscalc__wrap{max-width:980px;margin:0 auto;padding:0 14px}\r\n    .sz-kscalc__title{margin:0 0 8px;font-size:22px;line-height:1.2;letter-spacing:-.01em}\r\n    .sz-kscalc__lead{margin:0 0 14px;color:rgba(0,0,0,.72);line-height:1.65;font-size:14.5px;max-width:860px}\r\n\r\n    .sz-kscalc__panel{\r\n      position:relative;\r\n      isolation:isolate;\r\n      border:1px solid rgba(0,0,0,.10);\r\n      border-radius:18px;\r\n      background:linear-gradient(180deg, rgba(255,255,255,1), rgba(0,0,0,.012));\r\n      box-shadow:0 10px 26px rgba(0,0,0,.05);\r\n      overflow:hidden;\r\n    }\r\n\r\n    \/* ===== Mieni\u0105ce si\u0119 kolorowe t\u0142o (subtelnie, powoli) ===== *\/\r\n    .sz-kscalc__panel::before{\r\n      content:\"\";\r\n      position:absolute;\r\n      inset:-40px;\r\n      z-index:0;\r\n      pointer-events:none;\r\n      background: linear-gradient(\r\n        90deg,\r\n        rgba(66,133,244,.22) 0%,\r\n        rgba(52,168,83,.22) 25%,\r\n        rgba(251,188,5,.22) 50%,\r\n        rgba(234,67,53,.22) 75%,\r\n        rgba(66,133,244,.22) 100%\r\n      );\r\n      background-size: 220% 100%;\r\n      filter: blur(26px) saturate(1.35);\r\n      opacity:.60;\r\n      animation: szGlowDrift var(--szGlowCycle) ease-in-out infinite;\r\n      transform: translate3d(-8%,0,0);\r\n    }\r\n    .sz-kscalc__panel::after{\r\n      content:\"\";\r\n      position:absolute;\r\n      inset:-70px;\r\n      z-index:0;\r\n      pointer-events:none;\r\n      background: linear-gradient(\r\n        90deg,\r\n        rgba(66,133,244,.16) 0%,\r\n        rgba(52,168,83,.16) 25%,\r\n        rgba(251,188,5,.16) 50%,\r\n        rgba(234,67,53,.16) 75%,\r\n        rgba(66,133,244,.16) 100%\r\n      );\r\n      background-size: 260% 100%;\r\n      filter: blur(52px) saturate(1.6);\r\n      opacity:.55;\r\n      animation: szGlowDrift2 calc(var(--szGlowCycle) * 1.35) ease-in-out infinite;\r\n      transform: translate3d(-10%,0,0);\r\n      mix-blend-mode: multiply;\r\n    }\r\n\r\n    @keyframes szGlowDrift{\r\n      0%   { background-position: 0% 50%;  transform: translate3d(-8%,0,0);  opacity:.55; }\r\n      50%  { background-position: 100% 50%; transform: translate3d(8%,0,0);  opacity:.70; }\r\n      100% { background-position: 0% 50%;  transform: translate3d(-8%,0,0);  opacity:.55; }\r\n    }\r\n    @keyframes szGlowDrift2{\r\n      0%   { background-position: 0% 50%;  transform: translate3d(-10%,0,0); opacity:.50; }\r\n      50%  { background-position: 100% 50%; transform: translate3d(10%,0,0); opacity:.62; }\r\n      100% { background-position: 0% 50%;  transform: translate3d(-10%,0,0); opacity:.50; }\r\n    }\r\n\r\n    .sz-kscalc__panel > *{position:relative;z-index:1}\r\n\r\n    @media (prefers-reduced-motion: reduce){\r\n      .sz-kscalc__panel::before,\r\n      .sz-kscalc__panel::after{animation:none;opacity:.55}\r\n    }\r\n\r\n    .sz-kscalc__top{padding:14px 14px 0}\r\n    .sz-kscalc__label{display:block;font-weight:800;color:#222;margin:0 0 8px}\r\n    .sz-kscalc__hint{margin:0 0 10px;color:rgba(0,0,0,.62);font-size:13px;line-height:1.5}\r\n\r\n    .sz-kscalc__ta{\r\n      width:100%;min-height:92px;resize:vertical;\r\n      border:1px solid rgba(0,0,0,.14);\r\n      border-radius:14px;\r\n      padding:12px 12px;\r\n      font-size:14px;line-height:1.5;\r\n      background:#fff;\r\n      outline:none;\r\n    }\r\n    .sz-kscalc__ta:focus{border-color:rgba(0,0,0,.28);box-shadow:0 0 0 3px rgba(0,0,0,.06)}\r\n\r\n    .sz-kscalc__actions{\r\n      display:flex;gap:10px;flex-wrap:wrap;\r\n      padding:12px 14px 14px;\r\n      border-top:1px solid rgba(0,0,0,.08);\r\n      background:rgba(255,255,255,.55);\r\n      backdrop-filter: blur(4px);\r\n    }\r\n    .sz-kscalc__btn{\r\n      appearance:none;border:none;cursor:pointer;\r\n      padding:10px 14px;border-radius:999px;\r\n      font-weight:800;font-size:13.5px;\r\n      background:#111;color:#fff;\r\n      box-shadow:0 12px 26px rgba(0,0,0,.10);\r\n    }\r\n    .sz-kscalc__btn--ghost{\r\n      background:#fff;color:#111;\r\n      border:1px solid rgba(0,0,0,.14);\r\n      box-shadow:none;\r\n    }\r\n\r\n    .sz-kscalc__out{padding:14px}\r\n    .sz-kscalc__grid{\r\n      display:grid;grid-template-columns:1fr 1fr;gap:12px;\r\n      margin-top:10px;\r\n    }\r\n    .sz-kscalc__card{\r\n      border:1px solid rgba(0,0,0,.10);\r\n      border-radius:16px;\r\n      background:rgba(255,255,255,.92);\r\n      overflow:hidden;\r\n      box-shadow:0 10px 28px rgba(0,0,0,.06);\r\n      backdrop-filter: blur(4px);\r\n    }\r\n    .sz-kscalc__card h3{\r\n      margin:0;padding:12px 12px;\r\n      font-size:14px;letter-spacing:-.01em;\r\n      background:rgba(0,0,0,.02);\r\n      border-bottom:1px solid rgba(0,0,0,.08);\r\n    }\r\n\r\n    .sz-kscalc__list{margin:0;padding:10px 12px;list-style:none}\r\n    .sz-kscalc__list li{\r\n      display:flex;justify-content:space-between;gap:10px;\r\n      padding:8px 0;border-bottom:1px dashed rgba(0,0,0,.12);\r\n      font-size:13.5px;color:rgba(0,0,0,.78)\r\n    }\r\n    .sz-kscalc__list li:last-child{border-bottom:none}\r\n    .sz-kscalc__muted{color:rgba(0,0,0,.56)}\r\n    .sz-kscalc__note{\r\n      font-size:12px;\r\n      font-weight:800;\r\n      color:rgba(0,0,0,.56);\r\n      margin-left:8px;\r\n      white-space:nowrap;\r\n    }\r\n    .sz-kscalc__sum{\r\n      display:flex;justify-content:space-between;gap:10px;\r\n      padding:10px 12px;border-top:1px solid rgba(0,0,0,.08);\r\n      font-weight:900;color:#111;background:rgba(0,0,0,.012)\r\n    }\r\n\r\n    .sz-kscalc__badges{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}\r\n    .sz-kscalc__badge{\r\n      font-size:12.5px;line-height:1.2;\r\n      padding:8px 10px;border-radius:999px;\r\n      border:1px solid rgba(0,0,0,.12);\r\n      background:rgba(255,255,255,.92);\r\n      color:rgba(0,0,0,.72);\r\n      backdrop-filter: blur(4px);\r\n    }\r\n\r\n    \/* ===== Klikalne linie elektrycznych + detale ===== *\/\r\n    .sz-kscalc__clickable{cursor:pointer}\r\n    .sz-kscalc__clickable:hover{background:rgba(0,0,0,.015)}\r\n    .sz-kscalc__pick{background:rgba(255,244,205,.50)}\r\n    .sz-kscalc__pick span{font-weight:900;color:#111}\r\n\r\n    .sz-kscalc__detail{\r\n      display:none;\r\n      margin:10px 12px 12px;\r\n      padding:10px 12px;\r\n      border-radius:14px;\r\n      border:1px solid rgba(0,0,0,.10);\r\n      background:rgba(255,255,255,.92);\r\n      box-shadow:0 10px 26px rgba(0,0,0,.06);\r\n      color:rgba(0,0,0,.78);\r\n      font-size:13px;\r\n      line-height:1.55;\r\n    }\r\n    .sz-kscalc__detail.is-open{display:block}\r\n    .sz-kscalc__detail strong{color:#111}\r\n\r\n    .sz-kscalc__detailhead{\r\n      display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;\r\n      padding-bottom:8px;margin-bottom:10px;\r\n      border-bottom:1px dashed rgba(0,0,0,.12);\r\n    }\r\n    .sz-kscalc__detailmeta{\r\n      display:flex;gap:8px;flex-wrap:wrap;\r\n      font-size:12.5px;color:rgba(0,0,0,.68);\r\n    }\r\n    .sz-kscalc__pill{\r\n      display:inline-block;\r\n      padding:6px 10px;\r\n      border-radius:999px;\r\n      border:1px solid rgba(0,0,0,.12);\r\n      background:rgba(0,0,0,.02);\r\n      font-weight:800;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .sz-kscalc__dlist{\r\n      margin:0;padding:0;list-style:none;\r\n      max-height:260px; overflow:auto;\r\n      border:1px solid rgba(0,0,0,.08);\r\n      border-radius:12px;\r\n      background:#fff;\r\n    }\r\n    .sz-kscalc__dlist li{\r\n      display:flex;justify-content:space-between;gap:10px;\r\n      padding:10px 12px;\r\n      border-bottom:1px solid rgba(0,0,0,.06);\r\n      font-size:13px;\r\n    }\r\n    .sz-kscalc__dlist li:last-child{border-bottom:none}\r\n    .sz-kscalc__dleft{color:rgba(0,0,0,.78)}\r\n    .sz-kscalc__dright{font-weight:900;color:#111;white-space:nowrap}\r\n    .sz-kscalc__dright.is-oob{color:rgba(176,0,32,.9);font-weight:900}\r\n\r\n    @media (max-width: 820px){\r\n      .sz-kscalc__grid{grid-template-columns:1fr}\r\n    }\r\n    @media (max-width: 430px){\r\n      .sz-kscalc__wrap{padding:0 12px}\r\n      .sz-kscalc__ta{min-height:110px}\r\n      .sz-kscalc__title{font-size:20px}\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"sz-kscalc__wrap\">\r\n    <h2 class=\"sz-kscalc__title\">Kalkulator cen karniszy elektrycznych<\/h2>\r\n    <p class=\"sz-kscalc__lead\">\r\n      Wpisz lub wklej d\u0142ugo\u015bci jakie potrzebujesz, w cm (po przecinku lub w nowych liniach).<br>\r\n      <strong>G\u0142\u00f3wne wyliczenie:<\/strong> karnisze elektryczne \u2014 kliknij typ, aby zobaczy\u0107 szczeg\u00f3\u0142y (cena dla ka\u017cdego rozmiaru).<br>\r\n      <strong>Dodatkowo:<\/strong> poka\u017cemy informacyjn\u0105 cen\u0119 karnisza KS (bazow\u0105) \u2014 dla warto\u015bci <strong>&gt; 600 cm<\/strong> (tylko KS) dzielimy d\u0142ugo\u015b\u0107 na <strong>2 r\u00f3wne odcinki<\/strong> (np. 650 \u2192 325 + 325).\r\n    <\/p>\r\n\r\n    <div class=\"sz-kscalc__panel\">\r\n      <div class=\"sz-kscalc__top\">\r\n        <label class=\"sz-kscalc__label\" for=\"szKsInput\">Wymiary (cm)<\/label>\r\n        <p class=\"sz-kscalc__hint\">Przyk\u0142ad: <strong>120, 147.5, 650, 980<\/strong> albo ka\u017cda warto\u015b\u0107 w nowej linii. Akceptuje te\u017c zapis \u201e250,5\u201d.<\/p>\r\n        <textarea id=\"szKsInput\" class=\"sz-kscalc__ta\" placeholder=\"np. 120, 147.5, 650&#10;albo: 120&#10;147,5&#10;650\"><\/textarea>\r\n      <\/div>\r\n\r\n      <div class=\"sz-kscalc__actions\">\r\n        <button class=\"sz-kscalc__btn\" type=\"button\" id=\"szKsCalcBtn\">Policz cen\u0119<\/button>\r\n        <button class=\"sz-kscalc__btn sz-kscalc__btn--ghost\" type=\"button\" id=\"szKsClearBtn\">Zacznij od nowa<\/button>\r\n      <\/div>\r\n\r\n      <div class=\"sz-kscalc__out\" id=\"szKsOut\">\r\n        <div class=\"sz-kscalc__badges\" id=\"szKsBadges\" style=\"display:none\"><\/div>\r\n\r\n        <div class=\"sz-kscalc__grid\">\r\n          <!-- ====== ELEKTRYCZNE: G\u0141\u00d3WNE ====== -->\r\n          <div class=\"sz-kscalc__card\">\r\n            <h3>Podsumowanie \u2014 karnisze elektryczne<br>(kliknij pozycj\u0119 i zobacz ceny dla rozmiar\u00f3w)<\/h3>\r\n            <ul class=\"sz-kscalc__list\" id=\"szElecList\">\r\n              <li class=\"sz-kscalc__muted\">Wpisz wymiary i kliknij \u201ePolicz\u201d.<\/li>\r\n            <\/ul>\r\n\r\n            <!-- Detale po klikni\u0119ciu -->\r\n            <div class=\"sz-kscalc__detail\" id=\"szElecDetail\" aria-live=\"polite\"><\/div>\r\n\r\n            <div class=\"sz-kscalc__sum\" id=\"szElecSum\">\r\n              <span>Razem elektryczne<\/span><span>\u2014<\/span>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <!-- ====== KS: DODATKOWA INFORMACJA ====== -->\r\n          <div class=\"sz-kscalc__card\">\r\n            <h3>Cena informacyjna \u2014 Karnisz KS (bazowa)<\/h3>\r\n            <ul class=\"sz-kscalc__list\" id=\"szKsList\">\r\n              <li class=\"sz-kscalc__muted\">Pojawi si\u0119 po wyliczeniu elektrycznych.<\/li>\r\n            <\/ul>\r\n            <div class=\"sz-kscalc__sum\" id=\"szKsSum\">\r\n              <span>Razem KS<\/span><span>\u2014<\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    (function(){\r\n      \/* =========================\r\n         PROGI\r\n      ========================= *\/\r\n      var BRACKETS_KS   = [100,150,200,250,300,350,400,450,500,550,600];\r\n      var BRACKETS_AM50 = [100,150,200,250,300,350,400,450,500,550,600];\r\n      var BRACKETS_AM75 = [100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850,900,950,1000,1050,1100,1150,1200];\r\n\r\n      function ceilToBracket(value, brackets){\r\n        for (var i=0;i<brackets.length;i++){\r\n          if (value <= brackets[i]) return brackets[i];\r\n        }\r\n        return null;\r\n      }\r\n\r\n      function prettyCm(n){\r\n        var x = Math.round(n * 10) \/ 10;\r\n        return (String(x).replace('.', ',') + ' cm');\r\n      }\r\n\r\n      \/* =========================\r\n         CENNIK KS\r\n      ========================= *\/\r\n      var KS = {\r\n        100:{base:75, bend1:189, bend2:289, wave:23},\r\n        150:{base:79, bend1:199, bend2:299, wave:28},\r\n        200:{base:101,bend1:221, bend2:321, wave:32},\r\n        250:{base:123,bend1:243, bend2:343, wave:37},\r\n        300:{base:146,bend1:266, bend2:366, wave:42},\r\n        350:{base:168,bend1:288, bend2:388, wave:47},\r\n        400:{base:190,bend1:310, bend2:410, wave:52},\r\n        450:{base:212,bend1:332, bend2:432, wave:57},\r\n        500:{base:234,bend1:354, bend2:454, wave:62},\r\n        550:{base:306,bend1:426, bend2:526, wave:67},\r\n        600:{base:328,bend1:448, bend2:548, wave:72}\r\n      };\r\n\r\n      \/* =========================\r\n         CENNIK ELEKTRYCZNYCH\r\n      ========================= *\/\r\n      var ELEC = {\r\n        100:{am50:973,  am50bat:1192, am75wifi:1068, am75zig:1117},\r\n        150:{am50:1042, am50bat:1252, am75wifi:1137, am75zig:1186},\r\n        200:{am50:1111, am50bat:1312, am75wifi:1205, am75zig:1255},\r\n        250:{am50:1180, am50bat:1373, am75wifi:1274, am75zig:1323},\r\n        300:{am50:1249, am50bat:1443, am75wifi:1343, am75zig:1392},\r\n        350:{am50:1317, am50bat:1493, am75wifi:1412, am75zig:1461},\r\n        400:{am50:1386, am50bat:1553, am75wifi:1481, am75zig:1530},\r\n        450:{am50:1453, am50bat:1614, am75wifi:1547, am75zig:1597},\r\n        500:{am50:1522, am50bat:1674, am75wifi:1616, am75zig:1665},\r\n        550:{am50:1591, am50bat:1734, am75wifi:1685, am75zig:1734},\r\n        600:{am50:1659, am50bat:1795, am75wifi:1754, am75zig:1803},\r\n        650:{am75wifi:1823, am75zig:1872},\r\n        700:{am75wifi:1892, am75zig:1941},\r\n        750:{am75wifi:1961, am75zig:2010},\r\n        800:{am75wifi:2030, am75zig:2079},\r\n        850:{am75wifi:2098, am75zig:2148},\r\n        900:{am75wifi:2165, am75zig:2214},\r\n        950:{am75wifi:2234, am75zig:2283},\r\n        1000:{am75wifi:2303, am75zig:2352},\r\n        1050:{am75wifi:2371, am75zig:2421},\r\n        1100:{am75wifi:2440, am75zig:2490},\r\n        1150:{am75wifi:2509, am75zig:2558},\r\n        1200:{am75wifi:2578, am75zig:2627}\r\n      };\r\n\r\n      \/* =========================\r\n         UI\r\n      ========================= *\/\r\n      var input   = document.getElementById('szKsInput');\r\n      var btnCalc = document.getElementById('szKsCalcBtn');\r\n      var btnClear= document.getElementById('szKsClearBtn');\r\n\r\n      var ksList  = document.getElementById('szKsList');\r\n      var ksSum   = document.getElementById('szKsSum');\r\n      var elecList= document.getElementById('szElecList');\r\n      var elecSum = document.getElementById('szElecSum');\r\n      var elecDetail = document.getElementById('szElecDetail');\r\n      var badges  = document.getElementById('szKsBadges');\r\n\r\n      \/\/ przechowywanie szczeg\u00f3\u0142\u00f3w po kalkulacji (elektryczne)\r\n      var LAST_ELEC_DETAILS = null;\r\n      var LAST_PICK = null;\r\n\r\n      function money(n){\r\n        n = Math.round(n);\r\n        return String(n).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, ' ') + ' z\u0142';\r\n      }\r\n\r\n      function parseNumbers(str){\r\n        var matches = (str.match(\/(\\d+(?:[.,]\\d+)?)\/g) || []);\r\n        return matches.map(function(m){ return parseFloat(m.replace(',', '.')); })\r\n                      .filter(function(n){ return isFinite(n) && n > 0; });\r\n      }\r\n\r\n      function clearUI(){\r\n        elecList.innerHTML = '<li class=\"sz-kscalc__muted\">Wpisz wymiary i kliknij \u201ePolicz\u201d.<\/li>';\r\n        ksList.innerHTML   = '<li class=\"sz-kscalc__muted\">Pojawi si\u0119 po wyliczeniu elektrycznych.<\/li>';\r\n\r\n        elecSum.innerHTML  = '<span>Razem elektryczne<\/span><span>\u2014<\/span>';\r\n        ksSum.innerHTML    = '<span>Razem KS<\/span><span>\u2014<\/span>';\r\n\r\n        badges.style.display = 'none';\r\n        badges.innerHTML = '';\r\n\r\n        elecDetail.classList.remove('is-open');\r\n        elecDetail.innerHTML = '';\r\n        LAST_ELEC_DETAILS = null;\r\n        LAST_PICK = null;\r\n      }\r\n\r\n      function liRowHtml(left, rightHtml, typeKey){\r\n        var data = typeKey ? (' data-elec-type=\"' + typeKey + '\"') : '';\r\n        var cls  = typeKey ? ' class=\"sz-kscalc__clickable\"' : '';\r\n        return '<li'+cls+data+'><span>' + left + '<\/span><span>' + rightHtml + '<\/span><\/li>';\r\n      }\r\n\r\n      function renderBadges(meta){\r\n        var html = '';\r\n        html += '<span class=\"sz-kscalc__badge\"><strong>Ilo\u015b\u0107 wpis\u00f3w:<\/strong> ' + meta.inputs + '<\/span>';\r\n        html += '<span class=\"sz-kscalc__badge\"><strong>Elektryczne w zakresie:<\/strong> ' + meta.elecIn + '<\/span>';\r\n        if (meta.elecOut){\r\n          html += '<span class=\"sz-kscalc__badge\"><strong>Elektryczne poza zakresem:<\/strong> ' + meta.elecOut + '<\/span>';\r\n        }\r\n        html += '<span class=\"sz-kscalc__badge\"><strong>Odcinki KS do wyceny:<\/strong> ' + meta.ksSegments + '<\/span>';\r\n        if (meta.ksSplits){\r\n          html += '<span class=\"sz-kscalc__badge\"><strong>Podzia\u0142y KS (&gt;600):<\/strong> ' + meta.ksSplits + '<\/span>';\r\n        }\r\n        badges.innerHTML = html;\r\n        badges.style.display = 'flex';\r\n      }\r\n\r\n      \/* =========================\r\n         KS: podzia\u0142 >600 na r\u00f3wne odcinki a\u017c do <=600\r\n      ========================= *\/\r\n      function splitToMax(n, max, counter){\r\n        if (n <= max) return [n];\r\n        counter.count += 1;\r\n        var half = n \/ 2;\r\n        var a = splitToMax(half, max, counter);\r\n        var b = splitToMax(half, max, counter);\r\n        return a.concat(b);\r\n      }\r\n\r\n      \/* ===== DETAL: poka\u017c list\u0119 cen dla rozmiar\u00f3w (dla wybranego typu) ===== *\/\r\n      function showElecDetails(typeKey){\r\n        if (!LAST_ELEC_DETAILS) return;\r\n\r\n        \/\/ toggle\r\n        if (LAST_PICK === typeKey && elecDetail.classList.contains('is-open')){\r\n          elecDetail.classList.remove('is-open');\r\n          elecDetail.innerHTML = '';\r\n          LAST_PICK = null;\r\n          elecList.querySelectorAll('li[data-elec-type]').forEach(function(li){ li.classList.remove('sz-kscalc__pick'); });\r\n          return;\r\n        }\r\n        LAST_PICK = typeKey;\r\n\r\n        elecList.querySelectorAll('li[data-elec-type]').forEach(function(li){\r\n          li.classList.toggle('sz-kscalc__pick', li.getAttribute('data-elec-type') === typeKey);\r\n        });\r\n\r\n        var d = LAST_ELEC_DETAILS[typeKey];\r\n        if (!d){ elecDetail.classList.remove('is-open'); elecDetail.innerHTML=''; return; }\r\n\r\n        var html = '';\r\n        html += '<div class=\"sz-kscalc__detailhead\">';\r\n        html +=   '<div><strong>' + d.label + '<\/strong> <span class=\"sz-kscalc__note\">(' + d.range + ')<\/span><\/div>';\r\n        html +=   '<div class=\"sz-kscalc__detailmeta\">';\r\n        html +=     '<span class=\"sz-kscalc__pill\">Policzone: ' + d.inCount + ' szt.<\/span>';\r\n        html +=     '<span class=\"sz-kscalc__pill\">Poza zakresem: ' + d.outCount + ' szt.<\/span>';\r\n        html +=   '<\/div>';\r\n        html += '<\/div>';\r\n\r\n        html += '<div style=\"margin:0 0 10px;color:rgba(0,0,0,.72);font-size:12.5px;\">Lista cen dla wpisanych rozmiar\u00f3w (wg progu):<\/div>';\r\n\r\n        html += '<ul class=\"sz-kscalc__dlist\">';\r\n        d.items.forEach(function(it){\r\n          var left = prettyCm(it.input) + ' \u2192 pr\u00f3g ' + it.bracket + ' cm';\r\n          var right = it.inRange ? money(it.price) : 'poza zakresem';\r\n          html += '<li><span class=\"sz-kscalc__dleft\">' + left + '<\/span><span class=\"sz-kscalc__dright ' + (it.inRange ? '' : 'is-oob') + '\">' + right + '<\/span><\/li>';\r\n        });\r\n        html += '<\/ul>';\r\n\r\n        elecDetail.innerHTML = html;\r\n        elecDetail.classList.add('is-open');\r\n      }\r\n\r\n      function calc(){\r\n        var nums = parseNumbers(input.value);\r\n        if(!nums.length){\r\n          clearUI();\r\n          elecList.innerHTML = '<li class=\"sz-kscalc__muted\">Brak poprawnych warto\u015bci. Wpisz np. 120, 147,5, 650.<\/li>';\r\n          return;\r\n        }\r\n\r\n        \/* =========================================================\r\n           1) G\u0141\u00d3WNE: ELEKTRYCZNE (liczymy od razu z wpis\u00f3w)\r\n        ========================================================= *\/\r\n        var totals = { am50:0, am50bat:0, am75wifi:0, am75zig:0 };\r\n        var inCount = { am50:0, am50bat:0, am75wifi:0, am75zig:0 };\r\n        var outCount= { am50:0, am50bat:0, am75wifi:0, am75zig:0 };\r\n\r\n        \/\/ items: [{input, bracket, price, inRange}]\r\n        var itemsByType = { am50:[], am50bat:[], am75wifi:[], am75zig:[] };\r\n\r\n        function pushItem(type, inputVal, bracket, price, inRange){\r\n          itemsByType[type].push({ input: inputVal, bracket: bracket, price: price, inRange: inRange });\r\n        }\r\n\r\n        function calcElectricFor(type, n){\r\n          var use = Math.max(n, 100); \/\/ 80\u2013100 jak 100\r\n\r\n          \/\/ AM50 \/ AM50 bat: 100\u2013600\r\n          if (type === 'am50' || type === 'am50bat'){\r\n            if (use > 600){\r\n              outCount[type] += 1;\r\n              pushItem(type, n, '\u2014', 0, false);\r\n              return;\r\n            }\r\n            var br = ceilToBracket(use, BRACKETS_AM50);\r\n            var ok = !!(br && ELEC[br] && Number.isFinite(ELEC[br][type]));\r\n            if (!ok){\r\n              outCount[type] += 1;\r\n              pushItem(type, n, br || '\u2014', 0, false);\r\n              return;\r\n            }\r\n            var price = ELEC[br][type];\r\n            totals[type] += price;\r\n            inCount[type] += 1;\r\n            pushItem(type, n, br, price, true);\r\n            return;\r\n          }\r\n\r\n          \/\/ AM75: 100\u20131200\r\n          if (use > 1200){\r\n            outCount[type] += 1;\r\n            pushItem(type, n, '\u2014', 0, false);\r\n            return;\r\n          }\r\n          var br75 = ceilToBracket(use, BRACKETS_AM75);\r\n          var ok75 = !!(br75 && ELEC[br75] && Number.isFinite(ELEC[br75][type]));\r\n          if (!ok75){\r\n            outCount[type] += 1;\r\n            pushItem(type, n, br75 || '\u2014', 0, false);\r\n            return;\r\n          }\r\n          var price75 = ELEC[br75][type];\r\n          totals[type] += price75;\r\n          inCount[type] += 1;\r\n          pushItem(type, n, br75, price75, true);\r\n        }\r\n\r\n        nums.forEach(function(n){\r\n          calcElectricFor('am50', n);\r\n          calcElectricFor('am50bat', n);\r\n          calcElectricFor('am75wifi', n);\r\n          calcElectricFor('am75zig', n);\r\n        });\r\n\r\n        \/\/ zapami\u0119taj szczeg\u00f3\u0142y do klikni\u0119\u0107\r\n        LAST_ELEC_DETAILS = {\r\n          am50:     { label:'AM50',            range:'100\u2013600 cm',  inCount: inCount.am50,     outCount: outCount.am50,     items: itemsByType.am50 },\r\n          am50bat:  { label:'AM50 bateryjny',  range:'100\u2013600 cm',  inCount: inCount.am50bat,  outCount: outCount.am50bat,  items: itemsByType.am50bat },\r\n          am75wifi: { label:'AM75 Wi-Fi \/ 5W', range:'100\u20131200 cm', inCount: inCount.am75wifi, outCount: outCount.am75wifi, items: itemsByType.am75wifi },\r\n          am75zig:  { label:'AM75 Zigbee',     range:'100\u20131200 cm', inCount: inCount.am75zig,  outCount: outCount.am75zig,  items: itemsByType.am75zig }\r\n        };\r\n        LAST_PICK = null;\r\n        elecDetail.classList.remove('is-open');\r\n        elecDetail.innerHTML = '';\r\n        elecList.querySelectorAll('li[data-elec-type]').forEach(function(li){ li.classList.remove('sz-kscalc__pick'); });\r\n\r\n        function line(label, key){\r\n          var note = outCount[key] ? ('<span class=\"sz-kscalc__note\">(poza zakresem: ' + outCount[key] + ')<\/span>') : '';\r\n          var val  = inCount[key] ? ('<strong>' + money(totals[key]) + '<\/strong>' + note) : ('<strong>\u2014<\/strong>' + note);\r\n          return liRowHtml(label, val, key);\r\n        }\r\n\r\n        elecList.innerHTML =\r\n          line('AM50 \u2014 suma', 'am50') +\r\n          line('AM50 bateryjny \u2014 suma', 'am50bat') +\r\n          line('AM75 Wi-Fi \/ 5W \u2014 suma', 'am75wifi') +\r\n          line('AM75 Zigbee \u2014 suma', 'am75zig');\r\n\r\n        \/\/ \u201eRazem elektryczne\u201d: min\u2013max tylko z typ\u00f3w, kt\u00f3re maj\u0105 cokolwiek policzone w zakresie\r\n        var vals = [];\r\n        ['am50','am50bat','am75wifi','am75zig'].forEach(function(k){\r\n          if (inCount[k] > 0) vals.push(totals[k]);\r\n        });\r\n        var anyOutElec = outCount.am50 + outCount.am50bat + outCount.am75wifi + outCount.am75zig;\r\n\r\n        if (!vals.length && anyOutElec > 0){\r\n          elecSum.innerHTML = '<span>Razem elektryczne<\/span><span>\u2014 <span class=\"sz-kscalc__note\">(wszystko poza zakresem)<\/span><\/span>';\r\n        } else if (vals.length){\r\n          var minTotal = Math.min.apply(null, vals);\r\n          var maxTotal = Math.max.apply(null, vals);\r\n          elecSum.innerHTML =\r\n            '<span>Razem elektryczne (min\u2013max z pozycji w zakresie)<\/span>' +\r\n            '<span>' + money(minTotal) + ' \u2013 ' + money(maxTotal) +\r\n            (anyOutElec ? ' <span class=\"sz-kscalc__note\">(cz\u0119\u015b\u0107 wymiar\u00f3w poza zakresem)<\/span>' : '') +\r\n            '<\/span>';\r\n        } else {\r\n          elecSum.innerHTML = '<span>Razem elektryczne<\/span><span>\u2014<\/span>';\r\n        }\r\n\r\n        \/* =========================================================\r\n           2) DODATKOWO: KS (informacyjnie, bazowa) + podzia\u0142y >600\r\n        ========================================================= *\/\r\n        var splitCounter = {count:0};\r\n        var ksSegments = [];\r\n        nums.forEach(function(n){\r\n          var parts = splitToMax(n, 600, splitCounter);\r\n          ksSegments = ksSegments.concat(parts);\r\n        });\r\n\r\n        var ksCounts = {};\r\n        BRACKETS_KS.forEach(function(b){ ksCounts[b]=0; });\r\n        ksSegments.forEach(function(n){\r\n          var use = Math.max(n, 100); \/\/ 80\u2013100 jak 100\r\n          var b = ceilToBracket(use, BRACKETS_KS);\r\n          if (b) ksCounts[b] += 1;\r\n        });\r\n\r\n        var ksTotal = 0;\r\n        var ksRows = '';\r\n        BRACKETS_KS.forEach(function(b){\r\n          var c = ksCounts[b];\r\n          if(!c) return;\r\n          var sum = c * KS[b].base;\r\n          ksTotal += sum;\r\n          ksRows += liRowHtml('do ' + b + ' cm \u2014 ' + c + ' szt.', '<strong>' + money(sum) + '<\/strong>');\r\n        });\r\n\r\n        ksList.innerHTML = ksRows || '<li class=\"sz-kscalc__muted\">Brak odcink\u00f3w KS do wyceny.<\/li>';\r\n        ksSum.innerHTML  = '<span>Razem KS (cena bazowa \u2014 informacyjnie)<\/span><span>' + money(ksTotal) + '<\/span>';\r\n\r\n        \/\/ badge meta (po obu obliczeniach)\r\n        var elecInAny = (inCount.am50 + inCount.am50bat + inCount.am75wifi + inCount.am75zig);\r\n        renderBadges({\r\n          inputs: nums.length,\r\n          elecIn: elecInAny,\r\n          elecOut: anyOutElec,\r\n          ksSegments: ksSegments.length,\r\n          ksSplits: splitCounter.count\r\n        });\r\n      }\r\n\r\n      \/\/ klik w linijk\u0119 elektrycznych = poka\u017c detale + lista cen\r\n      elecList.addEventListener('click', function(e){\r\n        var li = e.target && e.target.closest ? e.target.closest('li[data-elec-type]') : null;\r\n        if (!li) return;\r\n        var key = li.getAttribute('data-elec-type');\r\n        if (!key) return;\r\n        showElecDetails(key);\r\n      });\r\n\r\n      btnCalc.addEventListener('click', calc);\r\n      btnClear.addEventListener('click', function(){ input.value=''; clearUI(); });\r\n\r\n      clearUI();\r\n    })();\r\n  <\/script>\r\n<\/section>\n<!-- \/end HFCM by 99 Robots -->\n\n\n\n<!-- HFCM by 99 Robots - Snippet # 8: dwa filmy -->\n<section class=\"kk-video-duo\" aria-label=\"Filmy o karniszach elektrycznych \u0141\u00f3d\u017a\">\r\n  <style>\r\n    .kk-video-duo{\r\n      --kk-bg:#faf8f4;\r\n      --kk-card:#ffffff;\r\n      --kk-text:#1f1f1f;\r\n      --kk-muted:#6f6a63;\r\n      --kk-line:#e7ded2;\r\n      --kk-gold:#b99a5f;\r\n      --kk-gold-soft:#f3eadb;\r\n      --kk-dark:#171717;\r\n      font-family:inherit;\r\n      color:var(--kk-text);\r\n      margin:28px auto;\r\n      padding:clamp(18px,3vw,36px);\r\n      border:1px solid var(--kk-line);\r\n      border-radius:26px;\r\n      background:\r\n        radial-gradient(circle at 12% 10%, rgba(185,154,95,.14), transparent 34%),\r\n        radial-gradient(circle at 88% 82%, rgba(185,154,95,.10), transparent 36%),\r\n        linear-gradient(180deg,#fff 0%,var(--kk-bg) 100%);\r\n      box-shadow:0 16px 42px rgba(31,26,19,.06);\r\n      overflow:hidden;\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .kk-video-duo *{\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .kk-video-duo__head{\r\n      max-width:980px;\r\n      margin:0 auto 22px;\r\n      text-align:center;\r\n    }\r\n\r\n    .kk-video-duo__kicker{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      gap:8px;\r\n      padding:7px 13px;\r\n      border:1px solid var(--kk-line);\r\n      border-radius:999px;\r\n      background:#fff;\r\n      color:var(--kk-muted);\r\n      font-size:12px;\r\n      letter-spacing:.08em;\r\n      text-transform:uppercase;\r\n      font-weight:800;\r\n      margin-bottom:12px;\r\n    }\r\n\r\n    .kk-video-duo__kicker:before{\r\n      content:\"\";\r\n      width:7px;\r\n      height:7px;\r\n      border-radius:50%;\r\n      background:var(--kk-gold);\r\n      box-shadow:0 0 0 5px var(--kk-gold-soft);\r\n      flex:0 0 auto;\r\n    }\r\n\r\n    .kk-video-duo h2{\r\n      margin:0 0 10px;\r\n      font-size:clamp(25px,3vw,38px);\r\n      line-height:1.13;\r\n      letter-spacing:-.035em;\r\n      color:var(--kk-dark);\r\n      font-weight:850;\r\n    }\r\n\r\n    .kk-video-duo__lead{\r\n      margin:0 auto;\r\n      max-width:820px;\r\n      color:var(--kk-muted);\r\n      font-size:16px;\r\n      line-height:1.75;\r\n    }\r\n\r\n    .kk-video-duo__grid{\r\n      display:grid;\r\n      grid-template-columns:1fr 1fr;\r\n      grid-template-areas:\r\n        \"video1 video2\"\r\n        \"text1 text2\";\r\n      gap:16px;\r\n      align-items:start;\r\n    }\r\n\r\n    .kk-video-duo__item--one{display:contents;}\r\n    .kk-video-duo__item--two{display:contents;}\r\n\r\n    .kk-video-duo__media{\r\n      position:relative;\r\n      border-radius:22px;\r\n      padding:12px;\r\n      border:1px solid rgba(185,154,95,.34);\r\n      background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(243,234,219,.74));\r\n      box-shadow:0 18px 40px rgba(31,26,19,.09);\r\n      overflow:hidden;\r\n      min-width:0;\r\n    }\r\n\r\n    .kk-video-duo__item--one .kk-video-duo__media{grid-area:video1;}\r\n    .kk-video-duo__item--two .kk-video-duo__media{grid-area:video2;}\r\n\r\n    .kk-video-duo__media:before{\r\n      content:\"\";\r\n      position:absolute;\r\n      inset:-45%;\r\n      background:\r\n        radial-gradient(circle at 25% 25%, rgba(185,154,95,.20), transparent 34%),\r\n        radial-gradient(circle at 75% 65%, rgba(255,255,255,.72), transparent 36%);\r\n      filter:blur(12px);\r\n      opacity:.85;\r\n      pointer-events:none;\r\n    }\r\n\r\n    .kk-video-duo__frame{\r\n      position:relative;\r\n      z-index:1;\r\n      width:100%;\r\n      aspect-ratio:16\/9;\r\n      border-radius:16px;\r\n      overflow:hidden;\r\n      background:#111;\r\n      box-shadow:0 10px 28px rgba(0,0,0,.16);\r\n    }\r\n\r\n    .kk-video-duo__frame iframe,\r\n    .kk-video-duo__frame video{\r\n      position:absolute;\r\n      inset:0;\r\n      width:100%;\r\n      height:100%;\r\n      border:0;\r\n      display:block;\r\n      object-fit:cover;\r\n    }\r\n\r\n    .kk-video-duo__content{\r\n      background:rgba(255,255,255,.92);\r\n      border:1px solid var(--kk-line);\r\n      border-radius:22px;\r\n      padding:20px;\r\n      box-shadow:0 12px 30px rgba(31,26,19,.055);\r\n      min-height:100%;\r\n    }\r\n\r\n    .kk-video-duo__item--one .kk-video-duo__content{grid-area:text1;}\r\n    .kk-video-duo__item--two .kk-video-duo__content{grid-area:text2;}\r\n\r\n    .kk-video-duo__label{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      padding:7px 11px;\r\n      border-radius:999px;\r\n      border:1px solid rgba(185,154,95,.34);\r\n      background:linear-gradient(135deg,#fff,var(--kk-gold-soft));\r\n      color:#4b4032;\r\n      font-size:12px;\r\n      font-weight:900;\r\n      letter-spacing:.04em;\r\n      text-transform:uppercase;\r\n      margin-bottom:12px;\r\n    }\r\n\r\n    .kk-video-duo h3{\r\n      margin:0 0 10px;\r\n      font-size:clamp(20px,2vw,26px);\r\n      line-height:1.18;\r\n      letter-spacing:-.025em;\r\n      color:var(--kk-dark);\r\n    }\r\n\r\n    .kk-video-duo__text{\r\n      margin:0 0 12px;\r\n      color:var(--kk-muted);\r\n      font-size:15.5px;\r\n      line-height:1.75;\r\n    }\r\n\r\n    .kk-video-duo__text strong{\r\n      color:var(--kk-text);\r\n      font-weight:850;\r\n    }\r\n\r\n    .kk-video-duo__tags{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:8px;\r\n      margin-top:16px;\r\n    }\r\n\r\n    .kk-video-duo__tag{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      padding:8px 11px;\r\n      border-radius:999px;\r\n      background:#fff;\r\n      border:1px solid var(--kk-line);\r\n      color:#51483c;\r\n      font-size:13px;\r\n      font-weight:800;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .kk-video-duo__cta{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:10px;\r\n      justify-content:center;\r\n      margin-top:24px;\r\n      padding-top:22px;\r\n      border-top:1px solid rgba(0,0,0,.08);\r\n    }\r\n\r\n    .kk-video-duo__btn{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      min-height:44px;\r\n      padding:0 18px;\r\n      border-radius:999px;\r\n      background:linear-gradient(135deg,#d7bd7c,#a8823c);\r\n      color:#1d1d1d !important;\r\n      text-decoration:none !important;\r\n      font-weight:850;\r\n      box-shadow:0 10px 24px rgba(0,0,0,.14);\r\n      transition:transform .18s ease, box-shadow .18s ease;\r\n    }\r\n\r\n    .kk-video-duo__btn:hover{\r\n      transform:translateY(-1px);\r\n      box-shadow:0 14px 30px rgba(0,0,0,.18);\r\n    }\r\n\r\n    .kk-video-duo__btn--dark{\r\n      background:#111;\r\n      color:#fff !important;\r\n    }\r\n\r\n    @media (max-width:900px){\r\n      .kk-video-duo__grid{\r\n        grid-template-columns:1fr;\r\n        grid-template-areas:\r\n          \"video1\"\r\n          \"text1\"\r\n          \"video2\"\r\n          \"text2\";\r\n      }\r\n\r\n      .kk-video-duo__content{\r\n        text-align:center;\r\n      }\r\n\r\n      .kk-video-duo__tags{\r\n        justify-content:center;\r\n      }\r\n    }\r\n\r\n    @media (max-width:560px){\r\n      .kk-video-duo{\r\n        border-radius:18px;\r\n        padding:18px;\r\n      }\r\n\r\n      .kk-video-duo__head{\r\n        text-align:left;\r\n      }\r\n\r\n      .kk-video-duo__kicker{\r\n        margin-bottom:10px;\r\n      }\r\n\r\n      .kk-video-duo__media{\r\n        padding:8px;\r\n        border-radius:18px;\r\n      }\r\n\r\n      .kk-video-duo__frame{\r\n        border-radius:13px;\r\n      }\r\n\r\n      .kk-video-duo__content{\r\n        padding:17px;\r\n        border-radius:18px;\r\n        text-align:left;\r\n      }\r\n\r\n      .kk-video-duo__tags{\r\n        justify-content:flex-start;\r\n      }\r\n\r\n      .kk-video-duo__tag,\r\n      .kk-video-duo__btn{\r\n        width:100%;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"kk-video-duo__head\">\r\n    <div class=\"kk-video-duo__kicker\">Karnisze elektryczne \u0141\u00f3d\u017a<\/div>\r\n    <h2>Karnisze elektryczne w filmach \u2014 zobacz wygod\u0119, ruch zas\u0142on i mo\u017cliwo\u015bci sterowania<\/h2>\r\n    <p class=\"kk-video-duo__lead\">\r\n      Karnisz elektryczny najlepiej oceni\u0107 wtedy, gdy mo\u017cna zobaczy\u0107 go w dzia\u0142aniu. Przygotowali\u015bmy materia\u0142y, kt\u00f3re pokazuj\u0105 zar\u00f3wno efekt w gotowym wn\u0119trzu, jak i rozwi\u0105zania zwi\u0105zane ze sterowaniem oraz konfiguracj\u0105 systemu do domu, mieszkania lub apartamentu w \u0141odzi.\r\n    <\/p>\r\n  <\/div>\r\n\r\n  <div class=\"kk-video-duo__grid\">\r\n\r\n    <div class=\"kk-video-duo__item kk-video-duo__item--one\">\r\n      <div class=\"kk-video-duo__media\">\r\n        <div class=\"kk-video-duo__frame\">\r\n          <video\r\n            controls\r\n            poster=\"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2024\/10\/karnisze-poznan-1.webp\"\r\n            src=\"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2024\/10\/karnisze-poznan.mp4\"\r\n            playsinline>\r\n          <\/video>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"kk-video-duo__content\">\r\n        <div class=\"kk-video-duo__label\">Zobacz realizacj\u0119<\/div>\r\n        <h3>Jak karnisz elektryczny pracuje po zamontowaniu?<\/h3>\r\n        <p class=\"kk-video-duo__text\">\r\n          Film pokazuje system w realnym wn\u0119trzu, gdzie liczy si\u0119 nie tylko sam nap\u0119d, ale r\u00f3wnie\u017c spos\u00f3b prowadzenia tkaniny. Zas\u0142ony powinny przesuwa\u0107 si\u0119 p\u0142ynnie, r\u00f3wno i cicho, szczeg\u00f3lnie przy du\u017cych oknach oraz aran\u017cacjach, w kt\u00f3rych dekoracja okienna jest wa\u017cnym elementem wystroju.\r\n        <\/p>\r\n        <p class=\"kk-video-duo__text\">\r\n          Odpowiednio przygotowany <strong>karnisz elektryczny na wymiar<\/strong> zapewnia codzienny komfort bez zb\u0119dnego eksponowania techniki. System mo\u017ce by\u0107 sterowany pilotem, aplikacj\u0105 lub wsp\u00f3\u0142pracowa\u0107 z automatyk\u0105 smart home, a ca\u0142o\u015b\u0107 pozostaje dyskretnym uzupe\u0142nieniem wn\u0119trza.\r\n        <\/p>\r\n        <div class=\"kk-video-duo__tags\" aria-label=\"Tematy filmu z realizacji\">\r\n          <span class=\"kk-video-duo__tag\">Gotowe wn\u0119trze<\/span>\r\n          <span class=\"kk-video-duo__tag\">P\u0142ynny przesuw zas\u0142on<\/span>\r\n          <span class=\"kk-video-duo__tag\">Komfort u\u017cytkowania<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"kk-video-duo__item kk-video-duo__item--two\">\r\n      <div class=\"kk-video-duo__media\">\r\n        <div class=\"kk-video-duo__frame\">\r\n          <iframe\r\n            src=\"https:\/\/www.youtube.com\/embed\/7E2yoT2i6GQ\"\r\n            title=\"Karnisze elektryczne A-OK \u2014 konfiguracja i dob\u00f3r systemu\"\r\n            loading=\"lazy\"\r\n            allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n            referrerpolicy=\"strict-origin-when-cross-origin\"\r\n            allowfullscreen>\r\n          <\/iframe>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"kk-video-duo__content\">\r\n        <div class=\"kk-video-duo__label\">Wiedza przed zakupem<\/div>\r\n        <h3>Karnisze A-OK \u2014 sterowanie dopasowane do Twojego wn\u0119trza<\/h3>\r\n        <p class=\"kk-video-duo__text\">\r\n          Karnisze elektryczne A-OK mo\u017cna dobra\u0107 do r\u00f3\u017cnych potrzeb: od prostego sterowania pilotem, przez modele obs\u0142ugiwane aplikacj\u0105, a\u017c po rozwi\u0105zania wsp\u00f3\u0142pracuj\u0105ce z systemem smart home. Dost\u0119pne s\u0105 nap\u0119dy przewodowe, warianty Wi-Fi i Zigbee, a tak\u017ce modele bateryjne, kt\u00f3re sprawdzaj\u0105 si\u0119 tam, gdzie przy oknie nie przygotowano zasilania.\r\n        <\/p>\r\n        <p class=\"kk-video-duo__text\">\r\n          Dobry wyb\u00f3r zaczyna si\u0119 od szczeg\u00f3\u0142\u00f3w. Przed zam\u00f3wieniem warto okre\u015bli\u0107 d\u0142ugo\u015b\u0107 szyny, ci\u0119\u017car tkaniny, stron\u0119 monta\u017cu silnika, spos\u00f3b rozsuwania zas\u0142on oraz rodzaj obs\u0142ugi. Dzi\u0119ki temu karnisz mo\u017ce by\u0107 wykonany pod konkretn\u0105 aran\u017cacj\u0119 w \u0141odzi i dzia\u0142a\u0107 dok\u0142adnie tak, jak oczekujesz.\r\n        <\/p>\r\n        <div class=\"kk-video-duo__tags\" aria-label=\"Tematy poradnika\">\r\n          <span class=\"kk-video-duo__tag\">A-OK<\/span>\r\n          <span class=\"kk-video-duo__tag\">Pilot i aplikacja<\/span>\r\n          <span class=\"kk-video-duo__tag\">Wi-Fi \/ Zigbee<\/span>\r\n          <span class=\"kk-video-duo__tag\">Smart home<\/span>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n\r\n  <div class=\"kk-video-duo__cta\">\r\n    <a class=\"kk-video-duo__btn kk-video-duo__btn--dark\" href=\"tel:+48667057777\">Wyceny: +48 667 057 777<\/a>\r\n    <a class=\"kk-video-duo__btn\" href=\"mailto:kontakt@karniszelodz.pl\">kontakt@karniszelodz.pl<\/a>\r\n  <\/div>\r\n<\/section>\n<!-- \/end HFCM by 99 Robots -->\n\n\n\n<!-- HFCM by 99 Robots - Snippet # 2: tabelka cen karniszy elektrycznych -->\n<section class=\"cc-price-section\" aria-label=\"Cennik karniszy elektrycznych AZHOME\">\r\n\r\n  <h3 class=\"cc-price-title\">Cennik karniszy elektrycznych AZHOME<\/h3>\r\n<p class=\"cc-price-sub\">\r\n  Wy\u015blij wymiary na mail\r\n  <a href=\"mailto:kontakt@karniszelodz.pl\" style=\"font-weight:900;text-decoration:underline;\">\r\n    kontakt@karniszelodz.pl\r\n  <\/a>,\r\n  a my przygotujemy kalkulacj\u0119.\r\n<\/p>\r\n\r\n  <!-- ===================== DESKTOP ===================== -->\r\n  <div class=\"cc-table cc-table--desktop\" role=\"region\" aria-label=\"Tabela cenowa desktop\">\r\n    <div class=\"cc-table-scroll\" tabindex=\"0\">\r\n      <table class=\"cc-pricetable\" data-cc-desktop-table>\r\n        <thead>\r\n          <tr>\r\n            <th data-col=\"0\">Rodzaj<\/th>\r\n            <th data-col=\"100\">100<\/th><th data-col=\"150\">150<\/th><th data-col=\"200\">200<\/th><th data-col=\"250\">250<\/th><th data-col=\"300\">300<\/th><th data-col=\"350\">350<\/th>\r\n            <th data-col=\"400\">400<\/th><th data-col=\"450\">450<\/th><th data-col=\"500\">500<\/th><th data-col=\"550\">550<\/th><th data-col=\"600\">600<\/th>\r\n            <th data-col=\"650\">650<\/th><th data-col=\"700\">700<\/th><th data-col=\"750\">750<\/th><th data-col=\"800\">800<\/th><th data-col=\"850\">850<\/th><th data-col=\"900\">900<\/th>\r\n            <th data-col=\"950\">950<\/th><th data-col=\"1000\">1000<\/th><th data-col=\"1050\">1050<\/th><th data-col=\"1100\">1100<\/th><th data-col=\"1150\">1150<\/th><th data-col=\"1200\">1200<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n\r\n        <tbody>\r\n          <tr data-type=\"AM50\" data-label=\"Karnisz AM50\">\r\n            <th data-col=\"0\">Karnisz AM50<\/th>\r\n            <td data-price=\"973\"  data-col=\"100\">973<\/td>\r\n            <td data-price=\"1042\" data-col=\"150\">1042<\/td>\r\n            <td data-price=\"1111\" data-col=\"200\">1111<\/td>\r\n            <td data-price=\"1180\" data-col=\"250\">1180<\/td>\r\n            <td data-price=\"1249\" data-col=\"300\">1249<\/td>\r\n            <td data-price=\"1317\" data-col=\"350\">1317<\/td>\r\n            <td data-price=\"1386\" data-col=\"400\">1386<\/td>\r\n            <td data-price=\"1453\" data-col=\"450\">1453<\/td>\r\n            <td data-price=\"1522\" data-col=\"500\">1522<\/td>\r\n            <td data-price=\"1591\" data-col=\"550\">1591<\/td>\r\n            <td data-price=\"1659\" data-col=\"600\">1659<\/td>\r\n            <td class=\"cc-na\" data-col=\"650\">\u2014<\/td><td class=\"cc-na\" data-col=\"700\">\u2014<\/td><td class=\"cc-na\" data-col=\"750\">\u2014<\/td><td class=\"cc-na\" data-col=\"800\">\u2014<\/td>\r\n            <td class=\"cc-na\" data-col=\"850\">\u2014<\/td><td class=\"cc-na\" data-col=\"900\">\u2014<\/td><td class=\"cc-na\" data-col=\"950\">\u2014<\/td><td class=\"cc-na\" data-col=\"1000\">\u2014<\/td>\r\n            <td class=\"cc-na\" data-col=\"1050\">\u2014<\/td><td class=\"cc-na\" data-col=\"1100\">\u2014<\/td><td class=\"cc-na\" data-col=\"1150\">\u2014<\/td><td class=\"cc-na\" data-col=\"1200\">\u2014<\/td>\r\n          <\/tr>\r\n\r\n          <tr data-type=\"AM50_BAT\" data-label=\"Karnisz AM50 bateryjny\">\r\n            <th data-col=\"0\">Karnisz AM50 bateryjny<\/th>\r\n            <td data-price=\"1192\" data-col=\"100\">1192<\/td>\r\n            <td data-price=\"1252\" data-col=\"150\">1252<\/td>\r\n            <td data-price=\"1312\" data-col=\"200\">1312<\/td>\r\n            <td data-price=\"1373\" data-col=\"250\">1373<\/td>\r\n            <td data-price=\"1443\" data-col=\"300\">1443<\/td>\r\n            <td data-price=\"1493\" data-col=\"350\">1493<\/td>\r\n            <td data-price=\"1553\" data-col=\"400\">1553<\/td>\r\n            <td data-price=\"1614\" data-col=\"450\">1614<\/td>\r\n            <td data-price=\"1674\" data-col=\"500\">1674<\/td>\r\n            <td data-price=\"1734\" data-col=\"550\">1734<\/td>\r\n            <td data-price=\"1795\" data-col=\"600\">1795<\/td>\r\n            <td class=\"cc-na\" data-col=\"650\">\u2014<\/td><td class=\"cc-na\" data-col=\"700\">\u2014<\/td><td class=\"cc-na\" data-col=\"750\">\u2014<\/td><td class=\"cc-na\" data-col=\"800\">\u2014<\/td>\r\n            <td class=\"cc-na\" data-col=\"850\">\u2014<\/td><td class=\"cc-na\" data-col=\"900\">\u2014<\/td><td class=\"cc-na\" data-col=\"950\">\u2014<\/td><td class=\"cc-na\" data-col=\"1000\">\u2014<\/td>\r\n            <td class=\"cc-na\" data-col=\"1050\">\u2014<\/td><td class=\"cc-na\" data-col=\"1100\">\u2014<\/td><td class=\"cc-na\" data-col=\"1150\">\u2014<\/td><td class=\"cc-na\" data-col=\"1200\">\u2014<\/td>\r\n          <\/tr>\r\n\r\n          <tr data-type=\"AM75_WIFI\" data-label=\"Karnisz AM75 Wi-Fi \/ 5W\">\r\n            <th data-col=\"0\">Karnisz AM75 Wi-Fi \/ 5W<\/th>\r\n            <td data-price=\"1068\" data-col=\"100\">1068<\/td>\r\n            <td data-price=\"1137\" data-col=\"150\">1137<\/td>\r\n            <td data-price=\"1205\" data-col=\"200\">1205<\/td>\r\n            <td data-price=\"1274\" data-col=\"250\">1274<\/td>\r\n            <td data-price=\"1343\" data-col=\"300\">1343<\/td>\r\n            <td data-price=\"1412\" data-col=\"350\">1412<\/td>\r\n            <td data-price=\"1481\" data-col=\"400\">1481<\/td>\r\n            <td data-price=\"1547\" data-col=\"450\">1547<\/td>\r\n            <td data-price=\"1616\" data-col=\"500\">1616<\/td>\r\n            <td data-price=\"1685\" data-col=\"550\">1685<\/td>\r\n            <td data-price=\"1754\" data-col=\"600\">1754<\/td>\r\n            <td data-price=\"1823\" data-col=\"650\">1823<\/td>\r\n            <td data-price=\"1892\" data-col=\"700\">1892<\/td>\r\n            <td data-price=\"1961\" data-col=\"750\">1961<\/td>\r\n            <td data-price=\"2030\" data-col=\"800\">2030<\/td>\r\n            <td data-price=\"2098\" data-col=\"850\">2098<\/td>\r\n            <td data-price=\"2165\" data-col=\"900\">2165<\/td>\r\n            <td data-price=\"2234\" data-col=\"950\">2234<\/td>\r\n            <td data-price=\"2303\" data-col=\"1000\">2303<\/td>\r\n            <td data-price=\"2371\" data-col=\"1050\">2371<\/td>\r\n            <td data-price=\"2440\" data-col=\"1100\">2440<\/td>\r\n            <td data-price=\"2509\" data-col=\"1150\">2509<\/td>\r\n            <td data-price=\"2578\" data-col=\"1200\">2578<\/td>\r\n          <\/tr>\r\n\r\n          <tr data-type=\"AM75_ZIGBEE\" data-label=\"Karnisz AM75 Zigbee\">\r\n            <th data-col=\"0\">Karnisz AM75 Zigbee<\/th>\r\n            <td data-price=\"1117\" data-col=\"100\">1117<\/td>\r\n            <td data-price=\"1186\" data-col=\"150\">1186<\/td>\r\n            <td data-price=\"1255\" data-col=\"200\">1255<\/td>\r\n            <td data-price=\"1323\" data-col=\"250\">1323<\/td>\r\n            <td data-price=\"1392\" data-col=\"300\">1392<\/td>\r\n            <td data-price=\"1461\" data-col=\"350\">1461<\/td>\r\n            <td data-price=\"1530\" data-col=\"400\">1530<\/td>\r\n            <td data-price=\"1597\" data-col=\"450\">1597<\/td>\r\n            <td data-price=\"1665\" data-col=\"500\">1665<\/td>\r\n            <td data-price=\"1734\" data-col=\"550\">1734<\/td>\r\n            <td data-price=\"1803\" data-col=\"600\">1803<\/td>\r\n            <td data-price=\"1872\" data-col=\"650\">1872<\/td>\r\n            <td data-price=\"1941\" data-col=\"700\">1941<\/td>\r\n            <td data-price=\"2010\" data-col=\"750\">2010<\/td>\r\n            <td data-price=\"2079\" data-col=\"800\">2079<\/td>\r\n            <td data-price=\"2148\" data-col=\"850\">2148<\/td>\r\n            <td data-price=\"2214\" data-col=\"900\">2214<\/td>\r\n            <td data-price=\"2283\" data-col=\"950\">2283<\/td>\r\n            <td data-price=\"2352\" data-col=\"1000\">2352<\/td>\r\n            <td data-price=\"2421\" data-col=\"1050\">2421<\/td>\r\n            <td data-price=\"2490\" data-col=\"1100\">2490<\/td>\r\n            <td data-price=\"2558\" data-col=\"1150\">2558<\/td>\r\n            <td data-price=\"2627\" data-col=\"1200\">2627<\/td>\r\n          <\/tr>\r\n        <\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n\r\n    <div class=\"cc-table-note\">\r\n      <strong>TIP dla Ciebie<\/strong> kliknij w dowoln\u0105 cen\u0119 \u2014 pod\u015bwietl\u0119 wiersz i kolumn\u0119 oraz poka\u017c\u0119 szczeg\u00f3\u0142 w dymku.\r\n    <\/div>\r\n\r\n    <!-- Tooltip -->\r\n    <div class=\"cc-tip\" data-cc-tip role=\"status\" aria-live=\"polite\" aria-hidden=\"true\"><\/div>\r\n  <\/div>\r\n\r\n  <!-- ===================== MOBILE ===================== -->\r\n  <div class=\"cc-table cc-table--mobile\" aria-label=\"Tabela cenowa mobile\">\r\n    <div class=\"cc-mobile-head\">\r\n      <label class=\"cc-mobile-field\">\r\n        <span>Wybierz rodzaj karnisza<\/span>\r\n        <select class=\"cc-mobile-select\" data-cc-mobile-select>\r\n          <option value=\"AM50\" selected>Karnisz AM50<\/option>\r\n          <option value=\"AM50_BAT\">Karnisz AM50 bateryjny<\/option>\r\n          <option value=\"AM75_WIFI\">Karnisz AM75 Wi-Fi \/ 5W<\/option>\r\n          <option value=\"AM75_ZIGBEE\">Karnisz AM75 Zigbee<\/option>\r\n        <\/select>\r\n      <\/label>\r\n\r\n      <div class=\"cc-mobile-chip\" data-cc-mobile-max>Max: \u2014<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cc-mobile-quick\">\r\n      <label class=\"cc-mobile-field\">\r\n        <span>Wpisz d\u0142ugo\u015b\u0107 (cm)<\/span>\r\n        <input class=\"cc-mobile-input\" data-cc-mobile-len type=\"number\" inputmode=\"numeric\" min=\"80\" max=\"1200\" step=\"1\" placeholder=\"np. 101\">\r\n      <\/label>\r\n\r\n      <div class=\"cc-mobile-result\" data-cc-mobile-result aria-live=\"polite\">\r\n        <div class=\"cc-mr-title\">Wycena<\/div>\r\n        <div class=\"cc-mr-line\" data-cc-mobile-bracket>\u2014<\/div>\r\n        <div class=\"cc-mr-price\" data-cc-mobile-price>\u2014<\/div>\r\n        <div class=\"cc-mr-hint\" data-cc-mobile-hint>Wpisz d\u0142ugo\u015b\u0107, a poka\u017c\u0119 pr\u00f3g i cen\u0119.<\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cc-mobile-tablewrap\">\r\n      <table class=\"cc-mobile-table\" data-cc-mobile-table>\r\n        <thead>\r\n          <tr>\r\n            <th>Pr\u00f3g d\u0142ugo\u015bci<\/th>\r\n            <th>Cena<\/th>\r\n          <\/tr>\r\n        <\/thead>\r\n        <tbody><!-- JS --><\/tbody>\r\n      <\/table>\r\n    <\/div>\r\n\r\n    <div class=\"cc-table-note\">\r\n      Wy\u015blij wymiary na mail <stron>kontakt@karniszewarszawa.pl<\/stron>, a my przygotujemy kalkulacj\u0119.\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <!-- ===================== MIN\/MAX ===================== -->\r\n  <h4 class=\"cc-price-title cc-price-title--sm\">Minimalne i maksymalne d\u0142ugo\u015bci<\/h4>\r\n  <div class=\"cc-limits\">\r\n    <table class=\"cc-limitstable\">\r\n      <thead>\r\n        <tr>\r\n          <th>Rodzaj<\/th>\r\n          <th>Minimalna d\u0142ugo\u015b\u0107<\/th>\r\n          <th>Maksymalna d\u0142ugo\u015b\u0107<\/th>\r\n          <th>Uwagi<\/th>\r\n        <\/tr>\r\n      <\/thead>\r\n      <tbody>\r\n        <tr><th>AM50<\/th><td>80 cm<\/td><td>600 cm<\/td><td>Progi cenowe od 100 cm<\/td><\/tr>\r\n        <tr><th>AM50 bateryjny<\/th><td>80 cm<\/td><td>600 cm<\/td><td>Progi cenowe od 100 cm<\/td><\/tr>\r\n        <tr><th>AM75 Wi-Fi \/ 5W<\/th><td>80 cm<\/td><td>1200 cm<\/td><td>Progi cenowe od 100 cm<\/td><\/tr>\r\n        <tr><th>AM75 Zigbee<\/th><td>80 cm<\/td><td>1200 cm<\/td><td>Progi cenowe od 100 cm<\/td><\/tr>\r\n      <\/tbody>\r\n    <\/table>\r\n\r\n    <div class=\"cc-limits-note\">\r\n      Dla d\u0142ugo\u015bci 80\u2013100 cm kalkulacja jest liczona jak dla 100 cm.\r\n    <\/div>\r\n  <\/div>\r\n\r\n<\/section>\r\n\r\n<style>\r\n  .cc-price-section{max-width:980px;margin:26px auto;padding:0 12px;}\r\n  .cc-price-title{margin:0 0 8px 0;font-size:18px;line-height:1.25;}\r\n  .cc-price-title--sm{margin-top:18px;font-size:16px;}\r\n  .cc-price-sub{margin:0 0 12px 0;font-size:13px;line-height:1.35;color:#555;}\r\n\r\n  .cc-table-note,.cc-limits-note{\r\n    margin-top:10px;font-size:12px;line-height:1.35;color:#333;\r\n    padding:10px 12px;border-radius:12px;\r\n    border:1px solid rgba(0,0,0,.08);background:#fff;\r\n  }\r\n\r\n  \/* ===== DESKTOP ===== *\/\r\n  .cc-table--desktop{position:relative;}\r\n  .cc-table-scroll{\r\n    overflow-x:auto;-webkit-overflow-scrolling:touch;\r\n    border:1px solid rgba(0,0,0,.08);border-radius:14px;background:#fff;\r\n  }\r\n\r\n  .cc-pricetable{\r\n    border-collapse:separate;border-spacing:0;\r\n    min-width:980px;width:100%;\r\n    font-size:12px;line-height:1.25;\r\n  }\r\n\r\n  .cc-pricetable th,.cc-pricetable td{\r\n    padding:10px 10px;text-align:center;white-space:nowrap;\r\n    border-bottom:1px solid rgba(0,0,0,.06);\r\n    border-right:1px solid rgba(0,0,0,.06);\r\n  }\r\n\r\n  \/* ===== STICKY: bez prze\u015bwit\u00f3w + poprawny naro\u017cnik ===== *\/\r\n  .cc-pricetable thead th{\r\n    position:sticky;top:0;z-index:3;\r\n    background:#FFF4CD;            \/* pe\u0142ne t\u0142o (bez rgba) *\/\r\n    font-weight:900;\r\n  }\r\n\r\n  .cc-pricetable tbody th{\r\n    position:sticky;left:0;z-index:5;\r\n    text-align:left;font-weight:900;\r\n    background:#FAFAFA;            \/* pe\u0142ne t\u0142o (bez rgba) *\/\r\n    box-shadow: 10px 0 18px rgba(0,0,0,.06);\r\n    background-clip: padding-box;\r\n  }\r\n\r\n  .cc-pricetable thead th:first-child{\r\n    position:sticky;top:0;left:0;\r\n    z-index:7;                     \/* najwy\u017cej *\/\r\n    background:#FFF4CD;            \/* pe\u0142ne t\u0142o *\/\r\n    box-shadow: 10px 0 18px rgba(0,0,0,.06);\r\n    background-clip: padding-box;\r\n    text-align:left;\r\n  }\r\n\r\n  .cc-pricetable td.cc-na{color:#999;background:rgba(0,0,0,.015);}\r\n\r\n  \/* klikane ceny *\/\r\n  .cc-pricetable td[data-price]{\r\n    cursor:pointer;\r\n    transition: background-color .12s ease, box-shadow .12s ease, transform .05s ease;\r\n  }\r\n  .cc-pricetable td[data-price]:active{transform:translateY(1px);}\r\n\r\n  \/* zaznaczenia (wisienka) *\/\r\n  .cc-pricetable.is-picked td,\r\n  .cc-pricetable.is-picked th{transition: background-color .12s ease, box-shadow .12s ease;}\r\n  .cc-pricetable .cc-hl-row td,\r\n  .cc-pricetable .cc-hl-row th{background: rgba(255, 244, 205, .38);}\r\n  .cc-pricetable .cc-hl-col{background: rgba(0, 82, 204, .06);}\r\n  .cc-pricetable .cc-hl-cell{\r\n    background: rgba(34,139,34,.10) !important;\r\n    box-shadow: inset 0 0 0 2px rgba(34,139,34,.28);\r\n  }\r\n\r\n  \/* tooltip *\/\r\n  .cc-tip{\r\n    position:absolute;\r\n    display:none;\r\n    z-index:50;\r\n    max-width:260px;\r\n    padding:10px 12px;\r\n    border-radius:12px;\r\n    border:1px solid rgba(0,0,0,.10);\r\n    background:#fff;\r\n    box-shadow:0 14px 40px rgba(0,0,0,.16);\r\n    font-size:12px;line-height:1.3;color:#111;\r\n  }\r\n  .cc-tip strong{font-weight:900;}\r\n  .cc-tip small{font-size:11px;opacity:.82;}\r\n  .cc-tip::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    left:18px;\r\n    top:100%;\r\n    border:8px solid transparent;\r\n    border-top-color:#fff;\r\n    filter: drop-shadow(0 2px 1px rgba(0,0,0,.08));\r\n  }\r\n\r\n  \/* ===== MOBILE ===== *\/\r\n  .cc-table--mobile{display:none;}\r\n\r\n  .cc-mobile-head{display:flex;gap:10px;align-items:flex-end;justify-content:space-between;margin:10px 0;}\r\n  .cc-mobile-field{flex:1;min-width:0;text-align:left;}\r\n  .cc-mobile-field span{display:block;font-size:12px;color:#555;margin-bottom:6px;}\r\n  .cc-mobile-select,.cc-mobile-input{\r\n    width:100%;padding:11px 12px;border:1px solid rgba(0,0,0,.14);\r\n    border-radius:12px;background:#fff;font-weight:800;outline:none;\r\n  }\r\n  .cc-mobile-select:focus,.cc-mobile-input:focus{\r\n    border-color: rgba(184,137,45,.85);\r\n    box-shadow: 0 0 0 3px rgba(184,137,45,.18);\r\n    background-color: rgba(255, 244, 205, .55);\r\n  }\r\n  .cc-mobile-chip{\r\n    flex:0 0 auto;padding:10px 10px;border-radius:999px;\r\n    border:1px solid rgba(0,0,0,.10);background:rgba(0,0,0,.02);\r\n    font-size:12px;font-weight:900;color:#333;white-space:nowrap;\r\n  }\r\n  .cc-mobile-quick{margin:10px 0 12px 0;display:grid;gap:10px;}\r\n  .cc-mobile-result{\r\n    border:1px solid rgba(34,139,34,.22);\r\n    background:rgba(34,139,34,.08);\r\n    border-radius:14px;\r\n    padding:12px 12px;\r\n    text-align:left;\r\n  }\r\n  .cc-mobile-result.is-error{border-color: rgba(176,0,32,.25);background: rgba(176,0,32,.08);}\r\n  .cc-mr-title{font-weight:900;margin-bottom:6px;}\r\n  .cc-mr-line{font-size:12px;color:#333;margin-bottom:6px;}\r\n  .cc-mr-price{font-weight:900;font-size:18px;color:#1f7a2e;margin-bottom:4px;}\r\n  .cc-mobile-result.is-error .cc-mr-price{color:#b00020;}\r\n  .cc-mr-price small{font-size:12px;font-weight:800;opacity:.85;margin-left:6px;}\r\n  .cc-mr-hint{font-size:12px;color:#333;opacity:.9;}\r\n\r\n  .cc-mobile-tablewrap{border:1px solid rgba(0,0,0,.08);border-radius:14px;overflow:hidden;background:#fff;}\r\n  .cc-mobile-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;line-height:1.25;}\r\n  .cc-mobile-table thead th{\r\n    background:#FFF4CD;\r\n    font-weight:900;text-align:left;padding:12px 12px;border-bottom:1px solid rgba(0,0,0,.06);\r\n  }\r\n  .cc-mobile-table thead th:last-child{text-align:right;}\r\n  .cc-mobile-table tbody td{padding:12px 12px;border-bottom:1px solid rgba(0,0,0,.06);}\r\n  .cc-mobile-table tbody tr:last-child td{border-bottom:none;}\r\n  .cc-mobile-len{font-weight:800;color:#222;}\r\n  .cc-mobile-price{text-align:right;font-weight:900;color:#1f7a2e;}\r\n  .cc-mobile-price small{font-size:11px;font-weight:800;opacity:.8;margin-left:4px;}\r\n  .cc-mobile-na{text-align:right;color:#999;font-weight:800;}\r\n\r\n  \/* ===== Limity ===== *\/\r\n  .cc-limits{border:1px solid rgba(0,0,0,.08);border-radius:14px;background:#fff;padding:10px 12px;}\r\n  .cc-limitstable{width:100%;border-collapse:separate;border-spacing:0;font-size:12px;line-height:1.35;}\r\n  .cc-limitstable th,.cc-limitstable td{padding:10px 10px;border-bottom:1px solid rgba(0,0,0,.06);text-align:left;vertical-align:top;}\r\n  .cc-limitstable thead th{font-weight:900;background:#FFF4CD;}\r\n  .cc-limitstable tbody th{font-weight:900;}\r\n  .cc-limitstable tr:last-child th,.cc-limitstable tr:last-child td{border-bottom:none;}\r\n\r\n  \/* Prze\u0142\u0105czanie desktop\/mobile *\/\r\n  @media (max-width: 860px){\r\n    .cc-table--desktop{display:none;}\r\n    .cc-table--mobile{display:block;}\r\n    .cc-price-section{max-width:640px;}\r\n  }\r\n<\/style>\r\n\r\n<script>\r\n(() => {\r\n  const PRICES = {\r\n    AM50: {100:973,150:1042,200:1111,250:1180,300:1249,350:1317,400:1386,450:1453,500:1522,550:1591,600:1659},\r\n    AM50_BAT: {100:1192,150:1252,200:1312,250:1373,300:1443,350:1493,400:1553,450:1614,500:1674,550:1734,600:1795},\r\n    AM75_WIFI: {100:1068,150:1137,200:1205,250:1274,300:1343,350:1412,400:1481,450:1547,500:1616,550:1685,600:1754,650:1823,700:1892,750:1961,800:2030,850:2098,900:2165,950:2234,1000:2303,1050:2371,1100:2440,1150:2509,1200:2578},\r\n    AM75_ZIGBEE: {100:1117,150:1186,200:1255,250:1323,300:1392,350:1461,400:1530,450:1597,500:1665,550:1734,600:1803,650:1872,700:1941,750:2010,800:2079,850:2148,900:2214,950:2283,1000:2352,1050:2421,1100:2490,1150:2558,1200:2627}\r\n  };\r\n\r\n  const MAX_FOR = { AM50:600, AM50_BAT:600, AM75_WIFI:1200, AM75_ZIGBEE:1200 };\r\n\r\n  const ORDER = [100,150,200,250,300,350,400,450,500,550,600,650,700,750,800,850,900,950,1000,1050,1100,1150,1200];\r\n  const MIN_LEN = 80;\r\n  const MAX_LEN = 1200;\r\n\r\n  const $ = (sel, root=document) => root.querySelector(sel);\r\n\r\n  function fmtInt(n){ return String(n).replace(\/\\B(?=(\\d{3})+(?!\\d))\/g, ' '); }\r\n  function ceilToBracket(v, brackets){ for (const b of brackets){ if (v <= b) return b; } return null; }\r\n\r\n  \/* ========= MOBILE ========= *\/\r\n  function renderMobileTable(type){\r\n    const table = $('[data-cc-mobile-table]');\r\n    const maxEl = $('[data-cc-mobile-max]');\r\n    if (!table) return;\r\n\r\n    const tbody = table.querySelector('tbody');\r\n    if (!tbody) return;\r\n\r\n    const max = MAX_FOR[type] ?? null;\r\n    if (maxEl) maxEl.textContent = max ? `Max: ${max} cm` : 'Max: \u2014';\r\n\r\n    const prices = PRICES[type] || {};\r\n    tbody.innerHTML = '';\r\n\r\n    for (const len of ORDER){\r\n      if (max && len > max) continue;\r\n\r\n      const price = prices[len];\r\n      const tr = document.createElement('tr');\r\n\r\n      const tdLen = document.createElement('td');\r\n      tdLen.className = 'cc-mobile-len';\r\n      tdLen.textContent = `${len} cm`;\r\n\r\n      const tdPrice = document.createElement('td');\r\n      if (Number.isFinite(price)){\r\n        tdPrice.className = 'cc-mobile-price';\r\n        tdPrice.innerHTML = `${fmtInt(price)} <small>z\u0142<\/small>`;\r\n      } else {\r\n        tdPrice.className = 'cc-mobile-na';\r\n        tdPrice.textContent = '\u2014';\r\n      }\r\n\r\n      tr.appendChild(tdLen);\r\n      tr.appendChild(tdPrice);\r\n      tbody.appendChild(tr);\r\n    }\r\n  }\r\n\r\n  function renderMobileQuick(type, lenRaw){\r\n    const box = $('[data-cc-mobile-result]');\r\n    const bracketEl = $('[data-cc-mobile-bracket]');\r\n    const priceEl = $('[data-cc-mobile-price]');\r\n    const hintEl = $('[data-cc-mobile-hint]');\r\n    if (!box || !bracketEl || !priceEl || !hintEl) return;\r\n\r\n    const maxT = MAX_FOR[type] ?? null;\r\n    const prices = PRICES[type] || {};\r\n    box.classList.remove('is-error');\r\n\r\n    const len = Number.parseFloat(lenRaw);\r\n\r\n    if (!Number.isFinite(len) || String(lenRaw).trim() === ''){\r\n      bracketEl.textContent = '\u2014';\r\n      priceEl.innerHTML = '\u2014';\r\n      hintEl.textContent = 'Wpisz d\u0142ugo\u015b\u0107, a poka\u017c\u0119 pr\u00f3g i cen\u0119.';\r\n      return;\r\n    }\r\n\r\n    if (len < MIN_LEN){\r\n      box.classList.add('is-error');\r\n      bracketEl.textContent = '\u2014';\r\n      priceEl.innerHTML = '\u2014';\r\n      hintEl.textContent = `Minimalna d\u0142ugo\u015b\u0107 to ${MIN_LEN} cm.`;\r\n      return;\r\n    }\r\n\r\n    if (len > MAX_LEN){\r\n      box.classList.add('is-error');\r\n      bracketEl.textContent = '\u2014';\r\n      priceEl.innerHTML = '\u2014';\r\n      hintEl.textContent = `Maksymalna d\u0142ugo\u015b\u0107 to ${MAX_LEN} cm.`;\r\n      return;\r\n    }\r\n\r\n    const use = Math.max(len, 100);\r\n    const bracket = ceilToBracket(use, ORDER);\r\n\r\n    if (!bracket){\r\n      box.classList.add('is-error');\r\n      bracketEl.textContent = '\u2014';\r\n      priceEl.innerHTML = '\u2014';\r\n      hintEl.textContent = 'Nie uda\u0142o si\u0119 dobra\u0107 progu d\u0142ugo\u015bci.';\r\n      return;\r\n    }\r\n\r\n    if (maxT && bracket > maxT){\r\n      box.classList.add('is-error');\r\n      bracketEl.textContent = `Pr\u00f3g: ${bracket} cm`;\r\n      priceEl.innerHTML = '\u2014';\r\n      hintEl.textContent = `Osi\u0105gni\u0119to maksymaln\u0105 d\u0142ugo\u015b\u0107 dla tego rodzaju (max: ${maxT} cm).`;\r\n      return;\r\n    }\r\n\r\n    const price = prices[bracket];\r\n    if (!Number.isFinite(price)){\r\n      box.classList.add('is-error');\r\n      bracketEl.textContent = `Pr\u00f3g: ${bracket} cm`;\r\n      priceEl.innerHTML = '\u2014';\r\n      hintEl.textContent = 'Brak ceny w tabeli dla tego progu.';\r\n      return;\r\n    }\r\n\r\n    bracketEl.textContent = `Dla ${Math.round(len)} cm obowi\u0105zuje pr\u00f3g ${bracket} cm`;\r\n    priceEl.innerHTML = `${fmtInt(price)} <small>z\u0142<\/small>`;\r\n    hintEl.textContent = (len <= 100)\r\n      ? 'D\u0142ugo\u015b\u0107 80\u2013100 cm liczymy jak 100 cm.'\r\n      : 'Cena dobrana wed\u0142ug najbli\u017cszego wy\u017cszego progu.';\r\n  }\r\n\r\n  function bootMobile(){\r\n    const sel = $('[data-cc-mobile-select]');\r\n    const inp = $('[data-cc-mobile-len]');\r\n    if (!sel) return;\r\n\r\n    const sync = () => {\r\n      const type = sel.value;\r\n      renderMobileTable(type);\r\n      renderMobileQuick(type, inp ? inp.value : '');\r\n    };\r\n\r\n    sync();\r\n    sel.addEventListener('change', sync);\r\n    if (inp){\r\n      inp.addEventListener('input', sync);\r\n      inp.addEventListener('change', sync);\r\n      inp.addEventListener('keyup', sync);\r\n    }\r\n  }\r\n\r\n  \/* ========= DESKTOP \"wisienka\" ========= *\/\r\n  function clearDesktopPick(table, tip){\r\n    if (!table) return;\r\n    table.classList.remove('is-picked');\r\n\r\n    table.querySelectorAll('.cc-hl-row').forEach(tr => tr.classList.remove('cc-hl-row'));\r\n    table.querySelectorAll('.cc-hl-col').forEach(cell => cell.classList.remove('cc-hl-col'));\r\n    table.querySelectorAll('.cc-hl-cell').forEach(cell => cell.classList.remove('cc-hl-cell'));\r\n\r\n    if (tip){\r\n      tip.style.display = 'none';\r\n      tip.setAttribute('aria-hidden','true');\r\n      tip.textContent = '';\r\n    }\r\n  }\r\n\r\n  function positionTip(tip, cell, container){\r\n    if (!tip || !cell || !container) return;\r\n\r\n    const cRect = container.getBoundingClientRect();\r\n    const r = cell.getBoundingClientRect();\r\n\r\n    tip.style.display = 'block';\r\n    tip.style.left = '0px';\r\n    tip.style.top = '0px';\r\n\r\n    const tRect = tip.getBoundingClientRect();\r\n    const tW = tRect.width;\r\n    const tH = tRect.height;\r\n\r\n    let left = (r.left - cRect.left) + Math.min(16, Math.max(8, r.width * 0.2));\r\n    let top  = (r.top  - cRect.top) - (tH + 10);\r\n\r\n    if (top < 6){\r\n      top = (r.bottom - cRect.top) + 10;\r\n      tip.classList.add('cc-tip--bottom');\r\n    } else {\r\n      tip.classList.remove('cc-tip--bottom');\r\n    }\r\n\r\n    const maxLeft = container.clientWidth - tW - 8;\r\n    left = Math.max(8, Math.min(left, maxLeft));\r\n\r\n    tip.style.left = `${left}px`;\r\n    tip.style.top  = `${top}px`;\r\n    tip.setAttribute('aria-hidden','false');\r\n  }\r\n\r\n  function bootDesktopPick(){\r\n    const table = $('[data-cc-desktop-table]');\r\n    if (!table) return;\r\n\r\n    const wrap = table.closest('.cc-table--desktop');\r\n    const scroll = table.closest('.cc-table-scroll');\r\n    const tip = $('[data-cc-tip]');\r\n\r\n    const handlePick = (cell) => {\r\n      const tr = cell.closest('tr');\r\n      if (!tr) return;\r\n\r\n      const label = tr.getAttribute('data-label') || 'Karnisz';\r\n      const col = cell.getAttribute('data-col') || '';\r\n      const price = Number.parseInt(cell.getAttribute('data-price') || '', 10);\r\n\r\n      clearDesktopPick(table, tip);\r\n      table.classList.add('is-picked');\r\n\r\n      tr.classList.add('cc-hl-row');\r\n      table.querySelectorAll(`[data-col=\"${col}\"]`).forEach(el => el.classList.add('cc-hl-col'));\r\n      cell.classList.add('cc-hl-cell');\r\n\r\n      if (tip && Number.isFinite(price)){\r\n        tip.innerHTML = `<strong>${label}<\/strong><br><small>Pr\u00f3g ${col} cm<\/small><br><strong>${fmtInt(price)} z\u0142<\/strong>`;\r\n        positionTip(tip, cell, wrap);\r\n      }\r\n    };\r\n\r\n    table.addEventListener('click', (e) => {\r\n      const cell = e.target && e.target.closest ? e.target.closest('td[data-price]') : null;\r\n      if (!cell) return;\r\n      e.preventDefault();\r\n      handlePick(cell);\r\n    });\r\n\r\n    if (scroll && tip){\r\n      scroll.addEventListener('scroll', () => {\r\n        const picked = table.querySelector('td.cc-hl-cell');\r\n        if (picked && tip.style.display === 'block') positionTip(tip, picked, wrap);\r\n      }, { passive:true });\r\n    }\r\n\r\n    document.addEventListener('click', (e) => {\r\n      if (!wrap.contains(e.target)) clearDesktopPick(table, tip);\r\n    });\r\n\r\n    document.addEventListener('keydown', (e) => {\r\n      if (e.key === 'Escape') clearDesktopPick(table, tip);\r\n    });\r\n\r\n    window.addEventListener('resize', () => {\r\n      const picked = table.querySelector('td.cc-hl-cell');\r\n      if (picked && tip && tip.style.display === 'block') positionTip(tip, picked, wrap);\r\n    }, { passive:true });\r\n  }\r\n\r\n  const styleFix = document.createElement('style');\r\n  styleFix.textContent = `\r\n    .cc-tip.cc-tip--bottom::after{\r\n      top:auto !important;\r\n      bottom:100% !important;\r\n      border-top-color: transparent !important;\r\n      border-bottom-color:#fff !important;\r\n    }\r\n  `;\r\n  document.head.appendChild(styleFix);\r\n\r\n  bootMobile();\r\n  bootDesktopPick();\r\n  document.addEventListener('DOMContentLoaded', () => { bootMobile(); bootDesktopPick(); });\r\n})();\r\n<\/script>\n<!-- \/end HFCM by 99 Robots -->\n\n\n\n<!-- HFCM by 99 Robots - Snippet # 9: giecie film -->\n<section class=\"az-video-feature\" aria-label=\"Karnisze elektryczne gi\u0119te oraz systemy do skos\u00f3w \u0141\u00f3d\u017a\">\r\n  <style>\r\n    .az-video-feature{\r\n      --az-bg:#faf8f4;\r\n      --az-card:#ffffff;\r\n      --az-text:#1f1f1f;\r\n      --az-muted:#6f6a63;\r\n      --az-line:#e7ded2;\r\n      --az-gold:#b99a5f;\r\n      --az-gold-soft:#f3eadb;\r\n      --az-dark:#1d1d1d;\r\n      font-family:inherit;\r\n      color:var(--az-text);\r\n      margin:28px auto;\r\n      padding:clamp(18px,3vw,34px);\r\n      border:1px solid var(--az-line);\r\n      border-radius:24px;\r\n      background:\r\n        radial-gradient(circle at 12% 10%, rgba(185,154,95,.16), transparent 34%),\r\n        radial-gradient(circle at 88% 82%, rgba(185,154,95,.12), transparent 36%),\r\n        linear-gradient(180deg,#fff 0%,var(--az-bg) 100%);\r\n      overflow:hidden;\r\n      box-shadow:0 16px 42px rgba(31,26,19,.06);\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .az-video-feature *{\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .az-video-feature__grid{\r\n      display:grid;\r\n      grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);\r\n      gap:clamp(18px,3vw,30px);\r\n      align-items:center;\r\n    }\r\n\r\n    .az-video-feature__media{\r\n      position:relative;\r\n      border-radius:22px;\r\n      padding:12px;\r\n      border:1px solid rgba(185,154,95,.32);\r\n      background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(243,234,219,.72));\r\n      box-shadow:0 18px 40px rgba(31,26,19,.10);\r\n      overflow:hidden;\r\n    }\r\n\r\n    .az-video-feature__media:before{\r\n      content:\"\";\r\n      position:absolute;\r\n      inset:-40%;\r\n      background:\r\n        radial-gradient(circle at 25% 25%, rgba(185,154,95,.22), transparent 34%),\r\n        radial-gradient(circle at 75% 65%, rgba(255,255,255,.72), transparent 36%);\r\n      filter:blur(12px);\r\n      opacity:.85;\r\n      pointer-events:none;\r\n    }\r\n\r\n    .az-video-feature__frame{\r\n      position:relative;\r\n      z-index:1;\r\n      width:100%;\r\n      aspect-ratio:16\/9;\r\n      border-radius:16px;\r\n      overflow:hidden;\r\n      background:#111;\r\n      box-shadow:0 10px 28px rgba(0,0,0,.16);\r\n    }\r\n\r\n    .az-video-feature__frame iframe{\r\n      position:absolute;\r\n      inset:0;\r\n      width:100%;\r\n      height:100%;\r\n      border:0;\r\n    }\r\n\r\n    .az-video-feature__content{\r\n      padding:4px 2px;\r\n    }\r\n\r\n    .az-video-feature__kicker{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      gap:8px;\r\n      padding:7px 13px;\r\n      border:1px solid var(--az-line);\r\n      border-radius:999px;\r\n      background:#fff;\r\n      color:var(--az-muted);\r\n      font-size:12px;\r\n      letter-spacing:.08em;\r\n      text-transform:uppercase;\r\n      margin:0 0 14px;\r\n      font-weight:700;\r\n    }\r\n\r\n    .az-video-feature__kicker:before{\r\n      content:\"\";\r\n      width:7px;\r\n      height:7px;\r\n      border-radius:50%;\r\n      background:var(--az-gold);\r\n      box-shadow:0 0 0 5px var(--az-gold-soft);\r\n      flex:0 0 auto;\r\n    }\r\n\r\n    .az-video-feature h2{\r\n      margin:0 0 14px;\r\n      font-size:clamp(24px,3vw,36px);\r\n      line-height:1.12;\r\n      letter-spacing:-.035em;\r\n      font-weight:800;\r\n      color:var(--az-dark);\r\n    }\r\n\r\n    .az-video-feature__lead{\r\n      margin:0 0 12px;\r\n      color:var(--az-muted);\r\n      font-size:16px;\r\n      line-height:1.75;\r\n    }\r\n\r\n    .az-video-feature__lead strong{\r\n      color:var(--az-text);\r\n      font-weight:800;\r\n    }\r\n\r\n    .az-video-feature__tags{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:8px;\r\n      margin:18px 0 0;\r\n    }\r\n\r\n    .az-video-feature__tag{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      padding:8px 12px;\r\n      border-radius:999px;\r\n      border:1px solid rgba(185,154,95,.34);\r\n      background:linear-gradient(135deg,#fff,var(--az-gold-soft));\r\n      color:#4b4032;\r\n      font-size:13px;\r\n      font-weight:800;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .az-video-feature__cta{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:10px;\r\n      margin-top:20px;\r\n    }\r\n\r\n    .az-video-feature__button{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      min-height:44px;\r\n      padding:0 18px;\r\n      border-radius:999px;\r\n      background:linear-gradient(135deg,#d7bd7c,#a8823c);\r\n      color:#1d1d1d !important;\r\n      text-decoration:none !important;\r\n      font-weight:800;\r\n      box-shadow:0 10px 24px rgba(0,0,0,.14);\r\n      transition:transform .18s ease, box-shadow .18s ease;\r\n    }\r\n\r\n    .az-video-feature__button:hover{\r\n      transform:translateY(-1px);\r\n      box-shadow:0 14px 30px rgba(0,0,0,.18);\r\n    }\r\n\r\n    .az-video-feature__button--dark{\r\n      background:#111;\r\n      color:#fff !important;\r\n    }\r\n\r\n    @media (max-width:900px){\r\n      .az-video-feature__grid{\r\n        grid-template-columns:1fr;\r\n      }\r\n\r\n      .az-video-feature__media{\r\n        order:1;\r\n      }\r\n\r\n      .az-video-feature__content{\r\n        order:2;\r\n        text-align:center;\r\n      }\r\n\r\n      .az-video-feature__kicker{\r\n        justify-content:center;\r\n      }\r\n\r\n      .az-video-feature__tags,\r\n      .az-video-feature__cta{\r\n        justify-content:center;\r\n      }\r\n    }\r\n\r\n    @media (max-width:560px){\r\n      .az-video-feature{\r\n        border-radius:18px;\r\n        padding:18px;\r\n      }\r\n\r\n      .az-video-feature__media{\r\n        padding:8px;\r\n        border-radius:18px;\r\n      }\r\n\r\n      .az-video-feature__frame{\r\n        border-radius:13px;\r\n      }\r\n\r\n      .az-video-feature__tag{\r\n        width:100%;\r\n      }\r\n\r\n      .az-video-feature__button{\r\n        width:100%;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"az-video-feature__grid\">\r\n\r\n    <div class=\"az-video-feature__media\">\r\n      <div class=\"az-video-feature__frame\">\r\n        <iframe\r\n          src=\"https:\/\/www.youtube.com\/embed\/txYSV221p38\"\r\n          title=\"Karnisze elektryczne gi\u0119te oraz karnisze do skos\u00f3w \u0141\u00f3d\u017a\"\r\n          loading=\"lazy\"\r\n          allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n          referrerpolicy=\"strict-origin-when-cross-origin\"\r\n          allowfullscreen>\r\n        <\/iframe>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"az-video-feature__content\">\r\n      <div class=\"az-video-feature__kicker\">Rozwi\u0105zania specjalne \u2022 \u0141\u00f3d\u017a<\/div>\r\n\r\n      <h2>Karnisz elektryczny dopasowany do \u0142uku, naro\u017cnika i skosu<\/h2>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Nie ka\u017cde wn\u0119trze pozwala na zastosowanie klasycznej, prostej szyny. Du\u017ce przeszklenia naro\u017cne, wykusze, sufity ze skosem oraz zabudowy z maskownic\u0105 wymagaj\u0105 rozwi\u0105zania przygotowanego pod konkretny uk\u0142ad okna i przestrze\u0144, w kt\u00f3rej b\u0119d\u0105 pracowa\u0142y zas\u0142ony.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Przy odpowiednich projektach wykonujemy <strong>gi\u0119cie karnisza elektrycznego o promieniu oko\u0142o 22 cm<\/strong>. Mniejszy \u0142uk pozwala lepiej wykorzysta\u0107 miejsce przy \u015bcianie lub suficie i u\u0142atwia wykonanie estetycznej realizacji tam, gdzie szerokie gi\u0119cie mog\u0142oby kolidowa\u0107 z zabudow\u0105 albo niepotrzebnie odsun\u0105\u0107 tkanin\u0119 od okna.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Przy karniszach do skos\u00f3w i zakr\u0119t\u00f3w wa\u017cna jest ca\u0142a koncepcja, nie tylko sama szyna. Analizujemy kierunek ruchu zas\u0142ony, miejsce odk\u0142adania materia\u0142u, po\u0142o\u017cenie nap\u0119du oraz spos\u00f3b sterowania. Dzi\u0119ki temu system mo\u017ce pracowa\u0107 wygodnie i wygl\u0105da\u0107 elegancko tak\u017ce w nietypowych domach, apartamentach oraz wn\u0119trzach projektowanych indywidualnie w \u0141odzi i okolicach.\r\n      <\/p>\r\n\r\n      <div class=\"az-video-feature__tags\" aria-label=\"Najwa\u017cniejsze mo\u017cliwo\u015bci systemu\">\r\n        <span class=\"az-video-feature__tag\">\u0141uk od 22 cm<\/span>\r\n        <span class=\"az-video-feature__tag\">Okna naro\u017cne<\/span>\r\n        <span class=\"az-video-feature__tag\">Systemy do skos\u00f3w<\/span>\r\n        <span class=\"az-video-feature__tag\">Zabudowy sufitowe<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"az-video-feature__cta\">\r\n        <a class=\"az-video-feature__button az-video-feature__button--dark\" href=\"tel:+48667057777\">Wyceny: +48 667 057 777<\/a>\r\n        <a class=\"az-video-feature__button\" href=\"mailto:kontakt@karniszelodz.pl\">kontakt@karniszelodz.pl<\/a>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\n<!-- \/end HFCM by 99 Robots -->\n\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" style=\"margin-top:var(--wp--preset--spacing--50);margin-right:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);margin-left:var(--wp--preset--spacing--50);font-size:20px\"><strong>Producent karniszy elektrycznych! Karnisze dost\u0119pne od r\u0119ki.<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"margin-top:var(--wp--preset--spacing--50);margin-right:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);margin-left:var(--wp--preset--spacing--50);letter-spacing:1px\">Dlaczego karnisz na wymiar mo\u017cesz odebra\u0107 tak szybko? Poniewa\u017c dzia\u0142amy jako producent i korzystamy z w\u0142asnego zaplecza produkcyjnego oraz sprawdzonych komponent\u00f3w. Nie zamawiasz przypadkowego zestawu z magazynu, tylko system przygotowany pod konkretn\u0105 d\u0142ugo\u015b\u0107 i konfiguracj\u0119. Kliknij przycisk poni\u017cej i przejd\u017a do HOMESTEAD. Kupujesz karnisze elektryczne i bateryjne bezpo\u015brednio ze \u017ar\u00f3d\u0142a, z jasn\u0105 specyfikacj\u0105 i 5-letni\u0105 gwarancj\u0105.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" style=\"margin-top:var(--wp--preset--spacing--50);margin-right:var(--wp--preset--spacing--50);margin-bottom:var(--wp--preset--spacing--50);margin-left:var(--wp--preset--spacing--50);font-size:20px\"><strong>Czy wy\u017csza cena zawsze oznacza lepszy karnisz?<\/strong><\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"margin-top:0;margin-right:var(--wp--preset--spacing--40);margin-bottom:0;margin-left:var(--wp--preset--spacing--40);font-size:17px;letter-spacing:1px;line-height:1.5\">Nie zawsze. Najwa\u017cniejsze jest to, aby wiedzie\u0107, za co faktycznie si\u0119 p\u0142aci. Widzimy, \u017ce klienci cz\u0119sto por\u00f3wnuj\u0105 ceny karniszy, ale trudno im zestawi\u0107 parametry, silniki, jako\u015b\u0107 szyn, spos\u00f3b pakowania i realny zakres obs\u0142ugi. Naszym zdaniem dobra cena powinna by\u0107 uczciwie uzasadniona: jako\u015bci\u0105 nap\u0119du, solidn\u0105 szyn\u0105, precyzyjnym wykonaniem, gwarancj\u0105 i wsparciem po zakupie.<br><strong>Dlatego warto sprawdzi\u0107 opisy produkt\u00f3w, szczeg\u00f3\u0142y techniczne, opinie i nasze realizacje.<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" src=\"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze-1024x602.webp\" alt=\"Karnisze elektryczne na wymiar \u0141\u00f3d\u017a\" class=\"wp-image-375\" style=\"width:657px;height:auto\"\/><\/figure>\n<\/div>\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-a7365460 wp-block-buttons-is-layout-flex\" style=\"padding-right:var(--wp--preset--spacing--50);padding-left:var(--wp--preset--spacing--50)\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/okarnisze.pl\/karnisz-elektryczny-am50-bezprzewodowy-akumulatorowy-od-100-do-600-cm\"><span style=\"text-decoration: underline;\">24 GODZINY !<\/span> TO CZAS REALIZACJI KARNISZY ELEKTRYCZNYCH <span style=\"text-decoration: underline;\">NA WYMIAR<\/span>.<\/a><\/div>\n<\/div>\n\n\n<!-- HFCM by 99 Robots - Snippet # 10: programowanie film -->\n<section class=\"az-video-feature\" aria-label=\"Sterowanie karniszem elektrycznym pilotem i aplikacj\u0105 \u0141\u00f3d\u017a\">\r\n  <style>\r\n    .az-video-feature{\r\n      --az-bg:#faf8f4;\r\n      --az-card:#ffffff;\r\n      --az-text:#1f1f1f;\r\n      --az-muted:#6f6a63;\r\n      --az-line:#e7ded2;\r\n      --az-gold:#b99a5f;\r\n      --az-gold-soft:#f3eadb;\r\n      --az-dark:#1d1d1d;\r\n      font-family:inherit;\r\n      color:var(--az-text);\r\n      margin:28px auto;\r\n      padding:clamp(18px,3vw,34px);\r\n      border:1px solid var(--az-line);\r\n      border-radius:24px;\r\n      background:\r\n        radial-gradient(circle at 12% 10%, rgba(185,154,95,.16), transparent 34%),\r\n        radial-gradient(circle at 88% 82%, rgba(185,154,95,.12), transparent 36%),\r\n        linear-gradient(180deg,#fff 0%,var(--az-bg) 100%);\r\n      overflow:hidden;\r\n      box-shadow:0 16px 42px rgba(31,26,19,.06);\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .az-video-feature *{\r\n      box-sizing:border-box;\r\n    }\r\n\r\n    .az-video-feature__grid{\r\n      display:grid;\r\n      grid-template-columns:minmax(0,1.08fr) minmax(320px,.92fr);\r\n      gap:clamp(18px,3vw,30px);\r\n      align-items:center;\r\n    }\r\n\r\n    .az-video-feature__media{\r\n      position:relative;\r\n      border-radius:22px;\r\n      padding:12px;\r\n      border:1px solid rgba(185,154,95,.32);\r\n      background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(243,234,219,.72));\r\n      box-shadow:0 18px 40px rgba(31,26,19,.10);\r\n      overflow:hidden;\r\n    }\r\n\r\n    .az-video-feature__media:before{\r\n      content:\"\";\r\n      position:absolute;\r\n      inset:-40%;\r\n      background:\r\n        radial-gradient(circle at 25% 25%, rgba(185,154,95,.22), transparent 34%),\r\n        radial-gradient(circle at 75% 65%, rgba(255,255,255,.72), transparent 36%);\r\n      filter:blur(12px);\r\n      opacity:.85;\r\n      pointer-events:none;\r\n    }\r\n\r\n    .az-video-feature__frame{\r\n      position:relative;\r\n      z-index:1;\r\n      width:100%;\r\n      aspect-ratio:16\/9;\r\n      border-radius:16px;\r\n      overflow:hidden;\r\n      background:#111;\r\n      box-shadow:0 10px 28px rgba(0,0,0,.16);\r\n    }\r\n\r\n    .az-video-feature__frame iframe{\r\n      position:absolute;\r\n      inset:0;\r\n      width:100%;\r\n      height:100%;\r\n      border:0;\r\n    }\r\n\r\n    .az-video-feature__content{\r\n      padding:4px 2px;\r\n    }\r\n\r\n    .az-video-feature__kicker{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      gap:8px;\r\n      padding:7px 13px;\r\n      border:1px solid var(--az-line);\r\n      border-radius:999px;\r\n      background:#fff;\r\n      color:var(--az-muted);\r\n      font-size:12px;\r\n      letter-spacing:.08em;\r\n      text-transform:uppercase;\r\n      margin:0 0 14px;\r\n      font-weight:700;\r\n    }\r\n\r\n    .az-video-feature__kicker:before{\r\n      content:\"\";\r\n      width:7px;\r\n      height:7px;\r\n      border-radius:50%;\r\n      background:var(--az-gold);\r\n      box-shadow:0 0 0 5px var(--az-gold-soft);\r\n      flex:0 0 auto;\r\n    }\r\n\r\n    .az-video-feature h2{\r\n      margin:0 0 14px;\r\n      font-size:clamp(24px,3vw,36px);\r\n      line-height:1.12;\r\n      letter-spacing:-.035em;\r\n      font-weight:800;\r\n      color:var(--az-dark);\r\n    }\r\n\r\n    .az-video-feature__lead{\r\n      margin:0 0 12px;\r\n      color:var(--az-muted);\r\n      font-size:16px;\r\n      line-height:1.75;\r\n    }\r\n\r\n    .az-video-feature__lead strong{\r\n      color:var(--az-text);\r\n      font-weight:800;\r\n    }\r\n\r\n    .az-video-feature__tags{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:8px;\r\n      margin:18px 0 0;\r\n    }\r\n\r\n    .az-video-feature__tag{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      padding:8px 12px;\r\n      border-radius:999px;\r\n      border:1px solid rgba(185,154,95,.34);\r\n      background:linear-gradient(135deg,#fff,var(--az-gold-soft));\r\n      color:#4b4032;\r\n      font-size:13px;\r\n      font-weight:800;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    .az-video-feature__cta{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:10px;\r\n      margin-top:20px;\r\n    }\r\n\r\n    .az-video-feature__button{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      min-height:44px;\r\n      padding:0 18px;\r\n      border-radius:999px;\r\n      background:linear-gradient(135deg,#d7bd7c,#a8823c);\r\n      color:#1d1d1d !important;\r\n      text-decoration:none !important;\r\n      font-weight:800;\r\n      box-shadow:0 10px 24px rgba(0,0,0,.14);\r\n      transition:transform .18s ease, box-shadow .18s ease;\r\n    }\r\n\r\n    .az-video-feature__button:hover{\r\n      transform:translateY(-1px);\r\n      box-shadow:0 14px 30px rgba(0,0,0,.18);\r\n    }\r\n\r\n    .az-video-feature__button--dark{\r\n      background:#111;\r\n      color:#fff !important;\r\n    }\r\n\r\n    @media (max-width:900px){\r\n      .az-video-feature__grid{\r\n        grid-template-columns:1fr;\r\n      }\r\n\r\n      .az-video-feature__media{\r\n        order:1;\r\n      }\r\n\r\n      .az-video-feature__content{\r\n        order:2;\r\n        text-align:center;\r\n      }\r\n\r\n      .az-video-feature__kicker{\r\n        justify-content:center;\r\n      }\r\n\r\n      .az-video-feature__tags,\r\n      .az-video-feature__cta{\r\n        justify-content:center;\r\n      }\r\n    }\r\n\r\n    @media (max-width:560px){\r\n      .az-video-feature{\r\n        border-radius:18px;\r\n        padding:18px;\r\n      }\r\n\r\n      .az-video-feature__media{\r\n        padding:8px;\r\n        border-radius:18px;\r\n      }\r\n\r\n      .az-video-feature__frame{\r\n        border-radius:13px;\r\n      }\r\n\r\n      .az-video-feature__tag{\r\n        width:100%;\r\n      }\r\n\r\n      .az-video-feature__button{\r\n        width:100%;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"az-video-feature__grid\">\r\n\r\n    <div class=\"az-video-feature__media\">\r\n      <div class=\"az-video-feature__frame\">\r\n        <iframe\r\n          src=\"https:\/\/www.youtube.com\/embed\/NVoX5DvRFio\"\r\n          title=\"Sterowanie karniszem elektrycznym pilotem i aplikacj\u0105 \u2014 \u0141\u00f3d\u017a\"\r\n          loading=\"lazy\"\r\n          allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n          referrerpolicy=\"strict-origin-when-cross-origin\"\r\n          allowfullscreen>\r\n        <\/iframe>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"az-video-feature__content\">\r\n      <div class=\"az-video-feature__kicker\">Sterowanie zas\u0142onami \u2022 \u0141\u00f3d\u017a<\/div>\r\n\r\n      <h2>Karnisz elektryczny, kt\u00f3ry dzia\u0142a tak, jak potrzebujesz<\/h2>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Wygoda karnisza elektrycznego zaczyna si\u0119 od prawid\u0142owego ustawienia systemu. W materiale pokazujemy, jak przypisa\u0107 <strong>pilot do nap\u0119du<\/strong>, wybra\u0107 odpowiedni kana\u0142 i sprawdzi\u0107, czy zas\u0142ony poruszaj\u0105 si\u0119 we w\u0142a\u015bciw\u0105 stron\u0119. To najwa\u017cniejsze czynno\u015bci, dzi\u0119ki kt\u00f3rym z karnisza mo\u017cna komfortowo korzysta\u0107 od pierwszego dnia.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Pokazujemy r\u00f3wnie\u017c, jak rozszerzy\u0107 sterowanie o aplikacj\u0119 <strong>Tuya<\/strong> lub <strong>Smart Life<\/strong>. Telefon mo\u017ce wtedy s\u0142u\u017cy\u0107 do otwierania i zamykania zas\u0142on, ustawiania ich pozycji, tworzenia harmonogram\u00f3w oraz scen dopasowanych do codziennego rytmu domu \u2014 na przyk\u0142ad wieczornego zas\u0142aniania okien.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Dob\u00f3r nap\u0119du ma znaczenie ju\u017c na etapie zam\u00f3wienia. Model z modu\u0142em <strong>Wi-Fi<\/strong> lub <strong>Zigbee<\/strong> mo\u017ce oferowa\u0107 inne mo\u017cliwo\u015bci ni\u017c wersja obs\u0142ugiwana przez dodatkow\u0105 bramk\u0119. W filmie omawiamy te r\u00f3\u017cnice oraz pokazujemy, co zrobi\u0107, gdy trzeba odwr\u00f3ci\u0107 kierunek ruchu zas\u0142ony albo ponownie zaprogramowa\u0107 system.\r\n      <\/p>\r\n\r\n      <div class=\"az-video-feature__tags\" aria-label=\"Zakres poradnika o karniszach elektrycznych\">\r\n        <span class=\"az-video-feature__tag\">Sterowanie pilotem<\/span>\r\n        <span class=\"az-video-feature__tag\">Aplikacja w telefonie<\/span>\r\n        <span class=\"az-video-feature__tag\">Sceny smart home<\/span>\r\n        <span class=\"az-video-feature__tag\">Dob\u00f3r nap\u0119du<\/span>\r\n      <\/div>\r\n\r\n      <div class=\"az-video-feature__cta\">\r\n        <a class=\"az-video-feature__button az-video-feature__button--dark\" href=\"tel:+48667057777\">Wyceny: +48 667 057 777<\/a>\r\n        <a class=\"az-video-feature__button\" href=\"mailto:kontakt@karniszelodz.pl\">kontakt@karniszelodz.pl<\/a>\r\n      <\/div>\r\n    <\/div>\r\n\r\n  <\/div>\r\n<\/section>\n<!-- \/end HFCM by 99 Robots -->\n\n\n\n<!-- HFCM by 99 Robots - Snippet # 11: blog film skosy -->\n<!-- SEO meta (wklej w SEO\/Yoast) -->\r\n<!-- Meta title: Karnisz elektryczny do okna trapezowego \u0141\u00f3d\u017a | Karnisze \u0141\u00f3d\u017a -->\r\n<!-- Meta description: Wysokie okno trapezowe i zas\u0142ony sterowane elektrycznie. Zobacz rozwi\u0105zanie z karniszem, szyn\u0105 sta\u0142\u0105 i welurem na flexach w \u0141odzi. -->\r\n\r\n<article class=\"sz-post\" aria-label=\"Karnisz elektryczny i zas\u0142ony do wysokiego okna trapezowego \u2014 rozwi\u0105zanie \u0141\u00f3d\u017a\">\r\n  <style>\r\n    :root{ --szGlowCycle: 12s; }\r\n\r\n    .sz-post{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:#111}\r\n    .sz-wrap{max-width:1100px;margin:0 auto;padding:0 14px}\r\n    .sz-kicker{display:inline-block;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:rgba(0,0,0,.56)}\r\n    .sz-h2{margin:18px 0 10px;font-size:22px;line-height:1.2;letter-spacing:-.01em}\r\n    .sz-lead{margin:0;color:rgba(0,0,0,.74);line-height:1.75;font-size:15.5px;max-width:980px}\r\n    .sz-note{margin:10px 0 0;color:rgba(0,0,0,.56);font-size:12.5px;line-height:1.55}\r\n    .sz-p{margin:0 0 10px;color:rgba(0,0,0,.74);line-height:1.75;font-size:15px;max-width:980px}\r\n    .sz-post a{color:#111;text-decoration:underline;text-underline-offset:3px}\r\n\r\n    .sz-panel{\r\n      position:relative;isolation:isolate;\r\n      border:1px solid rgba(0,0,0,.10);\r\n      border-radius:18px;\r\n      background:linear-gradient(180deg, rgba(255,255,255,1), rgba(0,0,0,.012));\r\n      box-shadow:0 10px 26px rgba(0,0,0,.05);\r\n      overflow:hidden;\r\n      margin:14px 0 18px;\r\n    }\r\n    .sz-panel:before{\r\n      content:\"\";position:absolute;inset:-40px;z-index:0;pointer-events:none;\r\n      background:linear-gradient(90deg,\r\n        rgba(181,153,120,.18) 0%,\r\n        rgba(228,213,194,.22) 28%,\r\n        rgba(238,232,221,.26) 52%,\r\n        rgba(190,164,134,.16) 78%,\r\n        rgba(181,153,120,.18) 100%);\r\n      background-size:220% 100%;\r\n      filter:blur(28px) saturate(1.2);\r\n      opacity:.58;\r\n      animation:szGlowDrift var(--szGlowCycle) ease-in-out infinite;\r\n      transform:translate3d(-8%,0,0);\r\n    }\r\n    .sz-panel > *{position:relative;z-index:1}\r\n\r\n    @keyframes szGlowDrift{\r\n      0%{background-position:0% 50%;transform:translate3d(-8%,0,0)}\r\n      50%{background-position:100% 50%;transform:translate3d(8%,0,0)}\r\n      100%{background-position:0% 50%;transform:translate3d(-8%,0,0)}\r\n    }\r\n    @media (prefers-reduced-motion: reduce){\r\n      .sz-panel:before,\r\n      .az-video-card{animation:none !important}\r\n    }\r\n\r\n    .sz-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0}\r\n    .sz-tile{\r\n      border:1px solid rgba(0,0,0,.10);\r\n      border-radius:18px;\r\n      background:rgba(255,255,255,.92);\r\n      box-shadow:0 10px 28px rgba(0,0,0,.06);\r\n      overflow:hidden;\r\n      backdrop-filter:blur(4px);\r\n      min-height:176px;\r\n    }\r\n    .sz-tile__head{\r\n      display:flex;align-items:flex-start;justify-content:space-between;gap:10px;\r\n      padding:14px 14px 10px;\r\n      background:linear-gradient(180deg, rgba(0,0,0,.018), rgba(0,0,0,.006));\r\n      border-bottom:1px solid rgba(0,0,0,.07);\r\n    }\r\n    .sz-tile__title{margin:0;font-size:16px;line-height:1.25;letter-spacing:-.01em}\r\n    .sz-pill{\r\n      display:inline-block;white-space:nowrap;\r\n      font-size:12px;font-weight:900;\r\n      padding:6px 10px;border-radius:999px;\r\n      border:1px solid rgba(184,137,45,.35);\r\n      background:linear-gradient(135deg, rgba(107,78,22,.10) 0%, rgba(217,179,95,.14) 45%, rgba(255,242,184,.18) 100%);\r\n      color:#111;\r\n    }\r\n    .sz-tile__body{padding:12px 14px 14px;color:rgba(0,0,0,.76);line-height:1.75;font-size:14.8px}\r\n    .sz-tile__body p{margin:0 0 10px}\r\n    .sz-tile__body ul{margin:8px 0 0 18px}\r\n    .sz-tile__body li{margin:6px 0}\r\n\r\n    .sz-highlight{\r\n      margin:18px 0;\r\n      padding:18px;\r\n      border-radius:18px;\r\n      border:1px solid rgba(184,137,45,.28);\r\n      background:linear-gradient(135deg, rgba(107,78,22,.08), rgba(255,255,255,.95) 45%, rgba(217,179,95,.12));\r\n      box-shadow:0 10px 28px rgba(0,0,0,.06);\r\n    }\r\n    .sz-highlight .sz-h2{margin-top:0}\r\n\r\n    .sz-spec{list-style:none;margin:10px 0 18px;padding:0;border:1px solid rgba(0,0,0,.08);border-radius:14px;overflow:hidden;background:rgba(255,255,255,.92)}\r\n    .sz-spec li{display:flex;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid rgba(0,0,0,.06);font-size:14px}\r\n    .sz-spec li:last-child{border-bottom:none}\r\n    .sz-strong{font-weight:900;color:#111}\r\n    .sz-muted{color:rgba(0,0,0,.58)}\r\n\r\n    @keyframes azVideoBgFloat{\r\n      0%{ background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n      35%{ background-position:55% 16%, 58% 32%, 68% 68%, 0% 0%; }\r\n      70%{ background-position:100% 28%, 18% 62%, 95% 42%, 0% 0%; }\r\n      100%{ background-position:0% 0%, 100% 0%, 30% 100%, 0% 0%; }\r\n    }\r\n    @keyframes azVideoFloat{\r\n      0%,100%{ transform:translateY(0); }\r\n      50%{ transform:translateY(-3px); }\r\n    }\r\n    .az-video-box{width:100%;margin:22px auto 24px;padding:0;box-sizing:border-box;isolation:isolate}\r\n    .az-video-card{\r\n      max-width:980px;margin:0 auto;padding:14px;border:1px solid rgba(184,137,45,.52);border-radius:22px;\r\n      position:relative;overflow:hidden;isolation:isolate;box-sizing:border-box;\r\n      background:\r\n        radial-gradient(1200px 420px at 18% 12%,rgba(66,133,244,.44) 0%,rgba(66,133,244,.20) 34%,rgba(255,255,255,0) 72%),\r\n        radial-gradient(900px 360px at 86% 22%,rgba(251,188,5,.46) 0%,rgba(251,188,5,.22) 42%,rgba(255,255,255,0) 74%),\r\n        radial-gradient(980px 520px at 58% 92%,rgba(234,67,53,.30) 0%,rgba(52,168,83,.20) 38%,rgba(255,255,255,0) 74%),\r\n        linear-gradient(180deg,rgba(255,255,255,.92) 0%,rgba(255,255,255,.86) 100%);\r\n      background-color:#fff;background-size:230% 230%,250% 250%,240% 240%,100% 100%;\r\n      background-position:0% 0%,100% 0%,30% 100%,0% 0%;\r\n      animation:azVideoBgFloat 4.8s ease-in-out infinite,azVideoFloat 4.2s ease-in-out infinite;\r\n      box-shadow:0 18px 46px rgba(0,0,0,.13),0 0 26px rgba(66,133,244,.14),0 0 24px rgba(251,188,5,.16),0 0 22px rgba(234,67,53,.10),inset 0 0 0 1px rgba(255,255,255,.72);\r\n    }\r\n    .az-video-card::before{\r\n      content:\"\";position:absolute;inset:0;z-index:0;pointer-events:none;border-radius:inherit;\r\n      box-shadow:inset 0 0 0 1px rgba(255,255,255,.78),inset 0 0 34px rgba(255,255,255,.42);\r\n    }\r\n    .az-video-inner{\r\n      position:relative;z-index:1;background:rgba(255,255,255,.86);border:1px solid rgba(0,0,0,.08);\r\n      border-radius:18px;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.10);backdrop-filter:blur(6px);\r\n    }\r\n    .az-video-head{\r\n      padding:14px 16px 12px;text-align:left;border-bottom:1px solid rgba(0,0,0,.08);\r\n      background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(255,255,255,.78));\r\n    }\r\n    .az-video-kicker{\r\n      display:block;margin:0 0 4px;font-size:11px;line-height:1.2;font-weight:900;\r\n      letter-spacing:.16em;text-transform:uppercase;color:rgba(0,0,0,.52);\r\n    }\r\n    .az-video-title{margin:0;font-size:22px;line-height:1.2;font-weight:900;letter-spacing:-.02em;color:#111}\r\n    .az-video-lead{margin:6px 0 0;color:rgba(0,0,0,.70);font-size:14.5px;line-height:1.55}\r\n    .az-video-frame{position:relative;width:100%;aspect-ratio:16 \/ 9;background:#111}\r\n    .az-video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0}\r\n    .az-video-caption{\r\n      margin:0;padding:11px 16px 14px;color:rgba(0,0,0,.68);font-size:13.5px;line-height:1.55;\r\n      background:rgba(255,255,255,.82);border-top:1px solid rgba(0,0,0,.08);\r\n    }\r\n\r\n    .sz-cta{margin:18px 0 10px}\r\n    .sz-ctaGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;align-items:stretch}\r\n    .sz-ctaCard{\r\n      border:1px solid rgba(0,0,0,.10);border-radius:18px;background:#fff;box-shadow:0 10px 28px rgba(0,0,0,.06);\r\n      padding:14px;display:flex;flex-direction:column;min-height:210px;\r\n    }\r\n    .sz-ctaTitle{margin:0 0 6px;font-size:16px;letter-spacing:-.01em}\r\n    .sz-ctaText{margin:0 0 12px;color:rgba(0,0,0,.72);line-height:1.65;font-size:14px}\r\n    .sz-ctaCard .sz-ctaText{flex:1}\r\n    .sz-post .sz-amtu91-btnRow{display:flex !important;flex-direction:column !important;gap:10px !important;margin-top:auto !important;align-items:stretch !important}\r\n    .sz-post a.sz-amtu91-btn,.sz-post a.sz-amtu91-btn:visited{\r\n      display:flex !important;align-items:center !important;justify-content:center !important;width:100% !important;min-height:46px !important;\r\n      padding:12px 14px !important;border-radius:14px !important;text-decoration:none !important;font-weight:900 !important;font-size:13px !important;\r\n      line-height:1.2 !important;text-align:center !important;background:#111 !important;color:#fff !important;border:1px solid rgba(0,0,0,.12) !important;\r\n      box-shadow:0 12px 26px rgba(0,0,0,.10) !important;\r\n    }\r\n    .sz-post a.sz-amtu91-btn.sz-amtu91-btn--ghost,.sz-post a.sz-amtu91-btn.sz-amtu91-btn--ghost:visited{\r\n      background:#fff !important;color:#111 !important;border:1px solid rgba(0,0,0,.16) !important;box-shadow:none !important;\r\n    }\r\n\r\n    .sz-faq{margin:14px 0 26px}\r\n    .sz-faq__item{border:1px solid rgba(0,0,0,.10);border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(0,0,0,.06);overflow:hidden;margin:10px 0}\r\n    .sz-faq__item summary{\r\n      list-style:none;cursor:pointer;padding:14px 46px 14px 14px;font-weight:900;color:#111;position:relative;\r\n      background:linear-gradient(180deg,rgba(0,0,0,.018),rgba(0,0,0,.006));line-height:1.35;user-select:none;\r\n    }\r\n    .sz-faq__item summary::-webkit-details-marker{display:none}\r\n    .sz-faq__item summary:after{\r\n      content:\"\";position:absolute;right:14px;top:50%;width:10px;height:10px;border-right:2px solid rgba(0,0,0,.55);\r\n      border-bottom:2px solid rgba(0,0,0,.55);transform:translateY(-60%) rotate(45deg);transition:transform .18s ease;\r\n    }\r\n    .sz-faq__item[open] summary:after{transform:translateY(-40%) rotate(-135deg)}\r\n    .sz-faq__content{padding:12px 14px 14px;border-top:1px solid rgba(0,0,0,.08);color:rgba(0,0,0,.74);line-height:1.75;background:#fff;font-size:14.5px}\r\n    .sz-faq__item[open] .sz-faq__content{font-style:italic}\r\n\r\n    @media (max-width: 860px){\r\n      .sz-grid{grid-template-columns:1fr}\r\n      .sz-ctaGrid{grid-template-columns:1fr}\r\n      .sz-tile,.sz-ctaCard{min-height:unset}\r\n      .sz-spec li{flex-direction:column}\r\n    }\r\n    @media (max-width:640px){\r\n      .az-video-card{max-width:94%;padding:10px;border-radius:18px}\r\n      .az-video-inner{border-radius:16px}\r\n      .az-video-head{padding:13px 14px 11px;text-align:center}\r\n      .az-video-title{font-size:19px}\r\n      .az-video-lead{font-size:14px}\r\n      .az-video-caption{text-align:center;font-size:13px}\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"sz-wrap\">\r\n\r\n    <header class=\"sz-hero\">\r\n      <span class=\"sz-kicker\">projekt indywidualny \u2022 karnisze elektryczne \u0141\u00f3d\u017a \u2022 zas\u0142ony na wymiar \u0141\u00f3d\u017a \u2022 wysokie okna<\/span>\r\n\r\n      <h2 class=\"sz-h2\">Wysokie okno trapezowe i zas\u0142ony sterowane elektrycznie \u2014 jak zaplanowa\u0107 sp\u00f3jn\u0105 dekoracj\u0119?<\/h2>\r\n\r\n      <p class=\"sz-lead\">\r\n        Okno o nietypowym kszta\u0142cie daje wn\u0119trzu wyj\u0105tkowy charakter, ale stawia wi\u0119ksze wymagania przed dekoracj\u0105 okienn\u0105. Przy trapezie i wysokim przeszkleniu liczy si\u0119 ka\u017cdy szczeg\u00f3\u0142: k\u0105t skosu, ci\u0119\u017car tkaniny, miejsce zsuwania zas\u0142on oraz to, czy obs\u0142uga b\u0119dzie wygodna ka\u017cdego dnia. W prezentowanym rozwi\u0105zaniu zastosowano nap\u0119d elektryczny, uzupe\u0142niaj\u0105c\u0105 szyn\u0119 sta\u0142\u0105 oraz mi\u0119kkie zas\u0142ony welurowe zawieszone na flexach.\r\n      <\/p>\r\n\r\n      <p class=\"sz-note\">\r\n        Taki uk\u0142ad pozwala zachowa\u0107 lekko\u015b\u0107 aran\u017cacji, a jednocze\u015bnie zapewni\u0107 komfort przy zas\u0142onach, kt\u00f3rych r\u0119czna obs\u0142uga by\u0142aby mniej praktyczna.\r\n      <\/p>\r\n    <\/header>\r\n\r\n    <section class=\"az-video-box\" aria-label=\"Film o karniszu elektrycznym do wysokiego okna trapezowego\">\r\n      <div class=\"az-video-card\">\r\n        <div class=\"az-video-inner\">\r\n          <div class=\"az-video-head\">\r\n            <span class=\"az-video-kicker\">Inspiracja do nietypowego okna<\/span>\r\n            <h2 class=\"az-video-title\">Karnisz z nap\u0119dem i welurowe zas\u0142ony przy przeszkleniu trapezowym<\/h2>\r\n            <p class=\"az-video-lead\">\r\n              Film pokazuje, jak indywidualnie zaprojektowany uk\u0142ad szyn i tkanin mo\u017ce uporz\u0105dkowa\u0107 wysokie okno o nieklasycznej linii.\r\n            <\/p>\r\n          <\/div>\r\n\r\n          <div class=\"az-video-frame\">\r\n            <iframe\r\n              src=\"https:\/\/www.youtube.com\/embed\/N6LH0wYgdTM\"\r\n              title=\"Karnisz elektryczny do okna trapezowego i zas\u0142ony na wymiar \u2014 \u0141\u00f3d\u017a\"\r\n              loading=\"lazy\"\r\n              allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\r\n              referrerpolicy=\"strict-origin-when-cross-origin\"\r\n              allowfullscreen>\r\n            <\/iframe>\r\n          <\/div>\r\n\r\n          <p class=\"az-video-caption\">\r\n            Rozwi\u0105zanie do wysokiego przeszklenia: wygodne sterowanie zas\u0142on\u0105 na karniszu elektrycznym, dyskretna szyna uzupe\u0142niaj\u0105ca oraz welur u\u0142o\u017cony w regularne fa\u0142dy.\r\n          <\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"sz-panel\" aria-label=\"Elementy projektu do okna trapezowego\">\r\n      <div style=\"padding:14px\">\r\n        <div class=\"sz-grid\">\r\n\r\n          <div class=\"sz-tile\">\r\n            <div class=\"sz-tile__head\">\r\n              <h3 class=\"sz-tile__title\">Okno, kt\u00f3re wyznacza projekt<\/h3>\r\n              <span class=\"sz-pill\">FORMA<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Przy przeszkleniu zako\u0144czonym skosem dekoracja musi uwzgl\u0119dnia\u0107 architektur\u0119, a nie pr\u00f3bowa\u0107 jej ukrywa\u0107 standardowym rozwi\u0105zaniem.<\/p>\r\n              <ul>\r\n                <li>nietypowa g\u00f3rna linia okna,<\/li>\r\n                <li>du\u017ca wysoko\u015b\u0107 pomieszczenia,<\/li>\r\n                <li>konieczno\u015b\u0107 dok\u0142adnego rozplanowania tkaniny.<\/li>\r\n              <\/ul>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"sz-tile\">\r\n            <div class=\"sz-tile__head\">\r\n              <h3 class=\"sz-tile__title\">Sterowanie bez wysi\u0142ku<\/h3>\r\n              <span class=\"sz-pill\">AUTOMATYKA<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Nap\u0119d elektryczny pozwala przesuwa\u0107 wysok\u0105 zas\u0142on\u0119 w kontrolowany spos\u00f3b, bez r\u0119cznego poprawiania materia\u0142u i bez naruszania fa\u0142d.<\/p>\r\n              <ul>\r\n                <li>wygodna obs\u0142uga du\u017cej tkaniny,<\/li>\r\n                <li>regularny ruch zas\u0142ony,<\/li>\r\n                <li>komfort u\u017cytkowania wn\u0119trza.<\/li>\r\n              <\/ul>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"sz-tile\">\r\n            <div class=\"sz-tile__head\">\r\n              <h3 class=\"sz-tile__title\">Dwa systemy w jednej aran\u017cacji<\/h3>\r\n              <span class=\"sz-pill\">R\u00d3WNOWAGA<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Szyna sta\u0142a mo\u017ce uzupe\u0142nia\u0107 karnisz elektryczny, gdy kszta\u0142t okna wymaga odmiennego prowadzenia zas\u0142on po obu stronach.<\/p>\r\n              <ul>\r\n                <li>uk\u0142ad dopasowany do bry\u0142y okna,<\/li>\r\n                <li>estetyczne odk\u0142adanie materia\u0142u,<\/li>\r\n                <li>rozwi\u0105zanie bez zb\u0119dnej komplikacji.<\/li>\r\n              <\/ul>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"sz-tile\">\r\n            <div class=\"sz-tile__head\">\r\n              <h3 class=\"sz-tile__title\">Welur i zawieszenie na flexach<\/h3>\r\n              <span class=\"sz-pill\">TKANINA<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Mi\u0119kki welur buduje elegancki klimat, a flexy pomagaj\u0105 utrzyma\u0107 wyra\u017any rytm fa\u0142d i dopracowa\u0107 d\u0142ugo\u015b\u0107 zas\u0142ony przy pod\u0142odze.<\/p>\r\n              <ul>\r\n                <li>g\u0142\u0119bia i mi\u0119kko\u015b\u0107 materia\u0142u,<\/li>\r\n                <li>regularne u\u0142o\u017cenie dekoracji,<\/li>\r\n                <li>mo\u017cliwo\u015b\u0107 drobnej regulacji wysoko\u015bci.<\/li>\r\n              <\/ul>\r\n            <\/div>\r\n          <\/div>\r\n\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section aria-label=\"Artyku\u0142 o karniszach elektrycznych i zas\u0142onach do okien trapezowych\">\r\n\r\n      <h2 class=\"sz-h2\">Nietypowe przeszklenie wymaga my\u015blenia o ca\u0142ym wn\u0119trzu<\/h2>\r\n      <p class=\"sz-p\">\r\n        Okna trapezowe cz\u0119sto spotyka si\u0119 w nowoczesnych domach, salonach z wysokim sufitem oraz pomieszczeniach, w kt\u00f3rych dach i przeszklenie tworz\u0105 jedn\u0105 wyrazist\u0105 lini\u0119. Taki element architektury wygl\u0105da imponuj\u0105co, ale nie daje swobody stosowania przypadkowych rozwi\u0105za\u0144.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Zas\u0142ona powinna podkre\u015bli\u0107 wysoko\u015b\u0107 i kszta\u0142t okna, a jednocze\u015bnie zapewni\u0107 prywatno\u015b\u0107 oraz kontrol\u0119 \u015bwiat\u0142a. Dlatego przed wyborem karnisza trzeba sprawdzi\u0107, jak materia\u0142 b\u0119dzie si\u0119 porusza\u0142, gdzie od\u0142o\u017cy si\u0119 po rozsuni\u0119ciu i czy dost\u0119pna przestrze\u0144 pozwala na estetyczny monta\u017c ca\u0142ego systemu.\r\n      <\/p>\r\n\r\n      <section class=\"sz-highlight\" aria-label=\"Rekomendacja przy oknie trapezowym\">\r\n        <h2 class=\"sz-h2\">Najpierw funkcja, p\u00f3\u017aniej tkanina<\/h2>\r\n        <p class=\"sz-p\">\r\n          Przy wysokim oknie warto rozpocz\u0105\u0107 projekt od okre\u015blenia, w jaki spos\u00f3b zas\u0142ony maj\u0105 by\u0107 u\u017cywane: czy b\u0119d\u0105 regularnie zamykane, czy maj\u0105 zaciemnia\u0107 pomieszczenie, czy zale\u017cy nam na sterowaniu elektrycznym. Dopiero wtedy mo\u017cna \u015bwiadomie dobra\u0107 szyn\u0119, nap\u0119d, materia\u0142 i zawieszenie.\r\n        <\/p>\r\n      <\/section>\r\n\r\n      <h2 class=\"sz-h2\">Karnisze elektryczne \u0141\u00f3d\u017a \u2014 wygoda szczeg\u00f3lnie widoczna przy du\u017cych zas\u0142onach<\/h2>\r\n      <p class=\"sz-p\">\r\n        Przy standardowym oknie r\u0119czne przesuwanie lekkiej zas\u0142ony zwykle nie jest problemem. Sytuacja zmienia si\u0119 przy wysokiej dekoracji wykonanej z ci\u0119\u017cszego materia\u0142u. Du\u017ca powierzchnia tkaniny wymaga wi\u0119kszej si\u0142y, a cz\u0119ste r\u0119czne poprawianie mo\u017ce wp\u0142ywa\u0107 na jej u\u0142o\u017cenie.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Karnisz elektryczny pozwala uruchomi\u0107 ruch zas\u0142on w wygodny i powtarzalny spos\u00f3b. To rozwi\u0105zanie dobrze pasuje do salon\u00f3w z du\u017cym przeszkleniem, wn\u0119trz z antresol\u0105, reprezentacyjnych jadalni oraz sypialni, w kt\u00f3rych zas\u0142ony maj\u0105 codziennie zapewnia\u0107 prywatno\u015b\u0107 lub zaciemnienie.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Dlaczego jedna szyna nie zawsze jest najlepszym wyborem?<\/h2>\r\n      <p class=\"sz-p\">\r\n        W klasycznym wn\u0119trzu mo\u017cna \u0142atwo zastosowa\u0107 symetryczny uk\u0142ad prowadnic. Przy oknie trapezowym taki schemat nie zawsze b\u0119dzie korzystny. Skos mo\u017ce powodowa\u0107, \u017ce po obu stronach okna zas\u0142ona potrzebuje zupe\u0142nie innego miejsca do pracy lub odk\u0142adania.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Z tego powodu po\u0142\u0105czenie karnisza elektrycznego i szyny sta\u0142ej mo\u017ce by\u0107 rozwi\u0105zaniem bardziej naturalnym ni\u017c pr\u00f3ba zastosowania identycznego systemu wsz\u0119dzie. Wa\u017cny jest finalny wygl\u0105d ca\u0142ej dekoracji, a nie techniczna symetria, kt\u00f3rej p\u00f3\u017aniej nie wida\u0107 w codziennym u\u017cytkowaniu.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Welurowe zas\u0142ony na flexach \u2014 dekoracja, kt\u00f3ra pasuje do du\u017cej wysoko\u015bci<\/h2>\r\n      <p class=\"sz-p\">\r\n        Przy wysokich oknach dobrze prezentuj\u0105 si\u0119 materia\u0142y, kt\u00f3re tworz\u0105 wyrazist\u0105, ale spokojn\u0105 powierzchni\u0119. Welur wprowadza mi\u0119kko\u015b\u0107, g\u0142\u0119bi\u0119 koloru i elegancj\u0119, dlatego mo\u017ce pi\u0119knie wyko\u0144czy\u0107 nowoczesne przeszklenie.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Zawieszenie na flexach pomaga u\u0142o\u017cy\u0107 materia\u0142 w czytelne, r\u00f3wne fale. Dodatkowym atutem jest mo\u017cliwo\u015b\u0107 subtelnej korekty wysoko\u015bci, co przy zas\u0142onie dochodz\u0105cej do pod\u0142ogi ma du\u017ce znaczenie dla estetyki ca\u0142ego wn\u0119trza.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Pomiar i przygotowanie projektu \u2014 tu decyduje si\u0119 efekt<\/h2>\r\n      <p class=\"sz-p\">\r\n        Przy wysokim oknie nie wystarczy poda\u0107 d\u0142ugo\u015bci karnisza. Projekt wymaga sprawdzenia wysoko\u015bci, przebiegu skosu, miejsca na nap\u0119d, sposobu pracy tkaniny oraz tego, czy zas\u0142ona po zsuni\u0119ciu nie zabierze zbyt du\u017cej cz\u0119\u015bci przeszklenia.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Dobrze wykonany pomiar pozwala unikn\u0105\u0107 p\u00f3\u017aniejszych poprawek i dobra\u0107 system, kt\u00f3ry b\u0119dzie wygl\u0105da\u0142 lekko, pracowa\u0142 p\u0142ynnie i odpowiada\u0142 codziennym potrzebom domownik\u00f3w. W\u0142a\u015bnie dlatego przy nietypowych oknach rozwi\u0105zania szyte na wymiar daj\u0105 znacznie lepszy efekt ni\u017c gotowe elementy dobierane bez projektu.\r\n      <\/p>\r\n\r\n      <ul class=\"sz-spec\" aria-label=\"Najwa\u017cniejsze informacje o rozwi\u0105zaniu\">\r\n        <li><span><span class=\"sz-strong\">Typ przeszklenia<\/span> <span class=\"sz-muted\">architektura z wysokim skosem<\/span><\/span><span class=\"sz-strong\">okno trapezowe<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Obs\u0142uga zas\u0142ony<\/span> <span class=\"sz-muted\">komfort i regularny ruch<\/span><\/span><span class=\"sz-strong\">nap\u0119d elektryczny<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Element uzupe\u0142niaj\u0105cy<\/span> <span class=\"sz-muted\">prowadzenie dopasowane do uk\u0142adu<\/span><\/span><span class=\"sz-strong\">szyna sta\u0142a<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Rodzaj materia\u0142u<\/span> <span class=\"sz-muted\">elegancja i mi\u0119kko\u015b\u0107<\/span><\/span><span class=\"sz-strong\">welur<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Spos\u00f3b zawieszenia<\/span> <span class=\"sz-muted\">fa\u0142dy i korekta d\u0142ugo\u015bci<\/span><\/span><span class=\"sz-strong\">flexy<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Spos\u00f3b doboru<\/span> <span class=\"sz-muted\">bez gotowych kompromis\u00f3w<\/span><\/span><span class=\"sz-strong\">indywidualny projekt<\/span><\/li>\r\n      <\/ul>\r\n\r\n      <h2 class=\"sz-h2\">Zas\u0142ony na wymiar \u0141\u00f3d\u017a \u2014 dla jakich okien s\u0105 szczeg\u00f3lnie polecane?<\/h2>\r\n      <p class=\"sz-p\">\r\n        Zas\u0142ony wykonywane indywidualnie warto rozwa\u017cy\u0107 zawsze wtedy, gdy przeszklenie odbiega od klasycznego prostok\u0105ta, jest wysokie, znajduje si\u0119 pod skosem albo wymaga nap\u0119du elektrycznego. W takim wn\u0119trzu licz\u0105 si\u0119 proporcje i dopracowanie element\u00f3w, kt\u00f3rych gotowa zas\u0142ona nie uwzgl\u0119dni.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Projekt na wymiar pozwala zaplanowa\u0107 w\u0142a\u015bciw\u0105 ilo\u015b\u0107 tkaniny, typ marszczenia, d\u0142ugo\u015b\u0107 nad pod\u0142og\u0105, kierunek ruchu oraz technik\u0119 sterowania. Dzi\u0119ki temu dekoracja nie tylko zas\u0142ania okno, ale staje si\u0119 sp\u00f3jn\u0105 cz\u0119\u015bci\u0105 wystroju.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Wn\u0119trze z trudnym oknem mo\u017ce by\u0107 wygodne i eleganckie<\/h2>\r\n      <p class=\"sz-p\">\r\n        Trapezowe przeszklenie nie musi oznacza\u0107 rezygnacji z mi\u0119kkich zas\u0142on ani codziennych kompromis\u00f3w w obs\u0142udze. Dobrze dobrany karnisz elektryczny, w\u0142a\u015bciwie zaprojektowana szyna uzupe\u0142niaj\u0105ca oraz tkanina na flexach pozwalaj\u0105 po\u0142\u0105czy\u0107 funkcjonalno\u015b\u0107 z wyra\u017anym, premium efektem.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Je\u017celi planujesz dekoracj\u0119 wysokiego, sko\u015bnego lub nietypowego okna w \u0141odzi albo okolicach, warto rozpocz\u0105\u0107 od rozmowy o uk\u0142adzie wn\u0119trza i sposobie korzystania z zas\u0142on. Dopiero wtedy rozwi\u0105zanie b\u0119dzie naprawd\u0119 dopasowane \u2014 nie tylko wymiarem, ale tak\u017ce stylem i komfortem.\r\n      <\/p>\r\n\r\n    <\/section>\r\n\r\n    <section class=\"sz-cta\" aria-label=\"Kontakt \u2014 karnisze elektryczne i zas\u0142ony na wymiar \u0141\u00f3d\u017a\">\r\n      <div class=\"sz-ctaGrid\">\r\n\r\n        <div class=\"sz-ctaCard\">\r\n          <h3 class=\"sz-ctaTitle\">Okno wysokie, sko\u015bne lub trapezowe?<\/h3>\r\n          <p class=\"sz-ctaText\">\r\n            Om\u00f3wimy kszta\u0142t przeszklenia, spos\u00f3b u\u017cywania zas\u0142on i dobierzemy rozwi\u0105zanie, kt\u00f3re b\u0119dzie wygodne oraz estetyczne.\r\n          <\/p>\r\n          <div class=\"sz-amtu91-btnRow\">\r\n            <a class=\"sz-amtu91-btn\" href=\"tel:+48667057777\">Zadzwo\u0144: +48 667 057 777<\/a>\r\n            <a class=\"sz-amtu91-btn sz-amtu91-btn--ghost\" href=\"mailto:kontakt@karniszelodz.pl\">kontakt@karniszelodz.pl<\/a>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"sz-ctaCard\">\r\n          <h3 class=\"sz-ctaTitle\">Karnisze elektryczne \u0141\u00f3d\u017a<\/h3>\r\n          <p class=\"sz-ctaText\">\r\n            Dobieramy systemy do du\u017cych przeszkle\u0144, wymagaj\u0105cych wn\u0119trz i zas\u0142on, kt\u00f3re maj\u0105 by\u0107 obs\u0142ugiwane komfortowo ka\u017cdego dnia.\r\n          <\/p>\r\n          <div class=\"sz-amtu91-btnRow\">\r\n            <a class=\"sz-amtu91-btn\" href=\"mailto:kontakt@karniszelodz.pl\">Wy\u015blij zdj\u0119cie okna<\/a>\r\n            <a class=\"sz-amtu91-btn sz-amtu91-btn--ghost\" href=\"tel:+48667057777\">Zapytaj o rozwi\u0105zanie<\/a>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"sz-ctaCard\">\r\n          <h3 class=\"sz-ctaTitle\">Zas\u0142ony na wymiar \u0141\u00f3d\u017a<\/h3>\r\n          <p class=\"sz-ctaText\">\r\n            Dobierzemy materia\u0142, spos\u00f3b zawieszenia i uk\u0142ad fa\u0142d tak, aby zas\u0142ony pasowa\u0142y do wysoko\u015bci okna i charakteru wn\u0119trza.\r\n          <\/p>\r\n          <div class=\"sz-amtu91-btnRow\">\r\n            <a class=\"sz-amtu91-btn\" href=\"tel:+48667057777\">Porozmawiajmy o wn\u0119trzu<\/a>\r\n            <a class=\"sz-amtu91-btn sz-amtu91-btn--ghost\" href=\"mailto:kontakt@karniszelodz.pl\">Popro\u015b o wycen\u0119<\/a>\r\n          <\/div>\r\n        <\/div>\r\n\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"sz-faq\" aria-label=\"FAQ \u2014 karnisz elektryczny i zas\u0142ony do okna trapezowego \u0141\u00f3d\u017a\">\r\n      <h2 class=\"sz-h2\">FAQ \u2014 karnisz elektryczny do okna trapezowego i zas\u0142ony na wymiar<\/h2>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy karnisz elektryczny sprawdzi si\u0119 przy bardzo wysokim oknie trapezowym?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak. Wysokie okna s\u0105 jednym z miejsc, w kt\u00f3rych nap\u0119d elektryczny daje najwi\u0119ksz\u0105 wygod\u0119. Przed doborem systemu trzeba jednak sprawdzi\u0107 geometri\u0119 okna, stron\u0119 zsuwania materia\u0142u, miejsce na nap\u0119d oraz wag\u0119 planowanych zas\u0142on.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Dlaczego przy trapezowym oknie mo\u017cna zastosowa\u0107 karnisz i szyn\u0119 sta\u0142\u0105 jednocze\u015bnie?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Poniewa\u017c nietypowa linia okna nie zawsze pozwala uzyska\u0107 najlepszy efekt przy jednym, symetrycznym systemie. Po\u0142\u0105czenie nap\u0119du elektrycznego z szyn\u0105 sta\u0142\u0105 mo\u017ce lepiej dopasowa\u0107 prowadzenie zas\u0142on do kszta\u0142tu \u015bciany i miejsca odk\u0142adania tkaniny.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy ci\u0119\u017csze zas\u0142ony welurowe nadaj\u0105 si\u0119 do karnisza elektrycznego?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak, pod warunkiem prawid\u0142owego dobrania nap\u0119du i ca\u0142ego systemu. Przy welurze nale\u017cy uwzgl\u0119dni\u0107 ci\u0119\u017car materia\u0142u, d\u0142ugo\u015b\u0107 szyny, spos\u00f3b marszczenia i to, jak zas\u0142ona b\u0119dzie pracowa\u0142a po rozsuni\u0119ciu.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Po co stosuje si\u0119 flexy przy zas\u0142onach do wysokich okien?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Flexy pomagaj\u0105 zachowa\u0107 regularne fa\u0142dy i umo\u017cliwiaj\u0105 niewielk\u0105 regulacj\u0119 wysoko\u015bci zas\u0142ony. Przy d\u0142ugiej tkaninie si\u0119gaj\u0105cej pod\u0142ogi taka korekta pozwala dopracowa\u0107 ko\u0144cowy efekt wizualny.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy przygotowujecie karnisze elektryczne i zas\u0142ony na wymiar dla klient\u00f3w z \u0141odzi?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak. Pomagamy w doborze karniszy elektrycznych, szyn oraz zas\u0142on na wymiar do wn\u0119trz w \u0141odzi i okolicach, w tym do wysokich, sko\u015bnych i nietypowych przeszkle\u0144.\r\n        <\/div>\r\n      <\/details>\r\n\r\n    <\/section>\r\n\r\n  <\/div>\r\n<\/article>\n<!-- \/end HFCM by 99 Robots -->\n\n","protected":false},"excerpt":{"rendered":"<p>Producent karniszy elektrycznych! Karnisze dost\u0119pne od r\u0119ki. Dlaczego karnisz na wymiar mo\u017cesz odebra\u0107 tak szybko? Poniewa\u017c dzia\u0142amy jako producent i korzystamy z w\u0142asnego zaplecza produkcyjnego oraz sprawdzonych komponent\u00f3w. Nie zamawiasz przypadkowego zestawu z magazynu, tylko system przygotowany pod konkretn\u0105 d\u0142ugo\u015b\u0107 i konfiguracj\u0119. Kliknij przycisk poni\u017cej i przejd\u017a do HOMESTEAD. Kupujesz karnisze elektryczne i bateryjne bezpo\u015brednio&#8230;<\/p>\n","protected":false},"author":1,"featured_media":36,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"enable","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":true,"_kad_post_classname":"","footnotes":""},"class_list":["post-6","page","type-page","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Karnisze elektryczne \u0141\u00f3d\u017a<\/title>\n<meta name=\"description\" content=\"Karnisze elektryczne w \u0141odzi na wymiar z monta\u017cem. Producent karniszy automatycznych elektrycznych \u0141\u00f3\u017a do zas\u0142on i firan na pilota.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/karniszelodz.pl\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Karnisze elektryczne \u0141\u00f3d\u017a\" \/>\n<meta property=\"og:description\" content=\"Karnisze elektryczne w \u0141odzi na wymiar z monta\u017cem. Producent karniszy automatycznych elektrycznych \u0141\u00f3\u017a do zas\u0142on i firan na pilota.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/karniszelodz.pl\/\" \/>\n<meta property=\"og:site_name\" content=\"Karnisze elektryczne \u0141\u00f3d\u017a\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-29T16:09:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2024\/01\/karnisze-elektryczne.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"450\" \/>\n\t<meta property=\"og:image:height\" content=\"511\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Szacowany czas czytania\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minuty\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/\",\"url\":\"https:\\\/\\\/karniszelodz.pl\\\/\",\"name\":\"Karnisze elektryczne \u0141\u00f3d\u017a\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/karniszelodz.pl\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/karnisze-elektryczne.webp\",\"datePublished\":\"2024-01-05T11:20:07+00:00\",\"dateModified\":\"2026-05-29T16:09:40+00:00\",\"description\":\"Karnisze elektryczne w \u0141odzi na wymiar z monta\u017cem. Producent karniszy automatycznych elektrycznych \u0141\u00f3\u017a do zas\u0142on i firan na pilota.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/karniszelodz.pl\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#primaryimage\",\"url\":\"https:\\\/\\\/karniszelodz.pl\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/karnisze-elektryczne.webp\",\"contentUrl\":\"https:\\\/\\\/karniszelodz.pl\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/karnisze-elektryczne.webp\",\"width\":450,\"height\":511,\"caption\":\"Karnisze elektryczne \u0141\u00f3d\u017a\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/karniszelodz.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Karnisze elektryczne \u0141\u00f3d\u017a\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#website\",\"url\":\"https:\\\/\\\/karniszelodz.pl\\\/\",\"name\":\"Karnisze elektryczne \u0141\u00f3d\u017a\",\"description\":\"Producent karniszy \u0141\u00f3d\u017a\",\"publisher\":{\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/karniszelodz.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#organization\",\"name\":\"Karnisze elektryczne \u0141\u00f3d\u017a\",\"url\":\"https:\\\/\\\/karniszelodz.pl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/karniszelodz.pl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-logo-azhome.webp\",\"contentUrl\":\"https:\\\/\\\/karniszelodz.pl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-logo-azhome.webp\",\"width\":300,\"height\":50,\"caption\":\"Karnisze elektryczne \u0141\u00f3d\u017a\"},\"image\":{\"@id\":\"https:\\\/\\\/karniszelodz.pl\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Karnisze elektryczne \u0141\u00f3d\u017a","description":"Karnisze elektryczne w \u0141odzi na wymiar z monta\u017cem. Producent karniszy automatycznych elektrycznych \u0141\u00f3\u017a do zas\u0142on i firan na pilota.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/karniszelodz.pl\/","og_locale":"pl_PL","og_type":"article","og_title":"Karnisze elektryczne \u0141\u00f3d\u017a","og_description":"Karnisze elektryczne w \u0141odzi na wymiar z monta\u017cem. Producent karniszy automatycznych elektrycznych \u0141\u00f3\u017a do zas\u0142on i firan na pilota.","og_url":"https:\/\/karniszelodz.pl\/","og_site_name":"Karnisze elektryczne \u0141\u00f3d\u017a","article_modified_time":"2026-05-29T16:09:40+00:00","og_image":[{"width":450,"height":511,"url":"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2024\/01\/karnisze-elektryczne.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_misc":{"Szacowany czas czytania":"3 minuty"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/karniszelodz.pl\/","url":"https:\/\/karniszelodz.pl\/","name":"Karnisze elektryczne \u0141\u00f3d\u017a","isPartOf":{"@id":"https:\/\/karniszelodz.pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/karniszelodz.pl\/#primaryimage"},"image":{"@id":"https:\/\/karniszelodz.pl\/#primaryimage"},"thumbnailUrl":"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2024\/01\/karnisze-elektryczne.webp","datePublished":"2024-01-05T11:20:07+00:00","dateModified":"2026-05-29T16:09:40+00:00","description":"Karnisze elektryczne w \u0141odzi na wymiar z monta\u017cem. Producent karniszy automatycznych elektrycznych \u0141\u00f3\u017a do zas\u0142on i firan na pilota.","breadcrumb":{"@id":"https:\/\/karniszelodz.pl\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/karniszelodz.pl\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/karniszelodz.pl\/#primaryimage","url":"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2024\/01\/karnisze-elektryczne.webp","contentUrl":"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2024\/01\/karnisze-elektryczne.webp","width":450,"height":511,"caption":"Karnisze elektryczne \u0141\u00f3d\u017a"},{"@type":"BreadcrumbList","@id":"https:\/\/karniszelodz.pl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/karniszelodz.pl\/"},{"@type":"ListItem","position":2,"name":"Karnisze elektryczne \u0141\u00f3d\u017a"}]},{"@type":"WebSite","@id":"https:\/\/karniszelodz.pl\/#website","url":"https:\/\/karniszelodz.pl\/","name":"Karnisze elektryczne \u0141\u00f3d\u017a","description":"Producent karniszy \u0141\u00f3d\u017a","publisher":{"@id":"https:\/\/karniszelodz.pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/karniszelodz.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/karniszelodz.pl\/#organization","name":"Karnisze elektryczne \u0141\u00f3d\u017a","url":"https:\/\/karniszelodz.pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/karniszelodz.pl\/#\/schema\/logo\/image\/","url":"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2026\/05\/cropped-logo-azhome.webp","contentUrl":"https:\/\/karniszelodz.pl\/wp-content\/uploads\/2026\/05\/cropped-logo-azhome.webp","width":300,"height":50,"caption":"Karnisze elektryczne \u0141\u00f3d\u017a"},"image":{"@id":"https:\/\/karniszelodz.pl\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/comments?post=6"}],"version-history":[{"count":76,"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":226,"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/pages\/6\/revisions\/226"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/media\/36"}],"wp:attachment":[{"href":"https:\/\/karniszelodz.pl\/index.php\/wp-json\/wp\/v2\/media?parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}