{"id":6,"date":"2024-01-10T17:55:18","date_gmt":"2024-01-10T16:55:18","guid":{"rendered":"http:\/\/karniszepoznan.pl\/?page_id=6"},"modified":"2026-05-28T20:19:06","modified_gmt":"2026-05-28T18:19:06","slug":"karnisze-elektryczne-poznan","status":"publish","type":"page","link":"https:\/\/karniszepoznan.pl\/","title":{"rendered":"Karnisze elektryczne Pozna\u0144"},"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-bb8de793cc8235fb4c21ca259d4983ff\" style=\"color:#000000;margin-top:var(--wp--preset--spacing--70)\"><strong>Karnisze elektryczne Pozna\u0144<\/strong><\/h1>\n\n\n\n<p class=\"wp-block-paragraph\" style=\"letter-spacing:1px;line-height:2\">Karnisze elektryczne Pozna\u0144, zapraszamy do odkrycia naszej unikalnej oferty markowych karniszy elektrycznych. Nasze karnisze automatyczne elektryczne i bateryjne s\u0105 dostosowane do nowoczesnych system\u00f3w smart home. Specjalizujemy si\u0119 w produkcji karniszy elektrycznych A-OK, ale oferujemy tak\u017ce karnisze Somfy i Forest. Karnisze elektryczne wykonujemy w wersjach z nap\u0119dem elektrycznym oraz bateryjnym \/ akumulator &#8211; karnisze bezprzewodowe, ze zwijaniem zas\u0142on jednostronnym lub dwustronnym (kurtynowym). Dodatkowo ka\u017cdy karnisz wykonamy dopasowany do zas\u0142on na flexach lub do zas\u0142on wave.<\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-color has-link-color wp-elements-e4004c95994fbcfc00a64480d6a1f191\" style=\"color:#000000;font-size:20px\"><strong>Karnisze na wymiar w Poznaniu<\/strong><\/h2>\n\n\n\n<p class=\"has-text-color has-link-color wp-elements-552105ab295c9be870edd9c06a0442ab wp-block-paragraph\" style=\"color:#000000;font-size:17px;letter-spacing:1px;line-height:2\">M\u00f3wi\u0105c potocznie karnisz elektryczny okre\u015blamy karnisz automatyczny do zas\u0142on lub firanek z silnikiem. Dzi\u0119ki takiemu rozwi\u0105zaniu zyskujesz mo\u017cliwo\u015b\u0107 sterowania zas\u0142onami dzi\u0119ki aplikacji na telefonie lub po prostu pilotem. Nap\u0119dy karniszy mo\u017cesz sparowa\u0107 bezpo\u015brednio z awansowanymi systemami smart home KNX, Grenton, Ampio, Loxone, Fibaro, Tuya. Wszystkie karnisze elektryczne wykonujemy na zam\u00f3wienie, na wymiar z opcjami 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 karnisze elektryczne do wysokich okien. Dzi\u0119ki temu wszystko jest idealnie spasowane.<\/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@karniszepoznan.pl\">kontakt@karniszepoznan.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 # 5: 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 # 4: cena dynamica 50 -->\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 dynamica 75 -->\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 dynamica am50 bat -->\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 411 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=\"411\">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 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 # 11: 2 filmy -->\n<section class=\"kk-video-duo\" aria-label=\"Filmy o karniszach elektrycznych Pozna\u0144\">\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    .kk-video-duo h3{\r\n      color:var(--kk-dark);\r\n    }\r\n\r\n    .kk-video-duo__head h3{\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      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__content 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    }\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 Pozna\u0144<\/div>\r\n    <h3>Zobacz, jak karnisze elektryczne pracuj\u0105 w prawdziwym wn\u0119trzu.<\/h3>\r\n    <p class=\"kk-video-duo__lead\">\r\n      Przed wyborem karnisza warto zobaczy\u0107 nie tylko produkt, ale te\u017c jego prac\u0119 po monta\u017cu. Filmy pokazuj\u0105 p\u0142ynny ruch zas\u0142on, mo\u017cliwo\u015bci sterowania oraz podstawowe zasady konfiguracji systemu do domu, mieszkania lub apartamentu w Poznaniu.\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\">Realizacja<\/div>\r\n        <h3>Karnisz elektryczny i zas\u0142ony w praktyce<\/h3>\r\n        <p class=\"kk-video-duo__text\">\r\n          Na nagraniu mo\u017cesz zobaczy\u0107, jak pracuje karnisz elektryczny po zamontowaniu. Zas\u0142ona przesuwa si\u0119 spokojnie, r\u00f3wno i bez gwa\u0142townych ruch\u00f3w, co ma du\u017ce znaczenie przy szerokich oknach, wysokich przeszkleniach i ci\u0119\u017cszych tkaninach.\r\n        <\/p>\r\n        <p class=\"kk-video-duo__text\">\r\n          Dobrze dobrany system nie powinien zwraca\u0107 na siebie uwagi. Najwa\u017cniejszy jest efekt: wygoda sterowania, estetyczne prowadzenie tkaniny i uporz\u0105dkowana oprawa okna. Karnisz mo\u017ce by\u0107 obs\u0142ugiwany pilotem, aplikacj\u0105 albo po\u0142\u0105czony z automatyk\u0105 smart home.\r\n        <\/p>\r\n        <div class=\"kk-video-duo__tags\" aria-label=\"Tematy filmu\">\r\n          <span class=\"kk-video-duo__tag\">P\u0142ynny ruch<\/span>\r\n          <span class=\"kk-video-duo__tag\">Realizacja wn\u0119trza<\/span>\r\n          <span class=\"kk-video-duo__tag\">Sterowanie zas\u0142onami<\/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 sterowanie\"\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\">Poradnik<\/div>\r\n        <h3>Konfiguracja karnisza A-OK bez zgadywania<\/h3>\r\n        <p class=\"kk-video-duo__text\">\r\n          W poradniku pokazujemy najwa\u017cniejsze ustawienia karnisza elektrycznego A-OK. To pomocne, je\u015bli chcesz lepiej zrozumie\u0107, jak dzia\u0142a pilot, aplikacja, kana\u0142y sterowania oraz podstawowe ustawienia pracy nap\u0119du.\r\n        <\/p>\r\n        <p class=\"kk-video-duo__text\">\r\n          Przed zam\u00f3wieniem warto zwr\u00f3ci\u0107 uwag\u0119 na kilka detali: d\u0142ugo\u015b\u0107 szyny, stron\u0119 silnika, ci\u0119\u017car zas\u0142ony, kierunek rozsuwania, miejsce odk\u0142adania tkaniny i typ sterowania. Dzi\u0119ki temu karnisz jest lepiej dopasowany do konkretnego wn\u0119trza w Poznaniu.\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 \/ aplikacja<\/span>\r\n          <span class=\"kk-video-duo__tag\">Wi-Fi \/ Zigbee<\/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@karniszepoznan.pl\">kontakt@karniszepoznan.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 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@karniszepoznan.pl\" style=\"font-weight:900;text-decoration:underline;\">\r\n    kontakt@karniszepoznan.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\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 nasze karnisze na wymiar mo\u017cesz odebra\u0107 nawet w godzin\u0119? Dlatego \u017ce jeste\u015bmy producentem i posiadamy nowoczesn\u0105 lini\u0119 produkcyjn\u0105 oraz bezpo\u015bredni dost\u0119p do najwy\u017cszej jako\u015bci komponent\u00f3w. Kliknij przycisk poni\u017cej i przejd\u017a do HOMESTEAD. Po prostu kupujesz karnisze elektryczne i bateryjne z pierwszej r\u0119ki. Dlatego te\u017c mo\u017cemy udzieli\u0107 5 letniej gwarancji. Dlatego wiemy co robimy.<\/p>\n\n\n<!-- HFCM by 99 Robots - Snippet # 10: box giecie film -->\n<section class=\"az-video-feature\" aria-label=\"Gi\u0119cie karniszy elektrycznych i karnisze do skos\u00f3w\">\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=\"Gi\u0119cie karniszy elektrycznych i karnisze do skos\u00f3w\"\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\">Karnisze gi\u0119te i do skos\u00f3w<\/div>\r\n\r\n      <h2>Prawie nikt nie ma takiego gi\u0119cia karniszy<\/h2>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Karnisze elektryczne z zakr\u0119tem mo\u017cemy wykona\u0107 z gi\u0119ciem o promieniu <strong>22 cm<\/strong>. To wa\u017cne przy zabudowach sufitowych, wykuszach, naro\u017cnikach i projektach, w kt\u00f3rych standardowy promie\u0144 gi\u0119cia mo\u017ce okaza\u0107 si\u0119 zbyt du\u017cy.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Standardowo promie\u0144 gi\u0119cia wynosi oko\u0142o <strong>30 cm<\/strong>, dlatego przy wymagaj\u0105cych realizacjach ka\u017cdy centymetr ma znaczenie. W naszej ofercie znajdziesz tak\u017ce karnisze elektryczne do skos\u00f3w, kt\u00f3re sprawdzaj\u0105 si\u0119 mi\u0119dzy innymi w domach typu stodo\u0142a, na poddaszach i przy sko\u015bnych przeszkleniach.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Do takich realizacji bardzo dobrze nadaj\u0105 si\u0119 r\u00f3wnie\u017c karnisze elektryczne AM68, kt\u00f3re mo\u017cna wykorzysta\u0107 przy oknach sko\u015bnych oraz trudniejszych uk\u0142adach architektonicznych.\r\n      <\/p>\r\n\r\n      <div class=\"az-video-feature__tags\" aria-label=\"Tematy filmu\">\r\n        <span class=\"az-video-feature__tag\">Promie\u0144 22 cm<\/span>\r\n        <span class=\"az-video-feature__tag\">Karnisze gi\u0119te<\/span>\r\n        <span class=\"az-video-feature__tag\">Karnisze do skos\u00f3w<\/span>\r\n        <span class=\"az-video-feature__tag\">AM68<\/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@karniszepoznan.pl\">kontakt@karniszepoznan.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>Czy wy\u017csza cena jest zasadna?<\/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\">Tak! Pod warunkiem \u017ce wiesz za co p\u0142acisz. Zauwa\u017cyli\u015bmy \u017ce dzi\u015b klientom zale\u017cy na ni\u017cszej cenie ale wybieraj\u0105 produkty dro\u017csze, kt\u00f3re nie s\u0105 lepsze. Prywatnie te\u017c jeste\u015bmy klientami i zauwa\u017cyli\u015bmy \u017ce <strong>wra\u017cenie jako\u015bci produktu, jest podbijana tylko wy\u017csz\u0105 cen\u0105.<\/strong> Uwa\u017camy \u017ce cena naszych karniszy i jest idealnie wypo\u015brodkowana na tle konkurencji i r\u00f3\u017cnych modeli karniszy z silnikiem. Zach\u0119camy!<br><strong>Warto sprawdzi\u0107 nasze opisy produkt\u00f3w, jako\u015b\u0107 i opinie.<\/strong><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"602\" src=\"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze-1024x602.webp\" alt=\"Karnisze elektryczne na wymiar Pozna\u0144\" class=\"wp-image-375\" style=\"width:657px;height:auto\" srcset=\"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze-1024x602.webp 1024w, https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze-300x176.webp 300w, https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze-768x451.webp 768w, https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze.webp 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/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 # 9: box z filmem -->\n<section class=\"az-video-feature\" aria-label=\"Konfiguracja karnisza elektrycznego z pilotem i aplikacj\u0105\">\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=\"Konfiguracja karnisza elektrycznego z pilotem i aplikacj\u0105\"\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\">Poradnik wideo<\/div>\r\n\r\n      <h2>Konfiguracja karnisza z pilotem i aplikacj\u0105<\/h2>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Na filmie pokazujemy, jak przygotowa\u0107 <strong>karnisz elektryczny<\/strong> do pracy z pilotem oraz aplikacj\u0105 Tuya lub Smart Life. Omawiamy parowanie nap\u0119du, wyb\u00f3r odpowiedniego kana\u0142u, pierwsze ustawienia i najcz\u0119stsze sytuacje, kt\u00f3re pojawiaj\u0105 si\u0119 podczas uruchamiania karnisza.\r\n      <\/p>\r\n\r\n      <p class=\"az-video-feature__lead\">\r\n        Wyja\u015bniamy tak\u017ce r\u00f3\u017cnice mi\u0119dzy silnikiem z wbudowanym modu\u0142em Wi-Fi lub Zigbee a wersj\u0105, kt\u00f3ra wymaga bramki. Pokazujemy zmian\u0119 kierunku pracy, ponowne programowanie oraz praktyczne ustawienia potrzebne do wygodnego sterowania zas\u0142onami w domu lub apartamencie.\r\n      <\/p>\r\n\r\n      <div class=\"az-video-feature__tags\" aria-label=\"Tematy filmu\">\r\n        <span class=\"az-video-feature__tag\">Pilot<\/span>\r\n        <span class=\"az-video-feature__tag\">Tuya \/ Smart Life<\/span>\r\n        <span class=\"az-video-feature__tag\">Wi-Fi \/ Zigbee<\/span>\r\n        <span class=\"az-video-feature__tag\">Zmiana kierunku<\/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@karniszepoznan.pl\">kontakt@karniszepoznan.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 # 8: blog do skosow -->\n<!-- SEO meta (wklej w SEO\/Yoast) -->\r\n<!-- Meta title: Karnisz elektryczny do okna trapezowego Pozna\u0144 | Karnisze Pozna\u0144 -->\r\n<!-- Meta description: Nietypowe okno trapezowe, karnisz elektryczny, sta\u0142a szyna i zas\u0142ony welurowe na flexach. Sprawd\u017a realizacj\u0119 karniszy elektrycznych w Poznaniu. -->\r\n\r\n<article class=\"sz-post\" aria-label=\"Karnisz elektryczny i zas\u0142ony do okna trapezowego \u2014 realizacja Pozna\u0144\">\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\">realizacja \u2022 karnisz elektryczny Pozna\u0144 \u2022 zas\u0142ony na wymiar Pozna\u0144 \u2022 okno trapezowe<\/span>\r\n\r\n      <h2 class=\"sz-h2\">Karnisz elektryczny i zas\u0142ony do okna trapezowego \u2014 rozwi\u0105zanie do wymagaj\u0105cego wn\u0119trza<\/h2>\r\n\r\n      <p class=\"sz-lead\">\r\n        Okna trapezowe, wysokie przeszklenia i skosy potrafi\u0105 pi\u0119knie otworzy\u0107 wn\u0119trze, ale jednocze\u015bnie wymagaj\u0105 bardzo przemy\u015blanego systemu zas\u0142on. W takim miejscu liczy si\u0119 nie tylko wygl\u0105d tkaniny, ale te\u017c spos\u00f3b jej prowadzenia, miejsce zatrzymania oraz komfort codziennej obs\u0142ugi.\r\n        W tej realizacji po\u0142\u0105czyli\u015bmy karnisz elektryczny, sta\u0142\u0105 szyn\u0119 oraz zas\u0142ony welurowe na flexach, aby dopasowa\u0107 dekoracj\u0119 okienn\u0105 do nietypowej geometrii okna.\r\n      <\/p>\r\n\r\n      <p class=\"sz-note\">\r\n        Celem by\u0142o stworzenie rozwi\u0105zania, kt\u00f3re wygl\u0105da lekko i elegancko, a jednocze\u015bnie dzia\u0142a praktycznie przy wysokim i niestandardowym przeszkleniu.\r\n      <\/p>\r\n    <\/header>\r\n\r\n    <section class=\"az-video-box\" aria-label=\"Film z realizacji 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\">Zobacz realizacj\u0119<\/span>\r\n            <h2 class=\"az-video-title\">Karnisz elektryczny i zas\u0142ony przy oknie trapezowym<\/h2>\r\n            <p class=\"az-video-lead\">\r\n              Na filmie wida\u0107 uk\u0142ad przygotowany do nietypowego, wysokiego okna: karnisz z nap\u0119dem, szyn\u0119 sta\u0142\u0105 i zas\u0142ony szyte na wymiar.\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 i zas\u0142ony do okna trapezowego\"\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            Przyk\u0142ad rozwi\u0105zania dla trudnego okna: karnisz elektryczny po jednej stronie, szyna sta\u0142a po drugiej oraz zas\u0142ony welurowe na flexach dopasowane do wysoko\u015bci przeszklenia.\r\n          <\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"sz-panel\" aria-label=\"Najwa\u017cniejsze elementy realizacji\">\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\">Trapezowy kszta\u0142t okna<\/h3>\r\n              <span class=\"sz-pill\">WYZWANIE<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Nietypowa linia przeszklenia wymaga\u0142a zaplanowania systemu pod konkretny kszta\u0142t \u015bciany, wysoko\u015b\u0107 okna i spos\u00f3b odk\u0142adania zas\u0142on.<\/p>\r\n              <ul>\r\n                <li>okno wysokie,<\/li>\r\n                <li>g\u00f3rna linia pod skosem,<\/li>\r\n                <li>indywidualny uk\u0142ad 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\">Karnisz elektryczny<\/h3>\r\n              <span class=\"sz-pill\">WYGODA<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Nap\u0119d elektryczny u\u0142atwia obs\u0142ug\u0119 wysokiej zas\u0142ony i pozwala korzysta\u0107 z niej p\u0142ynnie, bez r\u0119cznego przesuwania ci\u0119\u017cszej tkaniny.<\/p>\r\n              <ul>\r\n                <li>komfort sterowania,<\/li>\r\n                <li>p\u0142ynna praca,<\/li>\r\n                <li>lepsza obs\u0142uga du\u017cych okien.<\/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\">Sta\u0142a szyna jako uzupe\u0142nienie<\/h3>\r\n              <span class=\"sz-pill\">DOPASOWANIE<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Po\u0142\u0105czenie karnisza elektrycznego ze sta\u0142\u0105 szyn\u0105 pozwoli\u0142o dopasowa\u0107 ca\u0142o\u015b\u0107 do proporcji wn\u0119trza i rzeczywistego kszta\u0142tu okna.<\/p>\r\n              <ul>\r\n                <li>sp\u00f3jny wygl\u0105d,<\/li>\r\n                <li>lepsze prowadzenie tkaniny,<\/li>\r\n                <li>mniej kompromis\u00f3w technicznych.<\/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 szyty na flexach<\/h3>\r\n              <span class=\"sz-pill\">PREMIUM<\/span>\r\n            <\/div>\r\n            <div class=\"sz-tile__body\">\r\n              <p>Flexy pomagaj\u0105 uzyska\u0107 r\u00f3wne fa\u0142dy, a przy wysokich zas\u0142onach pozwalaj\u0105 tak\u017ce delikatnie skorygowa\u0107 wysoko\u015b\u0107 materia\u0142u nad pod\u0142og\u0105.<\/p>\r\n              <ul>\r\n                <li>eleganckie marszczenie,<\/li>\r\n                <li>regulacja wysoko\u015bci,<\/li>\r\n                <li>mi\u0119kki efekt wizualny.<\/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=\"Opis realizacji\">\r\n\r\n      <h2 class=\"sz-h2\">Dlaczego okno trapezowe wymaga indywidualnego podej\u015bcia?<\/h2>\r\n      <p class=\"sz-p\">\r\n        Przy oknie trapezowym nie wystarczy dobra\u0107 zwyk\u0142ego karnisza wed\u0142ug szeroko\u015bci \u015bciany. Trzeba uwzgl\u0119dni\u0107 wysoko\u015b\u0107, skos, punkt startu i ko\u0144ca zas\u0142ony oraz to, gdzie tkanina ma si\u0119 odk\u0142ada\u0107 po rozsuni\u0119ciu.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Bardzo wa\u017cne jest te\u017c to, aby technika nie zdominowa\u0142a wn\u0119trza. Dobrze dobrana szyna i karnisz powinny pracowa\u0107 dyskretnie, a g\u0142\u00f3wn\u0105 rol\u0119 powinna gra\u0107 tkanina oraz spokojna linia dekoracji okiennej.\r\n      <\/p>\r\n\r\n      <section class=\"sz-highlight\" aria-label=\"Wskaz\u00f3wka\">\r\n        <h2 class=\"sz-h2\">Wskaz\u00f3wka przy nietypowym oknie<\/h2>\r\n        <p class=\"sz-p\">\r\n          Przy wysokich i trapezowych oknach najpierw warto zaplanowa\u0107 spos\u00f3b pracy zas\u0142on, a dopiero p\u00f3\u017aniej wybiera\u0107 konkretny system. Dzi\u0119ki temu \u0142atwiej unikn\u0105\u0107 sytuacji, w kt\u00f3rej karnisz jest zamontowany poprawnie, ale tkanina nie uk\u0142ada si\u0119 tak, jak powinna.\r\n        <\/p>\r\n      <\/section>\r\n\r\n      <h2 class=\"sz-h2\">Karnisz elektryczny Pozna\u0144 \u2014 kiedy ma najwi\u0119kszy sens?<\/h2>\r\n      <p class=\"sz-p\">\r\n        Karnisz elektryczny jest szczeg\u00f3lnie przydatny tam, gdzie zas\u0142ona jest wysoka, szeroka albo wykonana z ci\u0119\u017cszej tkaniny. W takich sytuacjach codzienne r\u0119czne przesuwanie materia\u0142u mo\u017ce by\u0107 niewygodne, a czasem tak\u017ce niekorzystne dla estetyki u\u0142o\u017cenia.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Nap\u0119d pozwala zas\u0142onie porusza\u0107 si\u0119 p\u0142ynnie i powtarzalnie. To wygodne w salonie, sypialni, antresoli lub wysokim holu, gdzie okno jest efektownym elementem architektury, ale wymaga praktycznego sterowania.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Dlaczego uk\u0142ad mieszany bywa lepszy ni\u017c jeden system?<\/h2>\r\n      <p class=\"sz-p\">\r\n        Przy nietypowej geometrii nie zawsze najlepszym rozwi\u0105zaniem jest identyczna szyna po obu stronach. Czasem znacznie lepiej dzia\u0142a po\u0142\u0105czenie karnisza elektrycznego z jednej strony i szyny sta\u0142ej z drugiej.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Taki uk\u0142ad mo\u017cna dopasowa\u0107 do realnych proporcji okna, sposobu parkowania zas\u0142ony i tego, z kt\u00f3rej strony tkanina b\u0119dzie u\u017cywana cz\u0119\u015bciej. Efekt ko\u0144cowy jest wtedy bardziej naturalny i mniej techniczny.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Zas\u0142ony welurowe na flexach przy wysokim oknie<\/h2>\r\n      <p class=\"sz-p\">\r\n        Welur dodaje wn\u0119trzu mi\u0119kko\u015bci i elegancji, ale przy du\u017cej wysoko\u015bci trzeba dobrze zaplanowa\u0107 jego ci\u0119\u017car, marszczenie i prowadzenie. \u0179le dobrana tkanina mo\u017ce wygl\u0105da\u0107 zbyt ci\u0119\u017cko albo \u017ale pracowa\u0107 na szynie.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Flexy pozwalaj\u0105 zachowa\u0107 r\u00f3wne, spokojne fa\u0142dy i daj\u0105 mo\u017cliwo\u015b\u0107 regulacji wysoko\u015bci zas\u0142ony. To wa\u017cne szczeg\u00f3lnie wtedy, gdy tkanina dochodzi blisko pod\u0142ogi, a samo okno ma kilka metr\u00f3w wysoko\u015bci.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Pomiar i monta\u017c przy oknach nietypowych<\/h2>\r\n      <p class=\"sz-p\">\r\n        Przy takim projekcie pomiar jest kluczowy. Trzeba okre\u015bli\u0107 nie tylko d\u0142ugo\u015b\u0107 szyny, ale r\u00f3wnie\u017c stron\u0119 nap\u0119du, spos\u00f3b zsuwania zas\u0142on, miejsce zako\u0144czenia tkaniny i ewentualne ograniczenia wynikaj\u0105ce ze skosu.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Dopiero po takim przygotowaniu mo\u017cna dobra\u0107 tkanin\u0119, spos\u00f3b szycia i rodzaj systemu. Dzi\u0119ki temu karnisz, szyna i zas\u0142ona tworz\u0105 jedn\u0105 sp\u00f3jn\u0105 realizacj\u0119.\r\n      <\/p>\r\n\r\n      <ul class=\"sz-spec\" aria-label=\"Podsumowanie realizacji\">\r\n        <li><span><span class=\"sz-strong\">Typ okna<\/span> <span class=\"sz-muted\">nietypowe przeszklenie<\/span><\/span><span class=\"sz-strong\">okno trapezowe<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Sterowanie<\/span> <span class=\"sz-muted\">komfort obs\u0142ugi<\/span><\/span><span class=\"sz-strong\">karnisz elektryczny<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Uzupe\u0142nienie systemu<\/span> <span class=\"sz-muted\">dopasowanie do kszta\u0142tu<\/span><\/span><span class=\"sz-strong\">szyna sta\u0142a<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Tkanina<\/span> <span class=\"sz-muted\">efekt mi\u0119kki i elegancki<\/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\">r\u00f3wne fa\u0142dy i korekta<\/span><\/span><span class=\"sz-strong\">flexy<\/span><\/li>\r\n        <li><span><span class=\"sz-strong\">Charakter projektu<\/span> <span class=\"sz-muted\">realizacja pod wymiar<\/span><\/span><span class=\"sz-strong\">okno wysokie i niestandardowe<\/span><\/li>\r\n      <\/ul>\r\n\r\n      <h2 class=\"sz-h2\">Zas\u0142ony na wymiar Pozna\u0144 \u2014 kiedy warto wybra\u0107 projekt indywidualny?<\/h2>\r\n      <p class=\"sz-p\">\r\n        Projekt indywidualny jest najlepszym wyborem wtedy, gdy okno ma skos, nietypow\u0105 wysoko\u015b\u0107, trapezowy kszta\u0142t albo wymaga po\u0142\u0105czenia kilku rozwi\u0105za\u0144 technicznych. Gotowe zas\u0142ony rzadko daj\u0105 wtedy efekt dopasowania.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Przy zas\u0142onach na wymiar mo\u017cna zaplanowa\u0107 nie tylko szeroko\u015b\u0107 i wysoko\u015b\u0107, ale te\u017c marszczenie, spos\u00f3b zawieszenia, ci\u0119\u017car tkaniny i finalny wygl\u0105d po rozsuni\u0119ciu. To w\u0142a\u015bnie te detale decyduj\u0105 o efekcie premium.\r\n      <\/p>\r\n\r\n      <h2 class=\"sz-h2\">Podsumowanie<\/h2>\r\n      <p class=\"sz-p\">\r\n        Okno trapezowe mo\u017ce by\u0107 wyj\u0105tkowym elementem domu, ale wymaga dobrze przemy\u015blanej dekoracji. Po\u0142\u0105czenie karnisza elektrycznego, sta\u0142ej szyny i zas\u0142on welurowych na flexach pozwala uzyska\u0107 wygod\u0119, elegancj\u0119 i dopasowanie do architektury.\r\n      <\/p>\r\n      <p class=\"sz-p\">\r\n        Je\u015bli masz wysokie, sko\u015bne albo trapezowe okno w Poznaniu lub okolicach, warto dobra\u0107 system indywidualnie. Dobrze zaplanowany karnisz i zas\u0142ony na wymiar mog\u0105 podkre\u015bli\u0107 wn\u0119trze, zamiast z nim konkurowa\u0107.\r\n      <\/p>\r\n\r\n    <\/section>\r\n\r\n    <section class=\"sz-cta\" aria-label=\"CTA \u2014 karnisze elektryczne i zas\u0142ony do okien trapezowych Pozna\u0144\">\r\n      <div class=\"sz-ctaGrid\">\r\n\r\n        <div class=\"sz-ctaCard\">\r\n          <h3 class=\"sz-ctaTitle\">Masz wysokie lub trapezowe okno?<\/h3>\r\n          <p class=\"sz-ctaText\">\r\n            Pomo\u017cemy dobra\u0107 uk\u0142ad karnisza, szyny i zas\u0142on do konkretnego kszta\u0142tu okna oraz sposobu korzystania z pomieszczenia.\r\n          <\/p>\r\n          <div class=\"sz-amtu91-btnRow\">\r\n            <a class=\"sz-amtu91-btn\" href=\"tel:+48667067777\">Zadzwo\u0144: +48 667 067 777<\/a>\r\n            <a class=\"sz-amtu91-btn sz-amtu91-btn--ghost\" href=\"mailto:kontakt@karniszepoznan.pl\">kontakt@karniszepoznan.pl<\/a>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"sz-ctaCard\">\r\n          <h3 class=\"sz-ctaTitle\">Karnisze elektryczne Pozna\u0144<\/h3>\r\n          <p class=\"sz-ctaText\">\r\n            Przygotowujemy karnisze elektryczne do du\u017cych, wysokich i nietypowych przeszkle\u0144 \u2014 z doborem nap\u0119du, szyny i sposobu prowadzenia tkaniny.\r\n          <\/p>\r\n          <div class=\"sz-amtu91-btnRow\">\r\n            <a class=\"sz-amtu91-btn\" href=\"mailto:kontakt@karniszepoznan.pl\">Wy\u015blij zdj\u0119cie okna<\/a>\r\n            <a class=\"sz-amtu91-btn sz-amtu91-btn--ghost\" href=\"tel:+48667067777\">Um\u00f3w pomiar<\/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 Pozna\u0144<\/h3>\r\n          <p class=\"sz-ctaText\">\r\n            Dobierzemy tkanin\u0119, flexy, marszczenie i d\u0142ugo\u015b\u0107 zas\u0142on tak, aby ca\u0142o\u015b\u0107 pasowa\u0142a do wn\u0119trza i wybranego systemu.\r\n          <\/p>\r\n          <div class=\"sz-amtu91-btnRow\">\r\n            <a class=\"sz-amtu91-btn\" href=\"tel:+48667067777\">Porozmawiajmy<\/a>\r\n            <a class=\"sz-amtu91-btn sz-amtu91-btn--ghost\" href=\"mailto:kontakt@karniszepoznan.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 Pozna\u0144\">\r\n      <h2 class=\"sz-h2\">FAQ \u2014 karnisz elektryczny i zas\u0142ony do okna trapezowego<\/h2>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy do okna trapezowego mo\u017cna zamontowa\u0107 karnisz elektryczny?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak, ale wymaga to indywidualnego pomiaru. Przy oknach trapezowych trzeba uwzgl\u0119dni\u0107 skos, wysoko\u015b\u0107, miejsce monta\u017cu oraz to, gdzie zas\u0142ona ma si\u0119 zatrzymywa\u0107 po rozsuni\u0119ciu.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy przy takim oknie mo\u017cna po\u0142\u0105czy\u0107 karnisz elektryczny ze zwyk\u0142\u0105 szyn\u0105?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak. Przy nietypowej geometrii cz\u0119sto najlepszy efekt daje uk\u0142ad mieszany, czyli karnisz elektryczny po jednej stronie i sta\u0142a szyna po drugiej.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Dlaczego flexy s\u0105 dobre do wysokich zas\u0142on?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Flexy pomagaj\u0105 uzyska\u0107 r\u00f3wne fa\u0142dy i pozwalaj\u0105 regulowa\u0107 wysoko\u015b\u0107 zas\u0142ony. Przy wysokich oknach taka korekta jest bardzo przydatna.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy welur nadaje si\u0119 do du\u017cych okien?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak, welur mo\u017ce wygl\u0105da\u0107 bardzo elegancko przy du\u017cych przeszkleniach. Trzeba jednak dobrze dobra\u0107 nap\u0119d, prowadzenie tkaniny i spos\u00f3b szycia, poniewa\u017c welur jest tkanin\u0105 ci\u0119\u017csz\u0105 ni\u017c lekkie firany.\r\n        <\/div>\r\n      <\/details>\r\n\r\n      <details class=\"sz-faq__item\">\r\n        <summary>Czy realizujecie karnisze elektryczne i zas\u0142ony w Poznaniu?<\/summary>\r\n        <div class=\"sz-faq__content\">\r\n          Tak. Przygotowujemy karnisze elektryczne, szyny i zas\u0142ony na wymiar dla klient\u00f3w z Poznania oraz okolic. Pomagamy dobra\u0107 rozwi\u0105zanie do okna, wn\u0119trza i sposobu u\u017cytkowania.\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 nasze karnisze na wymiar mo\u017cesz odebra\u0107 nawet w godzin\u0119? Dlatego \u017ce jeste\u015bmy producentem i posiadamy nowoczesn\u0105 lini\u0119 produkcyjn\u0105 oraz bezpo\u015bredni dost\u0119p do najwy\u017cszej jako\u015bci komponent\u00f3w. Kliknij przycisk poni\u017cej i przejd\u017a do HOMESTEAD. Po prostu kupujesz karnisze elektryczne i bateryjne z pierwszej r\u0119ki. Dlatego te\u017c mo\u017cemy udzieli\u0107 5&#8230;<\/p>\n","protected":false},"author":1,"featured_media":375,"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 Pozna\u0144 | Na wymiar, pilot, smart home.<\/title>\n<meta name=\"description\" content=\"Karnisze elektryczne Pozna\u0144 na wymiar. Sterowanie pilotem, aplikacj\u0105, Wi-Fi, Zigbee i smart home. Karnisze proste, gi\u0119te, bateryjne i do skos\u00f3w.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/karniszepoznan.pl\/\" \/>\n<meta property=\"og:locale\" content=\"pl_PL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Karnisze elektryczne Pozna\u0144 | Na wymiar, pilot, smart home.\" \/>\n<meta property=\"og:description\" content=\"Karnisze elektryczne Pozna\u0144 na wymiar. Sterowanie pilotem, aplikacj\u0105, Wi-Fi, Zigbee i smart home. Karnisze proste, gi\u0119te, bateryjne i do skos\u00f3w.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/karniszepoznan.pl\/\" \/>\n<meta property=\"og:site_name\" content=\"Karnisze elektryczne Pozna\u0144\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-28T18:19:06+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"705\" \/>\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:\\\/\\\/karniszepoznan.pl\\\/\",\"url\":\"https:\\\/\\\/karniszepoznan.pl\\\/\",\"name\":\"Karnisze elektryczne Pozna\u0144 | Na wymiar, pilot, smart home.\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/karniszepoznan.pl\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/zestaw-75-okarnisze.webp\",\"datePublished\":\"2024-01-10T16:55:18+00:00\",\"dateModified\":\"2026-05-28T18:19:06+00:00\",\"description\":\"Karnisze elektryczne Pozna\u0144 na wymiar. Sterowanie pilotem, aplikacj\u0105, Wi-Fi, Zigbee i smart home. Karnisze proste, gi\u0119te, bateryjne i do skos\u00f3w.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#breadcrumb\"},\"inLanguage\":\"pl-PL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/karniszepoznan.pl\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#primaryimage\",\"url\":\"https:\\\/\\\/karniszepoznan.pl\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/zestaw-75-okarnisze.webp\",\"contentUrl\":\"https:\\\/\\\/karniszepoznan.pl\\\/wp-content\\\/uploads\\\/2025\\\/08\\\/zestaw-75-okarnisze.webp\",\"width\":1200,\"height\":705,\"caption\":\"Karnisze elektryczne na wymiar Pozna\u0144\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Strona g\u0142\u00f3wna\",\"item\":\"https:\\\/\\\/karniszepoznan.pl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Karnisze elektryczne Pozna\u0144\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#website\",\"url\":\"https:\\\/\\\/karniszepoznan.pl\\\/\",\"name\":\"Karnisze elektryczne Pozna\u0144\",\"description\":\".\",\"publisher\":{\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/karniszepoznan.pl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pl-PL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#organization\",\"name\":\"Karnisze elektryczne Pozna\u0144\",\"url\":\"https:\\\/\\\/karniszepoznan.pl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pl-PL\",\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/karniszepoznan.pl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-logo-azhome.webp\",\"contentUrl\":\"https:\\\/\\\/karniszepoznan.pl\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-logo-azhome.webp\",\"width\":300,\"height\":50,\"caption\":\"Karnisze elektryczne Pozna\u0144\"},\"image\":{\"@id\":\"https:\\\/\\\/karniszepoznan.pl\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Karnisze elektryczne Pozna\u0144 | Na wymiar, pilot, smart home.","description":"Karnisze elektryczne Pozna\u0144 na wymiar. Sterowanie pilotem, aplikacj\u0105, Wi-Fi, Zigbee i smart home. Karnisze proste, gi\u0119te, bateryjne i do skos\u00f3w.","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:\/\/karniszepoznan.pl\/","og_locale":"pl_PL","og_type":"article","og_title":"Karnisze elektryczne Pozna\u0144 | Na wymiar, pilot, smart home.","og_description":"Karnisze elektryczne Pozna\u0144 na wymiar. Sterowanie pilotem, aplikacj\u0105, Wi-Fi, Zigbee i smart home. Karnisze proste, gi\u0119te, bateryjne i do skos\u00f3w.","og_url":"https:\/\/karniszepoznan.pl\/","og_site_name":"Karnisze elektryczne Pozna\u0144","article_modified_time":"2026-05-28T18:19:06+00:00","og_image":[{"width":1200,"height":705,"url":"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze.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:\/\/karniszepoznan.pl\/","url":"https:\/\/karniszepoznan.pl\/","name":"Karnisze elektryczne Pozna\u0144 | Na wymiar, pilot, smart home.","isPartOf":{"@id":"https:\/\/karniszepoznan.pl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/karniszepoznan.pl\/#primaryimage"},"image":{"@id":"https:\/\/karniszepoznan.pl\/#primaryimage"},"thumbnailUrl":"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze.webp","datePublished":"2024-01-10T16:55:18+00:00","dateModified":"2026-05-28T18:19:06+00:00","description":"Karnisze elektryczne Pozna\u0144 na wymiar. Sterowanie pilotem, aplikacj\u0105, Wi-Fi, Zigbee i smart home. Karnisze proste, gi\u0119te, bateryjne i do skos\u00f3w.","breadcrumb":{"@id":"https:\/\/karniszepoznan.pl\/#breadcrumb"},"inLanguage":"pl-PL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/karniszepoznan.pl\/"]}]},{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/karniszepoznan.pl\/#primaryimage","url":"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze.webp","contentUrl":"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2025\/08\/zestaw-75-okarnisze.webp","width":1200,"height":705,"caption":"Karnisze elektryczne na wymiar Pozna\u0144"},{"@type":"BreadcrumbList","@id":"https:\/\/karniszepoznan.pl\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Strona g\u0142\u00f3wna","item":"https:\/\/karniszepoznan.pl\/"},{"@type":"ListItem","position":2,"name":"Karnisze elektryczne Pozna\u0144"}]},{"@type":"WebSite","@id":"https:\/\/karniszepoznan.pl\/#website","url":"https:\/\/karniszepoznan.pl\/","name":"Karnisze elektryczne Pozna\u0144","description":".","publisher":{"@id":"https:\/\/karniszepoznan.pl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/karniszepoznan.pl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pl-PL"},{"@type":"Organization","@id":"https:\/\/karniszepoznan.pl\/#organization","name":"Karnisze elektryczne Pozna\u0144","url":"https:\/\/karniszepoznan.pl\/","logo":{"@type":"ImageObject","inLanguage":"pl-PL","@id":"https:\/\/karniszepoznan.pl\/#\/schema\/logo\/image\/","url":"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2026\/05\/cropped-logo-azhome.webp","contentUrl":"https:\/\/karniszepoznan.pl\/wp-content\/uploads\/2026\/05\/cropped-logo-azhome.webp","width":300,"height":50,"caption":"Karnisze elektryczne Pozna\u0144"},"image":{"@id":"https:\/\/karniszepoznan.pl\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/pages\/6","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/comments?post=6"}],"version-history":[{"count":195,"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/pages\/6\/revisions"}],"predecessor-version":[{"id":452,"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/pages\/6\/revisions\/452"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/media\/375"}],"wp:attachment":[{"href":"https:\/\/karniszepoznan.pl\/index.php\/wp-json\/wp\/v2\/media?parent=6"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}