{"id":15,"date":"2026-10-07T14:20:34","date_gmt":"2026-10-07T14:20:34","guid":{"rendered":"https:\/\/szablon-art.pl\/?page_id=15"},"modified":"2026-10-07T23:40:00","modified_gmt":"2026-10-07T21:40:00","slug":"naklejki-dla-firm","status":"publish","type":"page","link":"https:\/\/szablon-art.pl\/","title":{"rendered":"SzablonArt \u2014 naklejki na auto i witryn\u0119"},"content":{"rendered":"\n<style>\n#sa-shop{--ink:#292126;--muted:#645d60;--accent:#8f2f38;--accent-hover:#74232b;--coral:#e47760;--pale:#f3e8e8;--line:#e1d8d8;--soft:#f5f2ef;--white:#fff;--radius:8px;font:16px\/1.6 Arial,Helvetica,sans-serif;color:var(--ink);background:var(--soft);margin:0;scroll-behavior:smooth;scroll-padding-top:24px}\n#sa-shop *,#sa-shop *:before,#sa-shop *:after{box-sizing:border-box}\n#sa-shop h1,#sa-shop h2,#sa-shop h3,#sa-shop p,#sa-shop figure{margin:0}\n#sa-shop h1,#sa-shop h2,#sa-shop h3{line-height:1.18}\n#sa-shop a{color:inherit;text-decoration:none}\n#sa-shop button,#sa-shop input,#sa-shop select,#sa-shop textarea{font:inherit;color:inherit}\n#sa-shop button{cursor:pointer}#sa-shop button:disabled{cursor:not-allowed;opacity:.5}\n#sa-shop button:focus-visible,#sa-shop a:focus-visible,#sa-shop input:focus-visible,#sa-shop select:focus-visible,#sa-shop textarea:focus-visible,#sa-shop summary:focus-visible{outline:3px solid var(--coral);outline-offset:3px}\n#sa-shop img{display:block;max-width:100%;height:auto}#sa-shop svg{max-width:100%}#sa-shop [hidden]{display:none!important}\n#sa-shop .wrap{width:min(1224px,calc(100% - 48px));margin-inline:auto}\n#sa-shop .section{padding-block:34px}\n#sa-shop .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}\n#sa-shop .skip-link{position:absolute;top:-90px;left:12px;z-index:50;background:var(--accent);color:white;padding:13px 18px}#sa-shop .skip-link:focus{top:12px}\n#sa-shop .utility-bar{background:var(--accent);color:white;font-size:12px;line-height:1.5;padding:6px 0}\n#sa-shop .utility-bar .wrap{display:flex;justify-content:space-between;gap:12px}#sa-shop .utility-bar a{text-decoration:underline;text-underline-offset:3px}\n#sa-shop .shop-header{display:flex;align-items:center;gap:24px;padding-block:18px;background:white}\n#sa-shop .header-background{background:white}\n#sa-shop .logo{display:inline-flex;align-items:center;gap:9px;font-size:29px;font-weight:750;letter-spacing:-1.4px;line-height:1;flex-shrink:0}\n#sa-shop .brand-mark{width:39px;height:39px;background:var(--accent);border-radius:8px;flex-shrink:0}#sa-shop .wordmark>span{color:var(--accent);font-weight:400}\n#sa-shop .catalog-search{display:flex;align-items:center;border:1px solid var(--line);background:#f8f5f3;border-radius:5px;flex:1;max-width:420px;min-width:100px;margin-left:auto;overflow:hidden}\n#sa-shop .catalog-search>span{display:flex;align-items:center;margin-left:13px;color:var(--accent)}#sa-shop .catalog-search input{min-width:50px;flex:1;border:0;background:none;padding:11px 9px;font-size:14px;outline-offset:-3px}\n#sa-shop .catalog-search button{border:0;background:none;font-size:13px;font-weight:700;padding:11px 13px;color:var(--accent)}\n#sa-shop .header-contact{font-size:12px;line-height:1.5;color:var(--muted)}#sa-shop .header-contact strong{display:block;color:var(--ink);font-size:13px}\n#sa-shop .list-button{display:flex;align-items:center;gap:8px;border:1px solid var(--line);background:white;font-size:13px;font-weight:700;border-radius:5px;padding:10px 12px;white-space:nowrap}\n#sa-shop .list-button>span{background:var(--accent);color:white;border-radius:50%;width:24px;height:24px;display:grid;place-items:center;font-size:12px}\n#sa-shop .category-nav{background:white;border-block:1px solid var(--line)}#sa-shop .category-nav>.wrap{display:flex;align-items:center;justify-content:space-between;gap:22px;padding-block:12px;white-space:nowrap}\n#sa-shop .category-nav a{font-size:14px;font-weight:600}#sa-shop .category-nav a:hover{color:var(--accent)}#sa-shop .category-nav .nav-help{color:var(--accent)}\n#sa-shop .hero{display:grid;grid-template-columns:1.8fr 1fr;gap:16px;padding-block:20px 16px}\n#sa-shop .hero-main{display:grid;grid-template-columns:.92fr 1.08fr;background:#fff;border:1px solid var(--line);border-radius:8px;overflow:hidden;min-height:330px}\n#sa-shop .hero-copy{padding:27px 22px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center}\n#sa-shop .overline{font-size:12px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--accent);margin-bottom:10px}\n#sa-shop h1{font:700 clamp(32px,3vw,40px)\/1.12 Georgia,'Times New Roman',serif;letter-spacing:-1px;margin-bottom:15px}\n#sa-shop h1 em{font-style:normal;color:var(--accent)}#sa-shop .hero-copy>p:not(.overline){font-size:15px;line-height:1.65;color:var(--muted)}\n#sa-shop .hero-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-top:18px}\n#sa-shop .button{display:inline-flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 15px;border:1px solid transparent;border-radius:5px;font-size:14px;font-weight:650;line-height:1.4;min-height:44px;transition:background .2s,color .2s,border-color .2s}\n#sa-shop .button>span{font-size:20px;line-height:1;font-weight:400}#sa-shop .primary{background:var(--accent);color:white}#sa-shop .primary:hover{background:var(--accent-hover)}\n#sa-shop .outline{border-color:#ba9ca5;background:white;color:var(--accent)}#sa-shop .outline:hover{background:var(--pale);border-color:var(--accent)}\n#sa-shop .hero-photo{position:relative;min-height:330px;overflow:hidden}#sa-shop .hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:65% center}\n#sa-shop .photo-caption{position:absolute;bottom:10px;left:10px;font-size:11px;line-height:1.4;padding:4px 7px;background:#fffffff0;color:#51454a;border-radius:3px}\n#sa-shop .hero-car{border:1px solid var(--line);border-radius:8px;overflow:hidden;background:white;display:flex;flex-direction:column}\n#sa-shop .hero-car .hero-car-photo{height:205px;position:relative;overflow:hidden}#sa-shop .hero-car img{width:100%;height:100%;object-fit:cover;object-position:center}\n#sa-shop .hero-car-body{padding:16px 18px;display:grid;grid-template-columns:1fr auto;gap:8px 12px;align-items:center;flex:1}#sa-shop .hero-car-body h2{font-size:21px;letter-spacing:-.5px}\n#sa-shop .hero-car-body p{font-size:14px;color:var(--muted);line-height:1.5;grid-column:1\/-1}#sa-shop .hero-car-body .hero-value{font-size:32px;line-height:1;font-weight:750;color:var(--accent);white-space:nowrap}#sa-shop .hero-value small{font-size:14px;font-weight:500}\n#sa-shop .hero-car-body a{grid-column:1\/-1;font-size:14px;font-weight:700;color:var(--accent);text-decoration:underline;text-underline-offset:4px}\n#sa-shop .offer-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}\n#sa-shop .offer-card{display:grid;grid-template-columns:85px 1fr;min-height:114px;background:white;border:1px solid var(--line);border-radius:7px;overflow:hidden;transition:border-color .2s}\n#sa-shop .offer-card:hover{border-color:var(--accent)}#sa-shop .offer-card img{width:85px;height:100%;object-fit:cover}#sa-shop .offer-card.hours img{object-position:95% center}#sa-shop .offer-card div{padding:13px 10px;display:flex;flex-direction:column;justify-content:center}\n#sa-shop .offer-card strong{font-size:14px;line-height:1.25}#sa-shop .offer-card .offer-price{font-size:27px;line-height:1.1;color:var(--accent);font-weight:750;margin-top:5px}#sa-shop .offer-price small{font-size:13px;font-weight:500}#sa-shop .offer-card .offer-detail{font-size:12px;color:var(--muted);line-height:1.4;margin-top:4px}\n#sa-shop .trust-row{display:flex;justify-content:space-between;gap:16px;padding-block:15px;border-bottom:1px solid var(--line);font-size:13px;color:var(--muted)}#sa-shop .trust-row strong{color:var(--ink);font-weight:600}#sa-shop .trust-row span:before{content:'\u2713';color:var(--accent);font-weight:700;margin-right:7px}\n#sa-shop .section-heading{display:flex;justify-content:space-between;gap:24px;align-items:end;margin-bottom:18px}#sa-shop h2{font-size:29px;letter-spacing:-.8px;font-weight:750}#sa-shop .section-heading>p{font-size:14px;line-height:1.6;color:var(--muted);max-width:370px}\n#sa-shop .catalog-controls{display:flex;gap:20px;align-items:center;justify-content:space-between;margin-bottom:18px}\n#sa-shop .filters{display:flex;gap:7px;flex-wrap:wrap}#sa-shop .filters button{font-size:14px;padding:8px 14px;background:white;border:1px solid var(--line);border-radius:5px;min-height:40px}#sa-shop .filters button.active{background:var(--accent);color:white;border-color:var(--accent)}\n#sa-shop .catalog-controls>p{font-size:13px;color:var(--muted);white-space:nowrap}\n#sa-shop .product-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}\n#sa-shop .product{min-width:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;background:white;transition:border-color .2s,box-shadow .2s}\n#sa-shop .product:hover{border-color:#b898a2;box-shadow:0 5px 20px #5726360b}\n#sa-shop .product-image{height:220px;position:relative;background:#eae2df;overflow:hidden}#sa-shop .product-image img{width:100%;height:100%;object-fit:cover;display:block}\n#sa-shop .product-image .photo-caption{bottom:9px;left:9px;font-size:11px}\n#sa-shop .product-tag{position:absolute;top:11px;left:11px;background:var(--accent);color:white;border-radius:3px;padding:5px 8px;font-size:12px;font-weight:600}\n#sa-shop .product[data-product=hours] .product-image img{object-position:95% 56%;width:100%;transform:scale(1.2)}\n#sa-shop .product[data-product=contact] .product-image img{object-position:66% 60%;transform:scale(1.1)}\n#sa-shop .product[data-product=logo] .product-image img{object-position:50% 38%}\n#sa-shop .product[data-product=custom] .product-image img{object-position:50% 48%}\n#sa-shop .product-info{padding:18px;display:flex;flex-direction:column;flex:1;gap:0}\n#sa-shop .product-type{font-size:12px;font-weight:650;letter-spacing:.5px;color:var(--accent);text-transform:uppercase;margin-bottom:7px}\n#sa-shop .product-info h3{font-size:21px;font-weight:700;letter-spacing:-.5px;margin-bottom:10px;line-height:1.25}\n#sa-shop .product-desc{font-size:15px;line-height:1.65;color:var(--muted);margin-bottom:12px;min-height:75px}\n#sa-shop .product-facts{list-style:none;padding:0;margin:0 0 12px;font-size:14px;line-height:1.55;color:var(--ink)}#sa-shop .product-facts li{padding:5px 0;border-top:1px solid #efe8e5}#sa-shop .product-facts strong{font-weight:600}\n#sa-shop .product-options{display:flex;gap:7px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-bottom:8px}#sa-shop .product-options>span{background:var(--soft);padding:3px 6px;border-radius:3px}\n#sa-shop .color-dots{margin-left:auto;display:flex;gap:5px}#sa-shop .color-dot{width:13px;height:13px;border-radius:50%;background:#282326;border:1px solid #bfb4b7}#sa-shop .color-dot.white{background:#fff}#sa-shop .color-dot.other{background:var(--coral)}\n#sa-shop .price-row{display:flex;justify-content:space-between;gap:12px;align-items:end;padding-block:8px 13px;margin-top:auto}#sa-shop .price-row strong{font-size:32px;color:var(--accent);letter-spacing:-1px;line-height:1.1}#sa-shop .price-row strong small{font-size:15px;letter-spacing:0;font-weight:500}#sa-shop .price-row>span{font-size:13px;line-height:1.4;color:var(--muted);max-width:125px;text-align:right}\n#sa-shop .price-row .quote-price{font-size:28px}#sa-shop .product-info>.button{width:100%}\n#sa-shop .product[data-product=custom]{grid-column:1\/-1;display:grid;grid-template-columns:1fr 2fr}\n#sa-shop .product[data-product=custom] .product-image{height:100%;min-height:325px}#sa-shop .product[data-product=custom] .product-info{padding:24px}#sa-shop .product[data-product=custom] .product-desc{min-height:0;max-width:640px}#sa-shop .product[data-product=custom] .product-info>.button{max-width:330px}\n#sa-shop .catalog-note{margin-top:18px;display:flex;gap:20px;padding:16px 18px;background:#ede6e3;border:1px solid var(--line);border-radius:5px;font-size:13px;line-height:1.6;color:var(--muted)}#sa-shop .catalog-note>strong{color:var(--ink);white-space:nowrap;font-size:14px}#sa-shop .no-results{font-size:15px;padding:20px}\n#sa-shop .category-section{background:#fff;border-block:1px solid var(--line)}#sa-shop .category-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}\n#sa-shop .category-cards>a{display:block;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--soft)}#sa-shop .category-cards img{width:100%;height:145px;object-fit:cover}#sa-shop .category-cards div{padding:12px 13px;position:relative}#sa-shop .category-cards strong{display:block;font-size:17px;line-height:1.4}#sa-shop .category-cards div>span{display:block;font-size:13px;color:var(--muted);line-height:1.5;margin-top:3px}#sa-shop .category-cards div:after{content:'\u2192';position:absolute;top:12px;right:12px;color:var(--accent)}\n#sa-shop .installation-section{display:grid;grid-template-columns:1.1fr 1fr;gap:30px;align-items:center}\n#sa-shop .installation-photo{height:310px;position:relative;border-radius:7px;overflow:hidden}#sa-shop .installation-photo img{height:100%;width:100%;object-fit:cover;object-position:center}\n#sa-shop .installation-section h2{margin-bottom:13px}#sa-shop .installation-section p:not(.overline){font-size:15px;line-height:1.7;color:var(--muted);margin-bottom:14px}#sa-shop .install-price{display:flex;align-items:center;gap:15px;margin-bottom:14px}#sa-shop .install-price>strong{font-size:34px;color:var(--accent);line-height:1.1}#sa-shop .install-price small{font-size:15px;font-weight:500}#sa-shop .install-price>span{font-size:13px;line-height:1.5;color:var(--muted)}\n#sa-shop .installation-section .install-summary{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:14px}\n#sa-shop .steps-section{background:#ede6e3;border-block:1px solid var(--line)}#sa-shop .steps{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin:0;padding:0}\n#sa-shop .steps li{display:flex;align-items:flex-start;gap:13px}#sa-shop .steps li>span{display:grid;place-items:center;flex-shrink:0;width:35px;height:35px;border-radius:50%;background:var(--accent);color:white;font-size:14px;font-weight:700}#sa-shop .steps h3{font-size:18px;margin-bottom:8px}#sa-shop .steps p{font-size:14px;line-height:1.65;color:var(--muted)}\n#sa-shop .gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}#sa-shop .gallery-photo{height:170px;overflow:hidden;background:#ece4e1;border-radius:5px}#sa-shop .gallery-photo img{width:100%;height:100%;object-fit:cover}#sa-shop .gallery-grid figcaption{font-size:15px;font-weight:600;line-height:1.4;margin-top:10px}#sa-shop .gallery-grid figcaption>span{display:block;font-size:12px;color:var(--muted);font-weight:400;margin-top:4px}#sa-shop .gallery-note{font-size:13px;line-height:1.6;color:var(--muted);margin-top:14px}\n#sa-shop .faq-layout{display:grid;grid-template-columns:.75fr 1.25fr;gap:35px;border-top:1px solid var(--line)}#sa-shop .faq-layout>div>p:not(.overline){font-size:15px;line-height:1.7;color:var(--muted);margin-top:14px}\n#sa-shop .faq details{border-bottom:1px solid var(--line)}#sa-shop .faq summary{font-size:15px;font-weight:600;line-height:1.5;list-style:none;cursor:pointer;display:flex;justify-content:space-between;gap:15px;padding:16px 0}#sa-shop .faq summary::-webkit-details-marker{display:none}#sa-shop .faq summary>span{font-size:21px;color:var(--accent);line-height:1}#sa-shop .faq details[open] summary>span{transform:rotate(45deg)}#sa-shop .faq details p{font-size:14px;line-height:1.7;color:var(--muted);padding:0 25px 16px 0}\n#sa-shop .custom-cta{display:flex;justify-content:space-between;gap:28px;align-items:center;background:var(--accent);color:#fff;border-radius:7px;padding:24px 28px;margin-block:0 26px}#sa-shop .custom-cta .overline{color:#f2d0c6;margin-bottom:6px}#sa-shop .custom-cta h2{font-size:27px;margin-bottom:7px}#sa-shop .custom-cta p:not(.overline){font-size:14px;line-height:1.6;color:#f2e3e6}#sa-shop .custom-cta .button{background:#fff;color:var(--accent);flex-shrink:0}\n#sa-shop .demo-notice{display:flex;gap:20px;font-size:13px;line-height:1.6;color:var(--muted);padding-bottom:26px}#sa-shop .demo-notice strong{color:var(--ink);white-space:nowrap}#sa-shop .demo-notice a{text-decoration:underline}\n#sa-shop .footer{background:#292126;color:#eee7e9;padding-block:30px}#sa-shop .footer .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:15px 23px}#sa-shop .footer .logo{color:white;font-size:25px}#sa-shop .footer .wordmark>span{color:#f0bcad}#sa-shop .footer p{font-size:13px;line-height:1.6;flex:1}#sa-shop .footer a:not(.logo){font-size:13px}#sa-shop .footer small{width:100%;font-size:12px;color:#bbaeb3;border-top:1px solid #51434b;padding-top:18px;margin-top:4px}\n#sa-shop dialog{color:var(--ink);font:16px\/1.6 Arial,Helvetica,sans-serif;border:1px solid var(--line);border-radius:10px;background:white;max-height:90vh;box-shadow:0 20px 70px #29212640;padding:0}#sa-shop dialog::backdrop{background:#29212699}\n#sa-shop .product-dialog{width:min(960px,calc(100% - 32px))}#sa-shop .list-dialog{width:min(750px,calc(100% - 32px));padding-bottom:22px}\n#sa-shop .dialog-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 23px;border-bottom:1px solid var(--line)}#sa-shop .dialog-header p{font-size:13px;color:var(--muted)}#sa-shop .dialog-header h2{font-size:24px;margin-top:4px}#sa-shop .close-dialog{border:0;background:var(--soft);border-radius:5px;width:40px;height:40px;font-size:26px;line-height:1;flex-shrink:0}\n#sa-shop .detail-layout{display:grid;grid-template-columns:.85fr 1.15fr}#sa-shop .detail-preview{padding:28px;background:#f3ece8;border-right:1px solid var(--line)}#sa-shop .detail-preview .overline{font-size:12px}\n#sa-shop .live-preview{min-height:240px;display:flex;align-items:center;justify-content:center;white-space:pre-wrap;overflow-wrap:anywhere;text-align:center;font-size:22px;font-weight:700;line-height:1.6;padding:24px;color:#292126;background:#e1d9d5;border:1px solid #cfc2c3;border-radius:6px}#sa-shop .live-preview.white-lettering{color:white;background:#5a5054}\n#sa-shop .preview-disclaimer{font-size:13px;line-height:1.65;color:var(--muted);margin-top:16px}#sa-shop .detail-layout form{padding:25px}#sa-shop .detail-layout form h2{font-size:25px;line-height:1.25;margin-bottom:10px}#sa-shop #dialog-description{font-size:14px;color:var(--muted);line-height:1.65;margin-bottom:13px}\n#sa-shop .detail-price{display:flex;align-items:center;gap:15px;margin-bottom:20px}#sa-shop .detail-price strong{font-size:30px;color:var(--accent);line-height:1.1;white-space:nowrap}#sa-shop .detail-price span{font-size:12px;line-height:1.5;color:var(--muted)}\n#sa-shop .field{margin-bottom:14px}#sa-shop .field label{display:block;font-size:14px;font-weight:600;line-height:1.5;margin-bottom:6px}#sa-shop .field label span{font-size:12px;font-weight:400;color:var(--muted)}#sa-shop .field input,#sa-shop .field textarea,#sa-shop .field select{width:100%;border:1px solid #cabcc1;border-radius:5px;padding:10px;background:white;min-height:44px;font-size:16px;line-height:1.4}#sa-shop .field textarea{resize:vertical}#sa-shop .field input[type=file]{font-size:13px;padding:8px}#sa-shop .field-hint{font-size:12px;line-height:1.65;color:var(--muted);margin-top:6px}\n#sa-shop .field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}#sa-shop .scope-note{font-size:13px;line-height:1.65;color:var(--muted);background:var(--soft);padding:12px;border-radius:5px;margin-bottom:16px}#sa-shop .add-to-list{width:100%}#sa-shop .demo-inline{font-size:12px;line-height:1.7;color:var(--muted);margin-top:12px}\n#sa-shop .quote-items{padding:0 23px}#sa-shop .quote-empty{font-size:15px;color:var(--muted);padding:24px 0}#sa-shop .quote-item{display:grid;grid-template-columns:1fr auto;gap:20px;border-bottom:1px solid var(--line);padding:20px 0}#sa-shop .quote-item h3{font-size:18px;line-height:1.35;margin-bottom:7px}#sa-shop .quote-item p{font-size:13px;line-height:1.7;color:var(--muted);white-space:pre-wrap;overflow-wrap:anywhere}#sa-shop .quote-item .item-text{font-size:14px;color:var(--ink);margin-bottom:7px}#sa-shop .quote-item strong{font-size:17px;white-space:nowrap;color:var(--accent)}#sa-shop .remove-item{display:block;border:0;background:none;color:var(--accent);text-decoration:underline;font-size:13px;margin-top:9px;padding:5px 0;min-height:32px}\n#sa-shop .quote-summary{padding:20px 23px;background:var(--soft);margin-top:15px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:10px;font-size:15px}#sa-shop .quote-summary strong{font-size:27px;color:var(--accent)}#sa-shop .quote-summary p{grid-column:1\/-1;font-size:13px;line-height:1.7;color:var(--muted)}\n#sa-shop .quote-actions{display:flex;flex-wrap:wrap;gap:10px;padding:20px 23px 0}#sa-shop .is-disabled{opacity:.5;pointer-events:none}#sa-shop .list-dialog>.demo-inline,#sa-shop .list-dialog>#quote-status,#sa-shop #email-attachment-note{padding-inline:23px}#sa-shop #quote-status{font-size:13px;color:var(--accent);line-height:1.7;margin-top:14px}\n#sa-shop .toast{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);max-width:calc(100% - 32px);border-radius:6px;padding:14px 20px;background:var(--accent);color:white;box-shadow:0 5px 25px #29212630;font-size:14px;z-index:9999;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}#sa-shop .toast.visible{opacity:1;transform:translate(-50%,0)}\n@media(max-width:1050px){#sa-shop .header-contact{display:none}#sa-shop .shop-header{gap:18px}#sa-shop .hero-copy{padding:23px 18px}#sa-shop h1{font-size:33px}#sa-shop .hero-main{grid-template-columns:1fr 1fr}#sa-shop .offer-card{grid-template-columns:65px 1fr}#sa-shop .offer-card img{width:65px}#sa-shop .offer-card div{padding:12px 8px}#sa-shop .offer-card strong{font-size:13px}#sa-shop .offer-card .offer-price{font-size:24px}#sa-shop .category-nav>.wrap{gap:15px}#sa-shop .category-nav a{font-size:13px}#sa-shop .product-info{padding:16px}#sa-shop .product-info h3{font-size:20px}#sa-shop .product-desc{font-size:14px}#sa-shop .product-facts{font-size:14px}}\n@media(max-width:800px){#sa-shop .wrap{width:calc(100% - 32px)}#sa-shop .utility-bar .wrap{justify-content:center}#sa-shop .utility-bar .wrap>span:first-child{display:none}#sa-shop .shop-header{flex-wrap:wrap;padding-block:13px;gap:12px}#sa-shop .shop-header .logo{font-size:26px}#sa-shop .brand-mark{width:34px;height:34px}#sa-shop .catalog-search{order:3;flex-basis:100%;max-width:none;margin:0}#sa-shop .list-button{margin-left:auto;font-size:12px}#sa-shop .category-nav>.wrap{overflow-x:auto;justify-content:flex-start;padding-block:7px;gap:22px}#sa-shop .category-nav a{font-size:14px;min-height:36px;display:inline-flex;align-items:center}#sa-shop .hero{grid-template-columns:1fr;padding-top:16px;gap:12px}#sa-shop .hero-main{min-height:295px;grid-template-columns:1fr 1fr}#sa-shop .hero-photo{min-height:295px}#sa-shop h1{font-size:34px}#sa-shop .hero-car{display:grid;grid-template-columns:1fr 1fr}#sa-shop .hero-car .hero-car-photo{height:180px}#sa-shop .hero-car-body{padding:16px}#sa-shop .hero-car-body h2{font-size:20px}#sa-shop .hero-car-body .hero-value{font-size:29px}#sa-shop .offer-grid{grid-template-columns:repeat(2,1fr)}#sa-shop .offer-card{grid-template-columns:90px 1fr}#sa-shop .offer-card img{width:90px}#sa-shop .offer-card strong{font-size:15px}#sa-shop .offer-card .offer-price{font-size:28px}#sa-shop .trust-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;font-size:12px}#sa-shop .section-heading>p{max-width:280px}#sa-shop .product-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}#sa-shop .product-image{height:220px}#sa-shop .product-desc{min-height:95px}#sa-shop .product[data-product=custom]{grid-template-columns:1fr 1fr}#sa-shop .category-cards{grid-template-columns:repeat(2,1fr)}#sa-shop .category-cards img{height:170px}#sa-shop .installation-section{gap:22px;grid-template-columns:1fr 1fr}#sa-shop .installation-photo{height:350px}#sa-shop .steps{gap:18px}#sa-shop .steps li{display:block}#sa-shop .steps li>span{margin-bottom:12px}#sa-shop .gallery-grid{grid-template-columns:repeat(2,1fr)}#sa-shop .gallery-photo{height:200px}#sa-shop .faq-layout{grid-template-columns:1fr;gap:18px}#sa-shop .custom-cta{padding:22px;align-items:flex-start;flex-direction:column;gap:18px}#sa-shop .detail-layout{grid-template-columns:1fr}#sa-shop .detail-preview{border-right:0;border-bottom:1px solid var(--line);padding:20px}#sa-shop .live-preview{min-height:150px;font-size:20px}}\n@media(max-width:540px){#sa-shop .wrap{width:calc(100% - 24px)}#sa-shop .section{padding-block:26px}#sa-shop .utility-bar{font-size:11px}#sa-shop .list-button{padding:8px;font-size:11px;gap:5px}#sa-shop .list-button svg{width:18px}#sa-shop .list-button>span{width:22px;height:22px;font-size:11px}#sa-shop .logo{font-size:25px;gap:6px}#sa-shop .catalog-search input{font-size:16px}#sa-shop .hero-main{grid-template-columns:1fr;min-height:0}#sa-shop .hero-copy{padding:23px 20px}#sa-shop h1{font-size:35px;max-width:330px;margin-bottom:12px}#sa-shop .hero-copy>p:not(.overline){font-size:15px;line-height:1.6}#sa-shop .hero-actions{margin-top:15px}#sa-shop .hero-photo{min-height:220px;max-height:220px}#sa-shop .hero-photo img{object-position:50% 55%}#sa-shop .hero-car{grid-template-columns:1fr 1.05fr}#sa-shop .hero-car .hero-car-photo{height:200px}#sa-shop .hero-car img{object-position:55% center}#sa-shop .hero-car-body{grid-template-columns:1fr;gap:7px;padding:15px 12px}#sa-shop .hero-car-body h2{font-size:18px}#sa-shop .hero-car-body p{font-size:13px}#sa-shop .hero-car-body .hero-value{font-size:28px}#sa-shop .hero-car-body a{font-size:13px}#sa-shop .offer-grid{gap:9px}#sa-shop .offer-card{grid-template-columns:54px 1fr;min-height:112px}#sa-shop .offer-card img{width:54px}#sa-shop .offer-card div{padding:10px 8px}#sa-shop .offer-card strong{font-size:13px}#sa-shop .offer-card .offer-price{font-size:26px}#sa-shop .offer-card .offer-detail{font-size:11px}#sa-shop .trust-row{font-size:12px;line-height:1.5;padding-block:13px}#sa-shop .section-heading{display:block;margin-bottom:16px}#sa-shop .section-heading>p{margin-top:10px;max-width:none}#sa-shop h2{font-size:27px}#sa-shop .overline{font-size:12px;margin-bottom:8px}#sa-shop .catalog-controls{display:block;margin-bottom:15px}#sa-shop .filters{gap:6px}#sa-shop .filters button{font-size:13px;min-height:44px;padding:8px 10px}#sa-shop .catalog-controls>p{margin-top:10px}#sa-shop .product-grid{grid-template-columns:1fr;gap:17px}#sa-shop .product-image{height:230px}#sa-shop .product-info{padding:18px}#sa-shop .product-info h3{font-size:22px}#sa-shop .product-desc{font-size:15px;min-height:0;line-height:1.65;margin-bottom:12px}#sa-shop .product-facts{font-size:14px}#sa-shop .product-info>.button{font-size:15px}#sa-shop .product[data-product=custom]{display:flex;grid-column:auto}#sa-shop .product[data-product=custom] .product-image{height:240px;min-height:0}#sa-shop .product[data-product=custom] .product-info{padding:18px}#sa-shop .product[data-product=custom] .product-info>.button{max-width:none}#sa-shop .catalog-note{display:block;padding:14px;font-size:13px}#sa-shop .catalog-note>strong{display:block;margin-bottom:7px}#sa-shop .category-cards{gap:10px}#sa-shop .category-cards img{height:125px}#sa-shop .category-cards div{padding:11px}#sa-shop .category-cards strong{font-size:15px;max-width:130px}#sa-shop .category-cards div>span{font-size:12px}#sa-shop .installation-section{grid-template-columns:1fr;gap:21px}#sa-shop .installation-photo{height:240px}#sa-shop .installation-section p:not(.overline){font-size:15px}#sa-shop .steps{grid-template-columns:1fr;gap:19px}#sa-shop .steps li{display:flex;gap:13px}#sa-shop .steps li>span{margin:0}#sa-shop .steps h3{font-size:18px}#sa-shop .steps p{font-size:14px}#sa-shop .gallery-grid{gap:16px 10px}#sa-shop .gallery-photo{height:135px}#sa-shop .gallery-grid figcaption{font-size:14px}#sa-shop .gallery-grid figcaption>span{font-size:12px}#sa-shop .section-heading .button{margin-top:12px}#sa-shop .faq summary{font-size:15px}#sa-shop .faq details p{font-size:14px;padding-right:0}#sa-shop .custom-cta{margin-bottom:20px;padding:21px}#sa-shop .custom-cta h2{font-size:25px}#sa-shop .demo-notice{display:block;font-size:13px;line-height:1.7}#sa-shop .demo-notice strong{display:block;margin-bottom:6px}#sa-shop .footer .wrap{gap:10px 18px}#sa-shop .footer p{flex-basis:100%}#sa-shop .footer a:not(.logo){min-height:36px;display:inline-flex;align-items:center}#sa-shop .detail-layout form{padding:20px}#sa-shop .dialog-header{padding:15px 18px}#sa-shop .close-dialog{width:44px;height:44px}#sa-shop .product-dialog,#sa-shop .list-dialog{width:calc(100% - 16px);max-height:95vh}#sa-shop .detail-layout form h2{font-size:23px}#sa-shop .field-grid{gap:10px}#sa-shop .field label{font-size:14px}#sa-shop .detail-price{gap:12px}#sa-shop .detail-price strong{font-size:28px}#sa-shop .quote-item{gap:12px}#sa-shop .quote-item h3{font-size:17px}#sa-shop .quote-item strong{font-size:15px}#sa-shop .quote-items,#sa-shop .quote-actions{padding-inline:17px}#sa-shop .quote-summary{padding-inline:17px}#sa-shop .quote-actions .button{width:100%}#sa-shop .list-dialog>.demo-inline,#sa-shop .list-dialog>#quote-status,#sa-shop #email-attachment-note{padding-inline:17px}#sa-shop .toast{font-size:13px;line-height:1.6}}\n@media(prefers-reduced-motion:reduce){#sa-shop{scroll-behavior:auto}#sa-shop *{transition:none!important}}\n\n\/* Szablon-Art: Pracownia wycinanych liter. The stage stays usable without motion. *\/\n#sa-shop{--ink:#211b2d;--muted:#625c67;--accent:#211b2d;--accent-hover:#ff583f;--coral:#ff583f;--vermilion:#ff583f;--mint:#b4dfd0;--porcelain:#f4efe5;--pale:#e2ede4;--line:#cfc8bc;--soft:#f4efe5;--white:#fffdf7;--radius:0;--studio-accent:#211b2d;background:var(--porcelain);font-family:Arial,Helvetica,sans-serif;scroll-padding-top:20px}\n#sa-shop .wrap{width:min(1224px,calc(100% - 48px))}\n#sa-shop .section{padding-block:32px}\n#sa-shop .utility-bar{background:var(--ink);color:var(--porcelain);font-size:12px;padding:7px 0;border-bottom:1px solid #f4efe526}\n#sa-shop .utility-bar .wrap>span:first-child:before{content:'\u2733';color:var(--mint);margin-right:9px;font-size:14px}\n#sa-shop .header-background,#sa-shop .shop-header{background:var(--porcelain)}\n#sa-shop .shop-header{padding-block:19px;gap:24px}\n#sa-shop .logo{gap:10px;font-size:31px;font-weight:800;letter-spacing:-1.5px}\n#sa-shop .brand-mark{width:43px;height:43px;background:var(--ink);border-radius:0;clip-path:polygon(0 0,78% 0,100% 22%,100% 100%,0 100%)}\n#sa-shop .wordmark>span{color:var(--ink);font-weight:400}\n#sa-shop .wordmark{position:relative;padding-bottom:5px}\n#sa-shop .wordmark:after{content:'';position:absolute;height:3px;width:44px;background:var(--vermilion);bottom:0;right:1px;transform:rotate(-4deg)}\n#sa-shop .catalog-search{background:transparent;border:0;border-bottom:1px solid var(--ink);border-radius:0;max-width:380px}\n#sa-shop .catalog-search input{background:transparent;font-size:14px;padding-block:11px}\n#sa-shop .catalog-search button{font-weight:700;color:var(--ink)}\n#sa-shop .list-button{background:var(--mint);border:1px solid var(--ink);border-radius:0;padding:10px 13px;color:var(--ink)}\n#sa-shop .list-button>span{background:var(--ink);color:var(--mint);border-radius:0}\n#sa-shop .header-contact{color:var(--muted)}\n#sa-shop .category-nav{background:var(--porcelain);border-block:1px solid var(--ink)}\n#sa-shop .category-nav>.wrap{padding-block:10px}\n#sa-shop .category-nav a{font-size:13px;font-weight:700;position:relative}\n#sa-shop .category-nav a:hover{color:var(--ink)}\n#sa-shop .category-nav a:after{content:'';height:2px;background:var(--vermilion);position:absolute;bottom:-3px;left:0;right:100%;transition:right .2s}\n#sa-shop .category-nav a:hover:after{right:0}\n#sa-shop .overline{font:700 11px\/1.5 'Courier New',monospace;letter-spacing:1.3px;color:var(--ink);margin-bottom:8px}\n#sa-shop .button{border-radius:0;border:1px solid var(--ink);min-height:46px;padding:12px 16px;font-size:14px;line-height:1.35;font-weight:700;transition:background .18s,color .18s,transform .18s;position:relative}\n#sa-shop .primary{background:var(--vermilion);color:var(--ink);border-color:var(--ink)}\n#sa-shop .primary:hover{background:var(--ink);color:var(--porcelain)}\n#sa-shop .outline{background:transparent;color:var(--ink);border-color:var(--ink)}\n#sa-shop .outline:hover{background:var(--mint);color:var(--ink)}\n#sa-shop .button>span{font-size:23px}\n#sa-shop .photo-caption{border-radius:0;background:var(--porcelain);color:var(--ink);font:10px\/1.45 'Courier New',monospace;padding:4px 7px}\n\n#sa-shop .studio-hero{display:grid;grid-template-columns:.9fr 1.1fr;gap:25px;position:relative;margin-block:20px 17px;background:var(--ink);color:var(--porcelain);padding:24px 24px 22px;min-height:408px;overflow:visible}\n#sa-shop .studio-hero:before{content:'';position:absolute;top:12px;left:12px;width:11px;height:11px;border-top:1px solid var(--mint);border-left:1px solid var(--mint)}\n#sa-shop .studio-hero:after{content:'';position:absolute;bottom:12px;right:12px;width:11px;height:11px;border-bottom:1px solid var(--mint);border-right:1px solid var(--mint)}\n#sa-shop .studio-copy{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;min-width:0;padding:5px 0 5px 5px}\n#sa-shop .studio-kicker{display:flex;align-items:center;gap:10px;color:var(--mint);font:700 11px\/1.4 'Courier New',monospace;letter-spacing:1px;text-transform:uppercase;margin-bottom:14px}\n#sa-shop .studio-kicker>span{border:1px solid #b4dfd088;padding:3px 6px;color:var(--porcelain);letter-spacing:0}\n#sa-shop .studio-copy h1{font:900 clamp(44px,5.4vw,70px)\/.95 'Arial Black',Arial,Helvetica,sans-serif;letter-spacing:-3.5px;margin:0 0 20px;color:var(--porcelain)}\n#sa-shop .studio-copy h1 .cut-headline{position:relative;display:inline-block;color:var(--ink);background:var(--vermilion);padding:4px 14px 10px 7px;margin-top:8px;margin-left:-7px;clip-path:polygon(0 0,100% 0,100% 72%,96% 100%,0 100%);transform:rotate(-1.7deg)}\n#sa-shop .studio-copy>p:not(.studio-kicker){font-size:15px;line-height:1.6;color:var(--porcelain);max-width:405px}\n#sa-shop .studio-copy .hero-actions{gap:14px;margin-top:19px}\n#sa-shop .studio-copy .button{border-color:var(--vermilion)}\n#sa-shop .studio-copy .button:hover{background:var(--mint);color:var(--ink);border-color:var(--mint)}\n#sa-shop .studio-text-link{font-size:13px;font-weight:700;color:var(--mint);text-decoration:underline;text-underline-offset:4px}\n#sa-shop .studio-smallprint{font:11px\/1.5 'Courier New',monospace;color:var(--mint);border-top:1px dashed #b4dfd055;padding-top:13px;margin-top:20px;width:100%;display:flex;justify-content:space-between;gap:10px}\n#sa-shop .studio-demo{min-width:0;position:relative;align-self:center;background:var(--porcelain);color:var(--ink);border:1px solid var(--porcelain);box-shadow:7px 7px 0 var(--mint);margin:0 8px 8px 0;transform:rotate(.6deg)}\n#sa-shop .studio-windowbar{display:flex;align-items:center;justify-content:space-between;gap:10px;font:10px\/1.5 'Courier New',monospace;padding:7px 10px;border-bottom:1px solid var(--ink);background:var(--porcelain)}\n#sa-shop .studio-windowbar .registration-mini{display:inline-flex;gap:4px;align-items:center;margin-right:8px;vertical-align:middle}\n#sa-shop .registration-mini i{display:block;width:7px;height:7px;background:var(--ink)}\n#sa-shop .registration-mini i:nth-child(2){background:var(--vermilion)}\n#sa-shop .registration-mini i:nth-child(3){background:var(--mint);border:1px solid var(--ink)}\n#sa-shop .sa-cut-preview{position:relative;height:245px;background:#4a4547;isolation:isolate;overflow:hidden}\n#sa-shop #sa-demo-photo{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:52% 51%;opacity:1}\n#sa-shop .sa-vinyl-sheet{position:absolute;left:14px;bottom:21px;width:calc(100% - 28px);max-width:440px;padding:12px 15px 18px;background:var(--sa-sheet-bg,var(--ink));color:var(--sa-sheet-ink,var(--porcelain));border:1px solid var(--porcelain);box-shadow:4px 4px 0 #211b2d5c;z-index:2;overflow:visible}\n#sa-shop .sa-vinyl-sheet:before,#sa-shop .sa-vinyl-sheet:after{content:'';position:absolute;width:10px;height:10px;border-color:var(--sa-sheet-ink,var(--mint));border-style:solid}\n#sa-shop .sa-vinyl-sheet:before{left:5px;top:5px;border-width:1px 0 0 1px}\n#sa-shop .sa-vinyl-sheet:after{right:5px;bottom:5px;border-width:0 1px 1px 0}\n#sa-shop .sa-vinyl-sheet>.studio-sheet-label{font:9px\/1.5 'Courier New',monospace;letter-spacing:1px;color:var(--sa-sheet-label,var(--mint));display:flex;justify-content:space-between;gap:10px;margin-bottom:7px}\n#sa-shop .sa-cut-word{display:block;position:relative;font:800 clamp(28px,3.35vw,44px)\/1 Arial,Helvetica,sans-serif;letter-spacing:-1px;text-align:center;white-space:nowrap;color:var(--sa-foil-color,#fffdf7);padding:6px 0 4px;isolation:isolate}\n#sa-shop .sa-cut-word .sa-letter{display:inline-block;position:relative}\n#sa-shop .studio-demo .photo-caption{left:auto;right:8px;top:9px;bottom:auto;background:var(--porcelain);font-size:9px}\n#sa-shop .studio-demo-controls{padding:10px 11px 11px;background:var(--porcelain);position:relative}\n#sa-shop .studio-demo-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}\n#sa-shop .studio-demo-heading strong{font-size:13px;line-height:1.3}\n#sa-shop .studio-demo-heading .studio-surface-switch{display:flex;gap:0;border:1px solid var(--ink)}\n#sa-shop .studio-surface-switch button{min-height:30px;padding:5px 9px;background:transparent;color:var(--ink);border:0;font-size:11px;line-height:1.3;white-space:nowrap}\n#sa-shop .studio-surface-switch button[aria-pressed=true]{background:var(--ink);color:var(--porcelain)}\n#sa-shop .studio-demo-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}\n#sa-shop .studio-demo-actions .button{padding:9px 12px;min-height:40px;font-size:12px}\n#sa-shop .studio-demo-actions .button>span{font-size:18px}\n#sa-shop .studio-color-button{background:transparent;border:0;padding:10px 3px;font-size:12px;font-weight:700;text-decoration:underline;text-underline-offset:3px;min-height:40px}\n#sa-shop .sa-cut-stages{display:flex;list-style:none;padding:0;margin:8px 0 0;gap:9px;font:9px\/1.4 'Courier New',monospace;color:var(--muted)}\n#sa-shop .sa-cut-stages li{display:flex;gap:4px;align-items:center}\n#sa-shop .sa-cut-stages li:before{content:attr(data-cut-stage);background:var(--porcelain);color:var(--ink);border:1px solid var(--line);width:15px;height:15px;display:grid;place-items:center}\n#sa-shop .sa-cut-stages li.is-current{color:var(--ink);font-weight:700}\n#sa-shop .sa-cut-stages li.is-current:before{background:var(--mint);border-color:var(--ink)}\n#sa-shop #sa-cut-status{font-size:11px;line-height:1.45;color:var(--muted);margin-top:6px;min-height:16px}\n#sa-shop .studio-note{position:absolute;right:0;bottom:calc(100% + 9px);width:270px;max-width:100%;padding:15px;background:var(--mint);border:1px solid var(--ink);box-shadow:4px 4px 0 var(--ink);z-index:20;color:var(--ink);text-align:left;transform:rotate(-1.5deg)}\n#sa-shop .studio-note h3{font-size:17px;line-height:1.25;margin-right:22px;margin-bottom:8px}\n#sa-shop .studio-note p{font-size:12px;line-height:1.5;margin-bottom:11px}\n#sa-shop .studio-note [data-note-close]{position:absolute;top:5px;right:5px;border:0;background:transparent;width:32px;height:32px;font-size:24px;line-height:1}\n#sa-shop .studio-swatches{display:flex;gap:7px}\n#sa-shop .studio-swatches button{min-height:36px;min-width:36px;padding:4px;border:1px solid var(--ink);background:var(--porcelain);display:grid;place-items:center}\n#sa-shop .studio-swatches button>i{width:22px;height:22px;border:1px solid #211b2d77;background:var(--swatch)}\n#sa-shop .studio-swatches button[aria-pressed=true]{outline:2px solid var(--ink);outline-offset:2px}\n\n#sa-shop .offer-grid{gap:11px}\n#sa-shop .offer-card{border:1px solid var(--ink);border-radius:0;background:var(--porcelain);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%);min-height:109px}\n#sa-shop .offer-card:nth-child(2){background:var(--mint)}\n#sa-shop .offer-card:nth-child(4){background:var(--vermilion)}\n#sa-shop .offer-card .offer-price{color:var(--ink);font:800 29px\/1 Arial,Helvetica,sans-serif;letter-spacing:-1px}\n#sa-shop .offer-card .offer-detail{color:var(--ink);opacity:.85}\n#sa-shop .offer-card:hover{background:var(--mint);border-color:var(--ink)}\n#sa-shop .trust-row{font:11px\/1.6 'Courier New',monospace;padding-block:15px;border-bottom:1px dashed var(--ink)}\n#sa-shop .trust-row span:before{content:'+';color:var(--ink);font-weight:700;margin-right:8px}\n#sa-shop h2{font:800 31px\/1.12 Arial,Helvetica,sans-serif;letter-spacing:-1px}\n#sa-shop .section-heading{align-items:flex-end;margin-bottom:20px}\n#sa-shop .section-heading>.overline,#sa-shop .section-heading .overline{color:var(--muted)}\n#sa-shop .filters button{border:1px solid var(--ink);border-radius:0;background:transparent;min-height:42px;font-size:13px}\n#sa-shop .filters button.active{background:var(--ink);color:var(--porcelain);border-color:var(--ink)}\n#sa-shop .product-grid{gap:18px}\n#sa-shop .product{border:1px solid var(--ink);border-radius:0;background:var(--white);position:relative;box-shadow:none}\n#sa-shop .product:hover{border-color:var(--ink);box-shadow:4px 4px 0 var(--mint)}\n#sa-shop .product-image{height:225px;border-bottom:1px solid var(--ink);background:#d9d5ce}\n#sa-shop .product-image img{display:block;opacity:1}\n#sa-shop .product-tag{border-radius:0;background:var(--porcelain);color:var(--ink);border:1px solid var(--ink);font:700 10px\/1.45 'Courier New',monospace;padding:5px 7px;clip-path:polygon(0 0,100% 0,100% 77%,94% 100%,0 100%)}\n#sa-shop .product-info{padding:18px}\n#sa-shop .product-type{font:700 10px\/1.5 'Courier New',monospace;letter-spacing:.7px;color:var(--muted);margin-bottom:6px}\n#sa-shop .product-info h3{font-size:22px;line-height:1.2;letter-spacing:-.6px;margin-bottom:10px}\n#sa-shop .product-desc{font-size:15px;line-height:1.6;color:var(--muted);min-height:74px}\n#sa-shop .product-facts{font-size:13px;line-height:1.55}\n#sa-shop .product-facts li{border-top:1px dashed var(--line);padding:6px 0}\n#sa-shop .product-options>span{border-radius:0;background:var(--porcelain);font-size:10px;line-height:1.4;padding:4px 6px}\n#sa-shop .price-row{padding-block:11px 15px;align-items:center}\n#sa-shop .price-row strong{font-size:34px;letter-spacing:-1px;color:var(--ink);position:relative;padding:5px 13px 5px 9px;background:var(--mint);clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%)}\n#sa-shop .price-row strong small{font-size:14px}\n#sa-shop .price-row .quote-price{font-size:28px}\n#sa-shop .price-row>span{font:11px\/1.5 'Courier New',monospace;color:var(--ink)}\n#sa-shop .product-info>.button{padding:12px 13px;background:var(--ink);color:var(--porcelain);font-size:13px}\n#sa-shop .product-info>.button:hover{background:var(--vermilion);color:var(--ink)}\n#sa-shop .product[data-product=custom]{background:var(--mint)}\n#sa-shop .product[data-product=custom] .product-image{border-bottom:0;border-right:1px solid var(--ink)}\n#sa-shop .product[data-product=custom] .product-info{padding:25px}\n#sa-shop .product[data-product=custom] .product-info>.button{background:var(--ink);color:var(--porcelain)}\n#sa-shop .product[data-product=custom] .price-row strong{background:var(--porcelain)}\n#sa-shop .catalog-note{border-radius:0;border:1px dashed var(--ink);background:transparent;font-size:12px;padding:14px 17px}\n#sa-shop .category-section{background:var(--ink);color:var(--porcelain);border:0}\n#sa-shop .category-section .overline{color:var(--mint)}\n#sa-shop .category-cards>a{border:1px solid var(--porcelain);border-radius:0;background:var(--porcelain);color:var(--ink)}\n#sa-shop .category-cards div>span{color:var(--muted)}\n#sa-shop .category-cards div:after{color:var(--ink)}\n#sa-shop .installation-photo{border-radius:0;border:1px solid var(--ink);box-shadow:7px 7px 0 var(--mint)}\n#sa-shop .installation-section{gap:35px}\n#sa-shop .install-price>strong{background:var(--vermilion);color:var(--ink);padding:6px 11px;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%)}\n#sa-shop .steps-section{background:var(--mint);border-block:1px solid var(--ink)}\n#sa-shop .steps{gap:28px}\n#sa-shop .steps li>span{border-radius:0;background:var(--ink);color:var(--mint);font:700 14px\/1 'Courier New',monospace}\n#sa-shop .steps h3{font-size:18px;letter-spacing:-.3px}\n#sa-shop .steps p{color:var(--ink)}\n#sa-shop .gallery-photo{border-radius:0;border:1px solid var(--ink);height:180px}\n#sa-shop .gallery-grid figure:nth-child(2) .gallery-photo{box-shadow:5px 5px 0 var(--vermilion)}\n#sa-shop .gallery-grid figure:nth-child(4) .gallery-photo{box-shadow:5px 5px 0 var(--mint)}\n#sa-shop .gallery-grid figcaption{font-size:14px}\n#sa-shop .faq-layout{border-top:1px solid var(--ink);gap:40px}\n#sa-shop .faq details{border-bottom:1px dashed var(--ink)}\n#sa-shop .faq summary>span{color:var(--ink)}\n#sa-shop .custom-cta{background:var(--ink);color:var(--porcelain);border-radius:0;border:1px solid var(--ink);position:relative;padding:26px;margin-bottom:22px}\n#sa-shop .custom-cta:after{content:'\u2733';color:var(--mint);font-size:40px;position:absolute;right:19px;top:-25px;line-height:1}\n#sa-shop .custom-cta .overline{color:var(--mint)}\n#sa-shop .custom-cta p:not(.overline){color:var(--porcelain)}\n#sa-shop .custom-cta .button{background:var(--vermilion);color:var(--ink)}\n#sa-shop .custom-cta .button:hover{background:var(--mint)}\n#sa-shop .footer{background:var(--ink);color:var(--porcelain);border-top:4px solid var(--vermilion)}\n#sa-shop .footer .brand-mark{background:var(--vermilion)}\n#sa-shop .footer .brand-mark path{fill:var(--ink)}\n#sa-shop .footer .wordmark>span{color:var(--mint)}\n#sa-shop .footer small{color:#cac3d1;border-color:#8a829455}\n#sa-shop dialog{background:var(--white);border:1px solid var(--ink);border-radius:0;color:var(--ink)}\n#sa-shop dialog::backdrop{background:#211b2dad}\n#sa-shop .close-dialog{background:var(--mint);border-radius:0}\n#sa-shop .detail-preview{background:var(--porcelain)}\n#sa-shop .live-preview{border-radius:0;background:var(--mint);border-color:var(--ink);color:var(--ink)}\n#sa-shop .live-preview.white-lettering{background:var(--ink);color:var(--porcelain)}\n#sa-shop .field input,#sa-shop .field textarea,#sa-shop .field select,#sa-shop .scope-note{border-radius:0}\n#sa-shop .quote-summary,#sa-shop .scope-note{background:var(--porcelain)}\n#sa-shop .toast{border-radius:0;background:var(--ink);color:var(--porcelain);border:1px solid var(--mint)}\n\n@media(max-width:1050px){\n#sa-shop .studio-hero{grid-template-columns:1fr 1.1fr;gap:18px;padding:20px;min-height:390px}\n#sa-shop .studio-copy h1{font-size:55px;letter-spacing:-2.8px}\n#sa-shop .studio-copy>p:not(.studio-kicker){font-size:14px;line-height:1.6}\n#sa-shop .studio-smallprint{font-size:10px;display:block}\n#sa-shop .studio-smallprint>span{display:block}\n#sa-shop .studio-kicker{font-size:10px;gap:6px;letter-spacing:.5px}\n#sa-shop .sa-cut-preview{height:230px}\n#sa-shop .studio-demo-heading{gap:7px}\n#sa-shop .studio-demo-heading strong{font-size:12px}\n#sa-shop .studio-surface-switch button{font-size:10px;padding-inline:6px}\n#sa-shop .sa-cut-word{font-size:33px}\n#sa-shop .product-desc{font-size:15px;min-height:96px}\n}\n@media(max-width:800px){\n#sa-shop .wrap{width:calc(100% - 32px)}\n#sa-shop .studio-hero{grid-template-columns:1fr 1.1fr;gap:14px;padding:19px;min-height:385px;margin-top:16px}\n#sa-shop .studio-copy h1{font-size:46px;letter-spacing:-2.2px}\n#sa-shop .studio-copy>p:not(.studio-kicker){font-size:14px}\n#sa-shop .studio-kicker{flex-wrap:wrap;gap:6px;margin-bottom:13px}\n#sa-shop .studio-copy .hero-actions{margin-top:15px;gap:9px}\n#sa-shop .studio-copy .button{font-size:12px;padding:11px 12px}\n#sa-shop .studio-text-link{font-size:11px}\n#sa-shop .studio-smallprint{margin-top:15px;padding-top:10px}\n#sa-shop .studio-demo{box-shadow:5px 5px 0 var(--mint);margin-right:5px}\n#sa-shop .sa-cut-preview{height:240px}\n#sa-shop .sa-vinyl-sheet{left:9px;bottom:21px;width:calc(100% - 18px);padding:11px 10px 15px}\n#sa-shop .sa-cut-word{font-size:28px;letter-spacing:-.7px}\n#sa-shop .studio-demo-heading{display:block}\n#sa-shop .studio-demo-heading strong{display:block;margin-bottom:6px}\n#sa-shop .studio-demo-heading .studio-surface-switch{display:inline-flex}\n#sa-shop .studio-demo-controls{padding:9px}\n#sa-shop .studio-demo-actions{gap:5px}\n#sa-shop .studio-demo-actions .button{font-size:11px;padding:9px 8px;gap:5px}\n#sa-shop .studio-color-button{font-size:11px}\n#sa-shop .sa-cut-stages{gap:6px;font-size:8px}\n#sa-shop #sa-cut-status{font-size:10px}\n#sa-shop .product[data-product=custom] .product-info{padding:22px}\n#sa-shop .category-section h2{font-size:28px}\n#sa-shop .installation-section{gap:25px}\n#sa-shop .gallery-photo{height:200px}\n}\n@media(max-width:600px){\n#sa-shop .studio-hero{grid-template-columns:1fr;gap:20px;padding:20px;margin-block:14px 15px;min-height:0}\n#sa-shop .studio-copy{padding:4px 0 0}\n#sa-shop .studio-copy h1{font-size:clamp(43px,11vw,60px);letter-spacing:-2.5px;max-width:none;margin-bottom:15px}\n#sa-shop .studio-copy>p:not(.studio-kicker){font-size:15px;max-width:none;line-height:1.6}\n#sa-shop .studio-kicker{font-size:10px;margin-bottom:14px}\n#sa-shop .studio-copy .hero-actions{margin-top:16px;gap:15px}\n#sa-shop .studio-copy .button{font-size:13px;padding:12px 14px}\n#sa-shop .studio-text-link{font-size:12px}\n#sa-shop .studio-smallprint{display:flex;font-size:10px;padding-top:10px;margin-top:15px}\n#sa-shop .studio-smallprint>span{display:inline}\n#sa-shop .studio-demo{width:calc(100% - 5px);transform:rotate(.4deg);margin:0 5px 6px 0}\n#sa-shop .sa-cut-preview{height:235px}\n#sa-shop .sa-vinyl-sheet{left:12px;bottom:25px;width:calc(100% - 24px);padding:13px 13px 19px}\n#sa-shop .sa-cut-word{font-size:clamp(27px,8vw,39px)}\n#sa-shop .studio-demo-heading{display:flex}\n#sa-shop .studio-demo-heading strong{font-size:12px;max-width:160px;margin:0}\n#sa-shop .studio-surface-switch button{font-size:10px;padding:7px;min-height:36px}\n#sa-shop .studio-demo-controls{padding:11px}\n#sa-shop .studio-demo-actions{gap:10px;margin-top:10px}\n#sa-shop .studio-demo-actions .button{min-height:44px;font-size:12px;padding:10px 12px;gap:14px}\n#sa-shop .studio-color-button{min-height:44px;font-size:12px}\n#sa-shop .sa-cut-stages{font-size:9px;gap:12px;margin-top:10px}\n#sa-shop #sa-cut-status{font-size:11px;margin-top:7px}\n}\n@media(max-width:540px){\n#sa-shop .wrap{width:calc(100% - 24px)}\n#sa-shop .shop-header{padding-block:14px;gap:12px}\n#sa-shop .brand-mark{width:34px;height:34px}\n#sa-shop .logo{font-size:26px;gap:7px}\n#sa-shop .list-button{padding:8px 9px;font-size:11px;min-height:44px}\n#sa-shop .list-button>span{width:21px;height:21px}\n#sa-shop .catalog-search{margin-top:3px;min-height:44px}\n#sa-shop .category-nav a{font-size:13px;min-height:40px}\n#sa-shop .category-nav>.wrap{padding-block:3px}\n#sa-shop .section{padding-block:26px}\n#sa-shop .offer-card{min-height:109px;grid-template-columns:52px 1fr}\n#sa-shop .offer-card img{width:52px}\n#sa-shop .offer-card .offer-price{font-size:26px}\n#sa-shop .offer-card .offer-detail{font-size:10px}\n#sa-shop .trust-row{font-size:10px;gap:8px}\n#sa-shop h2{font-size:28px;letter-spacing:-.8px}\n#sa-shop .product-image{height:230px}\n#sa-shop .product-desc{min-height:0;font-size:15px}\n#sa-shop .product-info{padding:18px}\n#sa-shop .product-info h3{font-size:23px}\n#sa-shop .product-info>.button{font-size:14px;min-height:46px}\n#sa-shop .product-facts{font-size:14px}\n#sa-shop .price-row strong{font-size:34px}\n#sa-shop .price-row>span{font-size:11px}\n#sa-shop .product[data-product=custom] .product-image{border-right:0;border-bottom:1px solid var(--ink)}\n#sa-shop .product[data-product=custom] .product-info{padding:18px}\n#sa-shop .installation-section{gap:24px}\n#sa-shop .installation-photo{box-shadow:5px 5px 0 var(--mint)}\n#sa-shop .gallery-photo{height:135px}\n#sa-shop .gallery-grid figure:nth-child(2) .gallery-photo,#sa-shop .gallery-grid figure:nth-child(4) .gallery-photo{box-shadow:3px 3px 0 var(--mint)}\n#sa-shop .custom-cta{padding:22px}\n#sa-shop .custom-cta .button{width:100%}\n}\n@media(prefers-reduced-motion:reduce){#sa-shop{scroll-behavior:auto}#sa-shop .studio-demo,#sa-shop .studio-copy h1 .cut-headline{transform:none}#sa-shop *{animation:none!important;transition:none!important}}\n\n\/* Demo controls are readable touch targets at every breakpoint. *\/\n#sa-shop .studio-surface-switch button{font-size:12px;min-height:44px;padding:7px 9px}\n#sa-shop .studio-demo-actions .button{font-size:12px;min-height:44px;padding:10px 12px}\n#sa-shop .studio-color-button{font-size:12px;min-height:44px}\n#sa-shop .sa-cut-stages{font-size:11px;line-height:1.45;gap:7px 11px;flex-wrap:wrap}\n#sa-shop .sa-cut-stages li:before{width:18px;height:18px}\n#sa-shop #sa-cut-status{font-size:11px;line-height:1.55;min-height:18px}\n#sa-shop .studio-swatches button{min-height:44px;min-width:44px}\n#sa-shop .studio-demo-heading strong{font-size:13px;line-height:1.35}\n@media(max-width:1050px){#sa-shop .studio-demo-heading{display:block}#sa-shop .studio-demo-heading strong{display:block;margin-bottom:8px}#sa-shop .studio-demo-heading .studio-surface-switch{display:inline-flex}#sa-shop .sa-cut-preview{height:215px}}\n@media(max-width:600px){#sa-shop .studio-demo-heading{display:flex}#sa-shop .studio-demo-heading strong{margin:0;max-width:160px}#sa-shop .sa-cut-preview{height:230px}}\n@media(max-width:400px){#sa-shop .studio-demo-heading{display:block}#sa-shop .studio-demo-heading strong{margin-bottom:8px;max-width:none}#sa-shop .studio-demo-actions{gap:8px}#sa-shop .studio-demo-actions .button{font-size:12px;padding-inline:10px}#sa-shop .studio-color-button{font-size:11px}}\n\n\/* Motion layer. All content is visible by default; no image-load gates. *\/\n#sa-shop #sa-vinyl-letters,\n#sa-shop .sa-cut-word {\n  position: relative;\n  color: var(--sa-foil-color, #fff);\n  white-space: nowrap;\n  isolation: isolate;\n}\n#sa-shop #sa-vinyl-preview { color: var(--sa-foil-color, #fff); }\n#sa-shop .sa-letter { display: inline-block; transform-origin: 50% 80%; }\n#sa-shop .sa-letter-space { display: inline-block; width: .3em; }\n#sa-shop .is-cutting .sa-letter { will-change: transform, opacity; }\n#sa-shop .sa-cut-word::before,\n#sa-shop .sa-cut-word::after {\n  content: \"\";\n  position: absolute;\n  z-index: 2;\n  pointer-events: none;\n  opacity: 0;\n}\n#sa-shop .sa-cut-word::before {\n  inset: -.16em -.08em;\n  border: 1px solid currentColor;\n  border-radius: 2px;\n  transform: scaleX(.04);\n  transform-origin: left center;\n}\n#sa-shop .sa-cut-word::after {\n  left: -.08em;\n  top: -.16em;\n  height: calc(100% + .32em);\n  width: calc(100% + .16em);\n  background: linear-gradient(90deg, currentColor 0 1px, transparent 1px);\n  transform-origin: center;\n}\n#sa-shop .is-cutting .sa-cut-word::before { animation: sa-cut-sheet 1.59s ease-in-out both; }\n#sa-shop .is-cutting .sa-cut-word::after { animation: sa-cut-tool .66s .18s cubic-bezier(.3,.7,.3,1) both; }\n#sa-shop [data-cut-stage] { transition: color .18s ease, border-color .18s ease, background-color .18s ease; }\n#sa-shop [data-cut-stage].is-current {\n  color: var(--studio-accent, var(--accent, #cc2c2c));\n  border-color: currentColor;\n}\n#sa-shop #sa-cut-run[aria-disabled=\"true\"] { cursor: progress; }\n#sa-shop #sa-cut-run.is-working { box-shadow: inset 0 0 0 1px currentColor; }\n#sa-shop [data-studio-note][hidden],\n#sa-shop #sa-studio-note[hidden] { display: none !important; }\n#sa-shop [data-foil-color] { position: relative; }\n#sa-shop [data-foil-color][aria-pressed=\"true\"]::after {\n  content: \"\";\n  position: absolute;\n  inset: -5px;\n  border: 1px solid currentColor;\n  border-radius: inherit;\n  pointer-events: none;\n}\n#sa-shop .button,\n#sa-shop #sa-cut-run,\n#sa-shop [data-color-toggle] { transition: transform .2s ease, background-color .2s ease, color .2s ease, box-shadow .2s ease; }\n@media (hover: hover) and (pointer: fine) {\n  #sa-shop #sa-cut-run:not([aria-disabled=\"true\"]):hover { transform: rotate(-1.2deg) translateY(-2px); }\n  #sa-shop [data-color-toggle]:hover { transform: translateY(-2px); }\n}\n@keyframes sa-cut-sheet {\n  0%, 7% { opacity: 0; transform: scaleX(.04) translateY(0); }\n  17% { opacity: .8; transform: scaleX(1) translateY(0); }\n  38% { opacity: .8; transform: scaleX(1) translateY(0); }\n  66% { opacity: .1; transform: scaleX(1) translateY(-.38em); }\n  100% { opacity: 0; transform: scaleX(1) translateY(-.6em); }\n}\n@keyframes sa-cut-tool {\n  0% { opacity: 0; transform: translate3d(0,0,0); }\n  12% { opacity: .9; }\n  82% { opacity: .9; }\n  100% { opacity: 0; transform: translate3d(100%,0,0); }\n}\n@media (prefers-reduced-motion: reduce) {\n  #sa-shop .sa-cut-word::before,\n  #sa-shop .sa-cut-word::after { animation: none !important; }\n  #sa-shop .sa-letter { transform: none !important; opacity: 1 !important; }\n  #sa-shop .button,\n  #sa-shop #sa-cut-run,\n  #sa-shop [data-color-toggle],\n  #sa-shop [data-cut-stage] { transition: none !important; }\n  #sa-shop #sa-cut-run:hover,\n  #sa-shop [data-color-toggle]:hover { transform: none !important; }\n}\n\n\n\/* Calmer workshop: a single offer path and an optional demonstration. *\/\n#sa-shop .studio-demo{transform:none;box-shadow:3px 3px 0 var(--mint);margin-right:3px}\n#sa-shop .studio-demo-controls{padding:0}\n#sa-shop .studio-demo-options>summary{display:flex;align-items:center;justify-content:space-between;gap:14px;list-style:none;cursor:pointer;padding:13px 15px;min-height:48px;font-size:13px;line-height:1.5;font-weight:700;color:var(--ink)}\n#sa-shop .studio-demo-options>summary::-webkit-details-marker{display:none}\n#sa-shop .studio-demo-options>summary>span{font-size:22px;line-height:1;flex:none}\n#sa-shop .studio-demo-options[open]>summary{border-bottom:1px solid var(--line)}\n#sa-shop .studio-demo-options[open]>summary>span{transform:rotate(45deg)}\n#sa-shop .studio-demo-options>summary:hover{background:#e9e4db}\n#sa-shop .studio-demo-options>summary:focus-visible{outline:2px solid var(--ink);outline-offset:-4px}\n#sa-shop .studio-demo-settings{padding:13px 15px 15px}\n#sa-shop .studio-demo-actions .button.outline{background:transparent;color:var(--ink);border-color:var(--ink)}\n#sa-shop .studio-demo-actions .button.outline:hover{background:var(--ink);color:var(--porcelain)}\n#sa-shop .studio-windowbar{border-bottom-color:var(--line)}\n#sa-shop .trust-row{border-bottom:1px solid var(--line);font:13px\/1.6 Arial,Helvetica,sans-serif;padding-block:18px}\n#sa-shop .trust-row span:before{display:none}\n#sa-shop .catalog{padding-top:36px}\n#sa-shop .product-grid{gap:24px}\n#sa-shop .product{border-color:var(--line)}\n#sa-shop .product-image{border-bottom-color:var(--line)}\n#sa-shop .product-info{padding:21px}\n#sa-shop .product-facts li{border-top-style:solid}\n#sa-shop .steps-section{background:var(--porcelain);border-block:1px solid var(--line)}\n#sa-shop .gallery-grid figure:nth-child(2) .gallery-photo,#sa-shop .gallery-grid figure:nth-child(4) .gallery-photo{box-shadow:none}\n@media(max-width:800px){#sa-shop .product-grid{gap:18px}}\n@media(max-width:600px){#sa-shop .studio-demo{width:calc(100% - 3px);margin:0 3px 3px 0;transform:none}#sa-shop .studio-demo-controls{padding:0}#sa-shop .studio-demo-settings{padding:12px}#sa-shop .catalog{padding-top:27px}#sa-shop .product-info{padding:18px}#sa-shop .trust-row{font-size:12px}}\n<\/style>\n<div id=\"sa-shop\">\n<a href=\"#katalog\" class=\"skip-link\">Przejd\u017a do katalogu<\/a>\n<div class=\"utility-bar\"><div class=\"wrap\"><span>Naklejki z Twoj\u0105 tre\u015bci\u0105 \u2014 projekt zatwierdzasz przed wyci\u0119ciem<\/span><span>Wysy\u0142ka: ca\u0142a Polska <span aria-hidden=\"true\">\u00b7<\/span> Monta\u017c: Wroc\u0142aw<\/span><\/div><\/div>\n<div class=\"header-background\"><header class=\"shop-header wrap\"><a class=\"logo\" href=\"https:\/\/szablon-art.pl\/\" aria-label=\"SzablonArt, strona g\u0142\u00f3wna\"><svg class=\"brand-mark\" viewBox=\"0 0 64 64\" aria-hidden=\"true\"><path d=\"M46 12H28c-9 0-14 5-14 12 0 8 6 11 14 11h6c4 0 6 2 6 5s-2 5-6 5H16v8h18c10 0 16-5 16-13 0-9-6-13-15-13h-7c-3 0-5-1-5-4s2-4 6-4h17z\" fill=\"#fff\"\/><\/svg><span class=\"wordmark\">szablon<span>art<\/span><\/span><\/a><form id=\"search-form\" role=\"search\" class=\"catalog-search\"><label class=\"sr-only\" for=\"search\">Szukaj naklejki w katalogu<\/label><span aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"18\" height=\"18\"><circle cx=\"10\" cy=\"10\" r=\"6\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"m15 15 5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\"\/><\/svg><\/span><input id=\"search\" type=\"search\" placeholder=\"Szukaj: godziny, logo, napis\u2026\" autocomplete=\"off\"><button type=\"submit\">Szukaj<\/button><\/form><a class=\"header-contact\" href=\"mailto:szablonart@gmail.com\"><strong>Masz pytanie? Napisz<\/strong>szablonart@gmail.com<\/a><button id=\"open-list\" class=\"list-button\" type=\"button\" disabled><svg viewBox=\"0 0 24 24\" width=\"21\" height=\"21\" aria-hidden=\"true\"><path d=\"M8 5H5v16h14V5h-3M8 3h8v4H8zM8 11h8M8 15h8\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\"\/><\/svg>Lista do wyceny <span id=\"list-count\">0<\/span><\/button><\/header><\/div>\n<nav class=\"category-nav\" aria-label=\"Kategorie\"><div class=\"wrap\"><a href=\"#katalog\" data-nav-category=\"hours\">Godziny otwarcia<\/a><a href=\"#katalog\" data-nav-category=\"shop\">Logo i witryny<\/a><a href=\"#katalog\" data-nav-category=\"car\">Napisy na auto<\/a><a href=\"#katalog\" data-nav-category=\"custom\">W\u0142asny napis<\/a><a href=\"#galeria\">Galeria<\/a><a href=\"#montaz\">Monta\u017c<\/a><a href=\"#jak-zamowic\" class=\"nav-help\">Jak zam\u00f3wi\u0107?<\/a><\/div><\/nav>\n<main id=\"main\">\n<section class=\"studio-hero wrap\" aria-label=\"Szablon-Art \u2014 pracownia napis\u00f3w z folii\">\n  <div class=\"studio-copy\">\n    <p class=\"studio-kicker\"><span>Szablon-Art<\/span> Pracownia wycinanych liter<\/p>\n    <h1>Daj si\u0119<br><span class=\"cut-headline\">zauwa\u017cy\u0107.<\/span><\/h1>\n    <p>Twoje logo na szybie. Telefon na aucie. Godziny na drzwiach. Wycinam napisy z folii, kt\u00f3re robi\u0105 swoje \u2014 pokazuj\u0105 klientom, gdzie Ci\u0119 znale\u017a\u0107.<\/p>\n    <div class=\"hero-actions\"><a class=\"button primary\" href=\"#katalog\">Wybierz sw\u00f3j napis <span aria-hidden=\"true\">\u2197<\/span><\/a><\/div>\n    <div class=\"studio-smallprint\"><span>Twoja tre\u015b\u0107. Tw\u00f3j kolor.<\/span><span>Projekt zatwierdzasz przed ci\u0119ciem.<\/span><\/div>\n  <\/div>\n  <figure id=\"sa-cut-demo\" class=\"studio-demo sa-cut-demo\" data-surface=\"glass\">\n    <div class=\"studio-windowbar\"><span><span class=\"registration-mini\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/span> PODGL\u0104D \/ TW\u00d3J NAPIS<\/span><span aria-hidden=\"true\">01 \u2014 FOLIA<\/span><\/div>\n    <div id=\"sa-demo-stage\" class=\"sa-cut-preview\">\n      <img id=\"sa-demo-photo\" src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/storefront-web.webp\" alt=\"Przyk\u0142adowe napisy z folii na witrynie i drzwiach lokalu\" width=\"1400\" height=\"1050\" fetchpriority=\"high\" decoding=\"async\">\n      <span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span>\n      <div id=\"sa-vinyl-preview\" class=\"sa-vinyl-sheet\"><div class=\"studio-sheet-label\"><span>PODGL\u0104D NAPISU<\/span><span>BEZ T\u0141A<\/span><\/div><span id=\"sa-vinyl-letters\" class=\"sa-cut-word\" data-cut-text=\"TWOJA FIRMA\">TWOJA FIRMA<\/span><\/div>\n    <\/div>\n    <figcaption class=\"studio-demo-controls\"><details class=\"studio-demo-options\"><summary>Zobacz efekt wycinania i kolory <span aria-hidden=\"true\">+<\/span><\/summary><div class=\"studio-demo-settings\">\n      <div class=\"studio-demo-heading\"><strong>Zobacz, jak powstaje Tw\u00f3j napis<\/strong><div class=\"studio-surface-switch\" aria-label=\"Miejsce naklejenia\"><button type=\"button\" data-sa-surface=\"glass\" data-sa-image=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/storefront-web.webp\" data-sa-alt=\"Przyk\u0142adowe napisy z folii na witrynie i drzwiach lokalu\" aria-pressed=\"true\">Na szybie<\/button><button type=\"button\" data-sa-surface=\"car\" data-sa-image=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/van-web.webp\" data-sa-alt=\"Przyk\u0142adowe logo i napis kontaktowy na samochodzie dostawczym\" aria-pressed=\"false\">Na aucie<\/button><\/div><\/div>\n      <div class=\"studio-demo-actions\"><button id=\"sa-cut-run\" type=\"button\" class=\"button outline\" data-cut-trigger>Wytnij napis <span aria-hidden=\"true\">\u2733<\/span><\/button><button id=\"sa-color-toggle\" type=\"button\" class=\"studio-color-button\" data-color-toggle aria-expanded=\"false\" aria-controls=\"sa-studio-note\">Dobierz kolor folii \u2197<\/button><\/div>\n      <ol class=\"sa-cut-stages\" aria-label=\"Etapy pracy\"><li data-cut-stage=\"1\" class=\"is-current\" aria-current=\"step\">Projekt<\/li><li data-cut-stage=\"2\">Ci\u0119cie<\/li><li data-cut-stage=\"3\">Gotowy napis<\/li><\/ol>\n      <p id=\"sa-cut-status\" aria-live=\"polite\">Kr\u00f3tki podgl\u0105d efektu. Gotowy uk\u0142ad zatwierdzisz przed realizacj\u0105.<\/p>\n      <aside id=\"sa-studio-note\" class=\"studio-note\" data-studio-note aria-label=\"Pr\u00f3bnik koloru folii\" hidden>\n        <button type=\"button\" data-note-close aria-label=\"Zamknij pr\u00f3bnik koloru\">\u00d7<\/button><h3>Przymierz kolor.<\/h3><p class=\"studio-selected-color\">W podgl\u0105dzie: <strong data-selected-color>Bia\u0142a<\/strong><\/p><p>To podgl\u0105d na ekranie. Dost\u0119pno\u015b\u0107 i odcie\u0144 folii potwierdz\u0119 przy zam\u00f3wieniu.<\/p>\n        <div class=\"studio-swatches\" aria-label=\"Kolor podgl\u0105du\"><button type=\"button\" data-foil-color=\"#fffdf7\" data-color-name=\"Bia\u0142a\" aria-label=\"Bia\u0142a folia\" aria-pressed=\"true\" style=\"--swatch:#fffdf7\"><i aria-hidden=\"true\"><\/i><\/button><button type=\"button\" data-foil-color=\"#211b2d\" data-color-name=\"Czarna\" aria-label=\"Czarna folia\" aria-pressed=\"false\" style=\"--swatch:#211b2d\"><i aria-hidden=\"true\"><\/i><\/button><button type=\"button\" data-foil-color=\"#ff583f\" data-color-name=\"Czerwona\" aria-label=\"Czerwona folia\" aria-pressed=\"false\" style=\"--swatch:#ff583f\"><i aria-hidden=\"true\"><\/i><\/button><button type=\"button\" data-foil-color=\"#b4dfd0\" data-color-name=\"Mi\u0119towa\" aria-label=\"Mi\u0119towa folia\" aria-pressed=\"false\" style=\"--swatch:#b4dfd0\"><i aria-hidden=\"true\"><\/i><\/button><\/div>\n      <\/aside>\n    <\/div><\/details><\/figcaption>\n  <\/figure>\n<\/section>\n\n\n<div class=\"trust-row wrap\"><span><strong>Twoja tre\u015b\u0107 i kolor<\/strong><\/span><span><strong>Projekt do akceptacji<\/strong><\/span><span><strong>Folia transportowa i instrukcja<\/strong><\/span><span><strong>Wysy\u0142ka lub monta\u017c<\/strong><\/span><\/div>\n<section id=\"katalog\" class=\"catalog wrap section\"><div class=\"section-heading\"><div><p class=\"overline\">Wybierz swoj\u0105 naklejk\u0119<\/p><h2>Konkretne produkty. Czytelne ceny.<\/h2><\/div><p>Wpisz tre\u015b\u0107 i wybierz kolor. Do logo przygotuj gotowy plik do ci\u0119cia. Pe\u0142ny koszt potwierdz\u0119 przed realizacj\u0105.<\/p><\/div><div class=\"catalog-controls\"><div class=\"filters\" aria-label=\"Filtruj produkty\"><button type=\"button\" class=\"active\" data-filter=\"all\" aria-pressed=\"true\">Wszystkie<\/button><button type=\"button\" data-filter=\"hours\" aria-pressed=\"false\">Godziny<\/button><button type=\"button\" data-filter=\"shop\" aria-pressed=\"false\">Na witryn\u0119<\/button><button type=\"button\" data-filter=\"car\" aria-pressed=\"false\">Na auto<\/button><button type=\"button\" data-filter=\"custom\" aria-pressed=\"false\">W\u0142asny napis<\/button><\/div><p id=\"result-count\" aria-live=\"polite\">7 produkt\u00f3w<\/p><\/div><div class=\"product-grid\" id=\"product-grid\"><article class=\"product\" data-product=\"hours\" data-category=\"hours\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/storefront-web.webp\" alt=\"Przyk\u0142adowe godziny otwarcia z bia\u0142ej folii na szklanych drzwiach\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">Twoje dni i godziny<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Na drzwi i witryn\u0119<\/p><h3>Godziny otwarcia<\/h3><p class=\"product-desc\">Klient od razu wie, kiedy przyj\u015b\u0107. Twoje dni i godziny wyci\u0119te z folii w czytelnym uk\u0142adzie \u2014 na szyb\u0119 lub drzwi lokalu.<\/p><ul class=\"product-facts\"><li><strong>Rozmiar:<\/strong> do 25 \u00d7 30 cm<\/li><li><strong>W cenie:<\/strong> Twoje godziny, 1 kolor, folia transportowa<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong>18,90 <small>z\u0142<\/small><\/strong><span>do 25 \u00d7 30 cm<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"hours\" disabled>Wpisz swoje godziny <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><article class=\"product\" data-product=\"contact\" data-category=\"car custom\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/van-web.webp\" alt=\"Przyk\u0142adowy napis kontaktowy na boku samochodu dostawczego\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">Twoja tre\u015b\u0107<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Na auto i witryn\u0119<\/p><h3>Telefon lub adres www<\/h3><p class=\"product-desc\">Daj klientom prosty spos\u00f3b, \u017ceby si\u0119 z Tob\u0105 skontaktowali. Wytn\u0119 Tw\u00f3j numer telefonu albo adres strony \u2014 litery bez t\u0142a.<\/p><ul class=\"product-facts\"><li><strong>Rozmiar:<\/strong> do 50 \u00d7 10 cm<\/li><li><strong>W cenie:<\/strong> 1 napis, 1 kolor, folia transportowa<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong>29 <small>z\u0142<\/small><\/strong><span>do 50 \u00d7 10 cm<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"contact\" disabled>Wpisz telefon lub www <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><article class=\"product\" data-product=\"logo\" data-category=\"shop car\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/2012-12-05-09.13.13.jpg\" alt=\"Przyk\u0142ad logo i wycinanych element\u00f3w z folii na szkle\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">Z Twojego pliku<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Na witryn\u0119, drzwi lub auto<\/p><h3>Logo wycinane z folii<\/h3><p class=\"product-desc\">Twoja marka na szybie albo karoserii. Proste logo wycinam z gotowego pliku wektorowego; pomi\u0119dzy elementami znaku wida\u0107 powierzchni\u0119.<\/p><ul class=\"product-facts\"><li><strong>Rozmiar:<\/strong> do 50 \u00d7 30 cm<\/li><li><strong>W cenie:<\/strong> 1 proste logo, 1 kolor; gotowy plik do ci\u0119cia<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong>49 <small>z\u0142<\/small><\/strong><span>do 50 \u00d7 30 cm<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"logo\" disabled>Dodaj swoje logo <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><article class=\"product\" data-product=\"shop\" data-category=\"shop hours\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/storefront-web.webp\" alt=\"Przyk\u0142adowe logo na witrynie i godziny otwarcia na drzwiach lokalu\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">3 elementy w komplecie<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Komplet na lokal<\/p><h3>Logo + godziny + telefon<\/h3><p class=\"product-desc\">Trzy elementy, kt\u00f3re porz\u0105dkuj\u0105 wej\u015bcie do Twojego lokalu. Logo na witryn\u0119, godziny na drzwi i numer telefonu \u2014 wszystko w jednym kolorze.<\/p><ul class=\"product-facts\"><li><strong>Rozmiary:<\/strong> logo 50 \u00d7 30, godziny 25 \u00d7 30, telefon 50 \u00d7 10 cm<\/li><li><strong>W cenie:<\/strong> 3 elementy, folia transportowa; gotowe logo<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong>89 <small>z\u0142<\/small><\/strong><span>pakiet na lokal<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"shop\" disabled>Uzupe\u0142nij sw\u00f3j komplet <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><article class=\"product\" data-product=\"car\" data-category=\"car\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/van-web.webp\" alt=\"Przyk\u0142adowe logo i tekst reklamowy z folii na bia\u0142ym samochodzie\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">Do samodzielnego monta\u017cu<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Komplet na samoch\u00f3d<\/p><h3>2 logo + napis na ty\u0142 auta<\/h3><p class=\"product-desc\">Poka\u017c swoj\u0105 firm\u0119 z obu stron auta. Komplet obejmuje dwa logo na boki i jeden napis na ty\u0142 \u2014 przygotowane do samodzielnego naklejenia.<\/p><ul class=\"product-facts\"><li><strong>Rozmiary:<\/strong> 2 logo do 50 \u00d7 30 cm; ty\u0142 do 50 \u00d7 20 cm<\/li><li><strong>W cenie:<\/strong> 3 elementy, 1 kolor; gotowe logo do ci\u0119cia<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong>149 <small>z\u0142<\/small><\/strong><span>3 elementy \u00b7 1 kolor<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"car\" disabled>Skonfiguruj pakiet na auto <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><article class=\"product\" data-product=\"install\" data-category=\"car\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/van-web.webp\" alt=\"Przyk\u0142adowy uk\u0142ad prostego logo i napis\u00f3w na samochodzie do monta\u017cu\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">Przyjad\u0119 i naklej\u0119<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Z monta\u017cem \u00b7 Wroc\u0142aw<\/p><h3>Pakiet na auto z monta\u017cem<\/h3><p class=\"product-desc\">Wolisz odebra\u0107 gotowy efekt? Przyjad\u0119 i naklej\u0119 dwa logo oraz napis na czystym, przygotowanym aucie. Prosty monta\u017c we Wroc\u0142awiu jest w cenie.<\/p><ul class=\"product-facts\"><li><strong>Rozmiary:<\/strong> 2 logo do 50 \u00d7 30 cm; ty\u0142 do 50 \u00d7 20 cm<\/li><li><strong>Zakres:<\/strong> 1 kolor, gotowe logo; bez usuwania starej folii<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong>349 <small>z\u0142<\/small><\/strong><span>naklejki + monta\u017c<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"install\" disabled>Ustal monta\u017c we Wroc\u0142awiu <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><article class=\"product\" data-product=\"custom\" data-category=\"custom\"><div class=\"product-image\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/371675035.webp\" alt=\"Przyk\u0142ad dekoracyjnych napis\u00f3w z folii na drzwiach kawiarni\" loading=\"lazy\" decoding=\"async\"><span class=\"product-tag\">Pomys\u0142 dopasowany do Ciebie<\/span><span class=\"photo-caption\">Przyk\u0142ad zastosowania<\/span><\/div><div class=\"product-info\"><p class=\"product-type\">Twoja tre\u015b\u0107 \u00b7 indywidualny format<\/p><h3>Napis z Twoj\u0105 tre\u015bci\u0105<\/h3><p class=\"product-desc\">Has\u0142o na witryn\u0119, nazwa na drzwi, napis na samoch\u00f3d albo dekoracyjne litery? Podaj dok\u0142adn\u0105 tre\u015b\u0107, szeroko\u015b\u0107 i wysoko\u015b\u0107 oraz miejsce klejenia. Sprawdz\u0119 mo\u017cliwo\u015b\u0107 wyci\u0119cia i przygotuj\u0119 wycen\u0119.<\/p><ul class=\"product-facts\"><li><strong>Ty wybierasz:<\/strong> tre\u015b\u0107, rozmiar i preferowany kolor<\/li><li><strong>Przed wykonaniem:<\/strong> zatwierdzisz uk\u0142ad oraz pe\u0142n\u0105 cen\u0119<\/li><\/ul><div class=\"product-options\"><span>Litery bez t\u0142a<\/span><span>Projekt do akceptacji<\/span><div class=\"color-dots\" aria-label=\"Kolor: czarny, bia\u0142y lub inny do ustalenia\"><i class=\"color-dot\" aria-hidden=\"true\"><\/i><i class=\"color-dot white\" aria-hidden=\"true\"><\/i><i class=\"color-dot other\" aria-hidden=\"true\"><\/i><\/div><\/div><div class=\"price-row\"><strong class=\"quote-price\">Wycena<\/strong><span>przed realizacj\u0105<\/span><\/div><button class=\"button primary customize\" type=\"button\" data-id=\"custom\" disabled>Opisz sw\u00f3j napis <span aria-hidden=\"true\">\u2192<\/span><\/button><\/div><\/article><\/div><p id=\"no-results\" class=\"no-results\" hidden>Nie znaleziono produktu. Zmie\u0144 wyszukiwane s\u0142owo lub wybierz inn\u0105 kategori\u0119.<\/p><div class=\"catalog-note\"><strong>Co obejmuj\u0105 ceny?<\/strong><p>Ceny dotycz\u0105 prostych wzor\u00f3w w opisanych rozmiarach, w jednym kolorze. Logo: gotowy plik wektorowy do ci\u0119cia. Naklejki otrzymasz z foli\u0105 transportow\u0105 i instrukcj\u0105. Dostaw\u0119, przygotowanie grafiki, wi\u0119kszy format i dodatkowe prace wyceni\u0119 osobno. Zdj\u0119cia pokazuj\u0105 przyk\u0142ady zastosowania; zakres ka\u017cdego pakietu opisany jest przy cenie.<\/p><\/div><noscript><p class=\"catalog-note\">Aby personalizowa\u0107 produkty i utworzy\u0107 list\u0119 do wyceny, w\u0142\u0105cz JavaScript. Mo\u017cesz te\u017c napisa\u0107 bezpo\u015brednio na szablonart@gmail.com.<\/p><\/noscript><\/section>\n\n<section class=\"installation-section wrap section\" id=\"montaz\"><div class=\"installation-photo\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/img_0010-scaled-1.jpg\" alt=\"Przyk\u0142ad przyklejania dekoracji wyci\u0119tej z folii na \u015bcianie\" loading=\"lazy\" decoding=\"async\"><span class=\"photo-caption\">Przyk\u0142ad pracy z foli\u0105<\/span><\/div><div><p class=\"overline\">Monta\u017c we Wroc\u0142awiu<\/p><h2>Przyjad\u0119 i naklej\u0119.<br>Ty odbierasz gotowy efekt.<\/h2><p>Na aucie, witrynie lub drzwiach. Wy\u015blij zdj\u0119cie miejsca i wymiary \u2014 ustalimy termin, warunki oraz zakres monta\u017cu.<\/p><div class=\"install-price\"><strong>349 <small>z\u0142<\/small><\/strong><span>ma\u0142y pakiet na auto z prostym monta\u017cem<br>2 logo + napis na ty\u0142 \u00b7 1 kolor<\/span><\/div><p>Auto musi by\u0107 czyste i przygotowane. Usuwanie starej folii oraz gara\u017c s\u0105 wyceniane osobno. Monta\u017c witryny ustalimy indywidualnie.<\/p><button class=\"button primary customize\" type=\"button\" data-id=\"install\" disabled>Ustal monta\u017c na aucie <span aria-hidden=\"true\">\u2192<\/span><\/button><div class=\"install-summary\"><span>Wysy\u0142ka w Polsce<\/span><span>Mo\u017cesz te\u017c naklei\u0107 samodzielnie \u2014 dodaj\u0119 instrukcj\u0119<\/span><\/div><\/div><\/section>\n<section id=\"jak-zamowic\" class=\"steps-section\"><div class=\"wrap section\"><div class=\"section-heading\"><div><p class=\"overline\">Od pomys\u0142u do naklejki<\/p><h2>Trzy proste kroki<\/h2><\/div><\/div><ol class=\"steps\"><li><span>1<\/span><div><h3>Wybierz i wpisz tre\u015b\u0107<\/h3><p>Podaj tekst, rozmiar i preferowany kolor. Dodaj wybrane produkty do listy, a logo do\u0142\u0105cz do wiadomo\u015bci.<\/p><\/div><\/li><li><span>2<\/span><div><h3>Zatwierd\u017a uk\u0142ad i cen\u0119<\/h3><p>Wy\u015blij zapytanie na szablonart@gmail.com. Sprawdz\u0119 plik i potwierdz\u0119 pe\u0142ny koszt oraz termin.<\/p><\/div><\/li><li><span>3<\/span><div><h3>Odbierz gotowe naklejki<\/h3><p>Wysy\u0142ka z foli\u0105 transportow\u0105 i instrukcj\u0105 albo um\u00f3wiony monta\u017c we Wroc\u0142awiu. Wycinam po akceptacji projektu.<\/p><\/div><\/li><\/ol><\/div><\/section>\n<section class=\"archive-gallery wrap section\" id=\"galeria\"><div class=\"section-heading\"><div><p class=\"overline\">Galeria wzor\u00f3w i zastosowa\u0144<\/p><h2>Wi\u0119cej pomys\u0142\u00f3w z folii<\/h2><\/div><a class=\"button outline\" href=\"https:\/\/szablon-art.pl\/?page_id=96\">Zobacz ca\u0142\u0105 galeri\u0119 <span aria-hidden=\"true\">\u2192<\/span><\/a><\/div><div class=\"gallery-grid\"><figure><div class=\"gallery-photo\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/2012-06-20-12.19.00.jpg\" alt=\"Srebrny samoch\u00f3d z dekoracyjnym wzorem z folii na boku\" loading=\"lazy\" decoding=\"async\"><\/div><figcaption>Dekoracje na samoch\u00f3d<span>Wz\u00f3r i cena do indywidualnego ustalenia<\/span><\/figcaption><\/figure><figure><div class=\"gallery-photo\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/vitrin1.jpg\" alt=\"Witryna z dekoracj\u0105 domk\u00f3w i \u015bnie\u017cynek z folii\" loading=\"lazy\" decoding=\"async\"><\/div><figcaption>Sezonowe dekoracje witryn<span>Format i zakres do ustalenia<\/span><\/figcaption><\/figure><figure><div class=\"gallery-photo\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/95mcptt5kiy.jpg\" alt=\"Szklane przegrody biura z poziomymi pasami folii\" loading=\"lazy\" decoding=\"async\"><\/div><figcaption>Oznaczenia na szkle<span>Indywidualny projekt i wycena<\/span><\/figcaption><\/figure><figure><div class=\"gallery-photo\"><img src=\"https:\/\/szablon-art.pl\/wp-content\/uploads\/2026\/10\/img_0009-scaled-1.jpg\" alt=\"Dekoracja drzewa i \u0142awki wyci\u0119ta z folii na \u015bcianie\" loading=\"lazy\" decoding=\"async\"><\/div><figcaption>Dekoracyjne wzory i napisy<span>Pomys\u0142 dopasowany do wn\u0119trza<\/span><\/figcaption><\/figure><\/div><p class=\"gallery-note\">Przyk\u0142ady wzor\u00f3w i zastosowa\u0144 z archiwum. Dekoracje maj\u0105 odr\u0119bny zakres i wycen\u0119 \u2014 nie s\u0105 cz\u0119\u015bci\u0105 opisanych pakiet\u00f3w na auto lub lokal.<\/p><\/section>\n<section class=\"wrap section faq-layout\" id=\"pytania\"><div><p class=\"overline\">Przed zam\u00f3wieniem<\/p><h2>Co warto wiedzie\u0107?<\/h2><p>Naklejki wycinane to litery i znaki z jednokolorowej folii. Pomi\u0119dzy elementami pozostaje widoczna powierzchnia auta lub szyby.<\/p><\/div><div class=\"faq\"><details><summary>Jakie pliki z logo przyjmujemy?<span aria-hidden=\"true\">+<\/span><\/summary><p>Najlepiej SVG, PDF, AI lub EPS z tekstem zamienionym na krzywe. Cena 49 z\u0142 dotyczy prostego, gotowego pliku do ci\u0119cia. Przygotowanie logo z JPG lub PNG wyceniamy osobno. Drobne detale mog\u0105 wymaga\u0107 uproszczenia.<\/p><\/details><details><summary>Co dok\u0142adnie obejmuje pakiet na auto?<span aria-hidden=\"true\">+<\/span><\/summary><p>Dwa logotypy do 50 \u00d7 30 cm ka\u017cdy oraz jeden napis na ty\u0142 do 50 \u00d7 20 cm, w jednym kolorze. Logo musi nadawa\u0107 si\u0119 do wycinania. Pakiet z monta\u017cem ma ten sam zakres i dotyczy prostego klejenia na czystym, przygotowanym aucie we Wroc\u0142awiu. Usuwanie starej folii i gara\u017c nie s\u0105 wliczone.<\/p><\/details><details><summary>Czy wykonujemy pe\u0142ne oklejanie samochod\u00f3w?<span aria-hidden=\"true\">+<\/span><\/summary><p>Oferta dotyczy logo i napis\u00f3w z folii wycinanej na wybrane miejsca auta. SzablonArt nie wykonuje pe\u0142nej zmiany koloru samochodu ani naklejek drukowanych ze zdj\u0119ciami.<\/p><\/details><details><summary>Czy mo\u017cna wybra\u0107 inny rozmiar lub kolor?<span aria-hidden=\"true\">+<\/span><\/summary><p>Tak, opisz potrzebny format i preferowany kolor. Je\u015bli zakres przekracza rozmiar pakietu lub obejmuje kilka kolor\u00f3w, przygotujemy indywidualn\u0105 wycen\u0119 przed zam\u00f3wieniem. Dost\u0119pno\u015b\u0107 konkretnej folii potwierdzamy osobno.<\/p><\/details><details><summary>Czy przyjedziesz naklei\u0107 napisy na witryn\u0119?<span aria-hidden=\"true\">+<\/span><\/summary><p>Tak, monta\u017c we Wroc\u0142awiu ustalamy na podstawie wymiar\u00f3w, zdj\u0119cia i dost\u0119pno\u015bci miejsca. Powierzchnia musi by\u0107 czysta, sucha i odpowiednia do klejenia. Warunki pogodowe mog\u0105 wymaga\u0107 zmiany terminu albo odpowiedniego pomieszczenia.<\/p><\/details><\/div><\/section>\n<section class=\"custom-cta wrap\"><div><p class=\"overline\">Masz w\u0142asny pomys\u0142?<\/p><h2>Napis, kt\u00f3rego jeszcze tu nie ma?<\/h2><p>Podaj tre\u015b\u0107 i wymiary, poka\u017c miejsce klejenia. Dopasuj\u0119 uk\u0142ad i przygotuj\u0119 wycen\u0119.<\/p><\/div><button id=\"custom-quote\" class=\"button primary\" type=\"button\" disabled>Opisz swoj\u0105 naklejk\u0119 <span aria-hidden=\"true\">\u2192<\/span><\/button><\/section>\n<div class=\"demo-notice wrap\"><strong>Jak wys\u0142a\u0107 zapytanie?<\/strong><p>Uzupe\u0142nij produkty, otw\u00f3rz \u201eList\u0119 do wyceny\u201d i wy\u015blij wiadomo\u015b\u0107 ze swojej poczty na <a href=\"mailto:szablonart@gmail.com\">szablonart@gmail.com<\/a>. Mo\u017cesz te\u017c pobra\u0107 list\u0119 TXT. Przed wyci\u0119ciem potwierdz\u0119 projekt, pe\u0142n\u0105 cen\u0119 i termin.<\/p><\/div>\n<\/main>\n<footer class=\"footer\"><div class=\"wrap\"><a class=\"logo\" href=\"https:\/\/szablon-art.pl\/\" aria-label=\"SzablonArt, strona g\u0142\u00f3wna\"><svg class=\"brand-mark\" viewBox=\"0 0 64 64\" aria-hidden=\"true\"><path d=\"M46 12H28c-9 0-14 5-14 12 0 8 6 11 14 11h6c4 0 6 2 6 5s-2 5-6 5H16v8h18c10 0 16-5 16-13 0-9-6-13-15-13h-7c-3 0-5-1-5-4s2-4 6-4h17z\" fill=\"#fff\"\/><\/svg><span class=\"wordmark\">szablon<span>art<\/span><\/span><\/a><p>Natalia Horbach \u00b7 Wysy\u0142ka w Polsce<br>Monta\u017c we Wroc\u0142awiu<\/p><a href=\"#katalog\">Katalog<\/a><a href=\"https:\/\/szablon-art.pl\/?page_id=96\">Galeria<\/a><a href=\"https:\/\/szablon-art.pl\/?page_id=101\">O nas<\/a><a href=\"https:\/\/szablon-art.pl\/?page_id=103\">Kontakt<\/a><a href=\"mailto:szablonart@gmail.com\">szablonart@gmail.com<\/a><small>SzablonArt \u00b7 Natalia Horbach \u00b7 2026<\/small><\/div><\/footer>\n  <dialog id=\"product-dialog\" class=\"product-dialog\" aria-labelledby=\"dialog-title\"><div class=\"dialog-header\"><p>Personalizacja produktu<\/p><button type=\"button\" class=\"close-dialog\" data-close=\"product-dialog\" aria-label=\"Zamknij personalizacj\u0119\">\u00d7<\/button><\/div><div class=\"detail-layout\"><div class=\"detail-preview\"><p class=\"overline\">Podgl\u0105d tre\u015bci \u00b7 uk\u0142ad orientacyjny<\/p><div id=\"live-preview\" class=\"live-preview\" aria-live=\"polite\"><\/div><p class=\"preview-disclaimer\">Ostateczny uk\u0142ad i mo\u017cliwo\u015b\u0107 wyci\u0119cia potwierdzimy w projekcie przed realizacj\u0105.<\/p><\/div><form id=\"customizer\"><h2 id=\"dialog-title\"><\/h2><p id=\"dialog-description\"><\/p><div class=\"detail-price\"><strong id=\"dialog-price\"><\/strong><span id=\"dialog-price-note\">Cena w opisanym zakresie<\/span><\/div><div class=\"field\"><label for=\"customer-text\">Twoja tre\u015b\u0107 <span>(wymagane)<\/span><\/label><textarea id=\"customer-text\" name=\"text\" rows=\"3\" maxlength=\"1500\" required placeholder=\"Wpisz dok\u0142adn\u0105 tre\u015b\u0107, dni i godziny lub opisz logo\u2026\"><\/textarea><\/div><div class=\"field-grid\"><div class=\"field\"><label for=\"customer-color\">Kolor<\/label><select id=\"customer-color\" name=\"color\"><option value=\"Czarny\">Czarny<\/option><option value=\"Bia\u0142y\">Bia\u0142y<\/option><option value=\"Inny \u2014 do ustalenia\">Inny \u2014 do ustalenia<\/option><\/select><\/div><div class=\"field\"><label for=\"customer-size\">Rozmiar<\/label><select id=\"customer-size\" name=\"size\"><\/select><\/div><\/div><div class=\"field\" id=\"custom-size-field\" hidden><label for=\"custom-dimensions\">W\u0142asny rozmiar \/ zakres<\/label><input id=\"custom-dimensions\" name=\"dimensions\" maxlength=\"200\" placeholder=\"Np. napis 100 \u00d7 20 cm na szyb\u0119\"><\/div><div class=\"field\" id=\"logo-upload-field\"><label for=\"customer-file\">Plik logo <span>(opcjonalnie)<\/span><\/label><input id=\"customer-file\" name=\"logo-file\" type=\"file\" accept=\".svg,.pdf,.ai,.eps,.jpg,.jpeg,.png\"><p class=\"field-hint\">Lista zapisuje tylko nazw\u0119 pliku. Logo do\u0142\u0105cz osobno do wiadomo\u015bci w swojej poczcie.<\/p><\/div><div class=\"field-grid\"><div class=\"field\"><label for=\"customer-delivery\">Realizacja<\/label><select id=\"customer-delivery\" name=\"delivery\"><option>Wysy\u0142ka w Polsce<\/option><option>Monta\u017c we Wroc\u0142awiu<\/option><option>Do ustalenia<\/option><\/select><\/div><div class=\"field\"><label for=\"customer-quantity\">Liczba pakiet\u00f3w<\/label><input id=\"customer-quantity\" name=\"quantity\" type=\"number\" min=\"1\" max=\"20\" value=\"1\" required><\/div><\/div><p id=\"dialog-scope\" class=\"scope-note\"><\/p><button type=\"submit\" class=\"button primary add-to-list\">Dodaj do listy wyceny <span aria-hidden=\"true\">+<\/span><\/button><p class=\"demo-inline\">Po dodaniu produkt\u00f3w otw\u00f3rz zapytanie w poczcie. Projekt, pe\u0142n\u0105 cen\u0119 i termin potwierdzimy przed realizacj\u0105.<\/p><\/form><\/div><\/dialog>\n  <dialog id=\"list-dialog\" class=\"list-dialog\" aria-labelledby=\"list-title\"><div class=\"dialog-header\"><div><p>Lista do wyceny<\/p><h2 id=\"list-title\">Twoje naklejki<\/h2><\/div><button type=\"button\" class=\"close-dialog\" data-close=\"list-dialog\" aria-label=\"Zamknij list\u0119 wyceny\">\u00d7<\/button><\/div><div id=\"quote-items\" class=\"quote-items\"><\/div><div id=\"quote-summary\" class=\"quote-summary\" hidden><span>Suma cen produkt\u00f3w<\/span><strong id=\"quote-total\"><\/strong><p id=\"quote-total-note\"><\/p><\/div><div class=\"quote-actions\"><a id=\"email-list\" class=\"button primary is-disabled\" href=\"mailto:szablonart@gmail.com\" aria-disabled=\"true\">Otw\u00f3rz zapytanie w poczcie <span aria-hidden=\"true\">\u2197<\/span><\/a><button id=\"download-list\" class=\"button outline\" type=\"button\" disabled>Pobierz list\u0119 jako TXT <span aria-hidden=\"true\">\u2193<\/span><\/button><\/div><p class=\"demo-inline\">Przycisk otwiera wiadomo\u015b\u0107 w Twojej aplikacji pocztowej. Wysy\u0142asz j\u0105 samodzielnie. Logo do\u0142\u0105cz osobno. Je\u017celi poczta si\u0119 nie otworzy, pobierz TXT i wy\u015blij na <a href=\"mailto:szablonart@gmail.com\">szablonart@gmail.com<\/a>. To zapytanie do wyceny. Po uzgodnieniu zakresu potwierdzimy warunki zam\u00f3wienia.<\/p><p id=\"quote-status\" role=\"status\" aria-live=\"polite\"><\/p><\/dialog>\n  <p id=\"toast\" class=\"toast\" role=\"status\" aria-live=\"polite\"><\/p>\n\n\n<\/div>\n<script>\n'use strict';\n(() => {\n  const root=document.getElementById('sa-shop')||document;\n  const find=selector=>root.querySelector(selector);\n  const all=selector=>root.querySelectorAll(selector);\n  const products={\n    hours:{name:'Godziny otwarcia 25 \u00d7 30 cm',price:18.9,category:'hours',sample:'GODZINY OTWARCIA\\npon. \u2013 pt. 9:00 \u2013 18:00\\nsobota 10:00 \u2013 14:00',size:'Do 25 \u00d7 30 cm',description:'Naklejka z Twoimi dniami i godzinami w gotowym uk\u0142adzie.',scope:'1 kolor, gotowy szablon, maksymalny obrys 25 \u00d7 30 cm. Logo nie jest wliczone.'},\n    contact:{name:'Telefon lub www 50 \u00d7 10 cm',price:29,category:'car',sample:'twoja-strona.pl',size:'Do 50 \u00d7 10 cm',description:'Jeden napis z Twoim numerem telefonu lub adresem strony.',scope:'1 napis w jednym kolorze. Maksymalny obrys 50 \u00d7 10 cm.'},\n    logo:{name:'Logo z folii 50 \u00d7 30 cm',price:49,category:'shop',sample:'TWOJE LOGO',size:'Do 50 \u00d7 30 cm',description:'Prosty znak wyci\u0119ty z gotowego pliku wektorowego.',scope:'1 logo w jednym kolorze, do 50 \u00d7 30 cm. Wymagany prosty, gotowy plik do ci\u0119cia. Przygotowanie grafiki wyceniamy osobno.',logo:true},\n    shop:{name:'Logo + godziny + telefon',price:89,category:'shop',sample:'TWOJA FIRMA\\nGODZINY OTWARCIA\\nTW\u00d3J TELEFON',size:'Rozmiary pakietu',description:'Trzy elementy na drzwi lub witryn\u0119 Twojego lokalu.',scope:'Logo do 50 \u00d7 30 cm + godziny do 25 \u00d7 30 cm + telefon do 50 \u00d7 10 cm. Wszystko w jednym kolorze; gotowe logo do ci\u0119cia.',logo:true},\n    car:{name:'2 logo + napis na ty\u0142 auta',price:149,category:'car',sample:'TWOJA FIRMA\\nTW\u00d3J TELEFON \u00b7 TWOJA STRONA',size:'Rozmiary pakietu',description:'Naklejki na oba boki i ty\u0142 samochodu, do samodzielnego monta\u017cu.',scope:'2 logo do 50 \u00d7 30 cm ka\u017cde + napis na ty\u0142 do 50 \u00d7 20 cm. 1 kolor, gotowe logo do ci\u0119cia. Cena dla opisanego zakresu.',logo:true},\n    install:{name:'Pakiet na auto z monta\u017cem',price:349,category:'car',sample:'TWOJA FIRMA\\nTW\u00d3J TELEFON \u00b7 TWOJA STRONA',size:'Rozmiary pakietu',description:'Ma\u0142y pakiet napis\u00f3w i logo z prostym monta\u017cem we Wroc\u0142awiu.',scope:'2 logo do 50 \u00d7 30 cm ka\u017cde + napis na ty\u0142 do 50 \u00d7 20 cm. 1 kolor. Monta\u017c we Wroc\u0142awiu na czystym, przygotowanym aucie. Bez usuwania starej folii; gara\u017c osobno.',logo:true},\n    custom:{name:'W\u0142asny napis \u2014 wycena',price:null,category:'custom',sample:'TW\u00d3J W\u0141ASNY NAPIS',size:'W\u0142asny rozmiar',description:'Opisz tre\u015b\u0107, format i powierzchni\u0119, na kt\u00f3r\u0105 trafi naklejka.',scope:'Zakres i cena do indywidualnego ustalenia przed wyci\u0119ciem. Preferowany kolor potwierdzamy wed\u0142ug dost\u0119pno\u015bci.'}\n  };\n  const money=new Intl.NumberFormat('pl-PL',{style:'currency',currency:'PLN',maximumFractionDigits:2});\n  let activeFilter='all',activeProduct='custom',quote=[],toastTimer,emailNeedsAttachment=false;\n  const productDialog=find('#product-dialog'),listDialog=find('#list-dialog'),form=find('#customizer');\n  const attachmentNote=document.createElement('p');attachmentNote.className='demo-inline';attachmentNote.id='email-attachment-note';attachmentNote.hidden=true;find('#email-list').parentElement.before(attachmentNote);\n  all('.optional-image').forEach(image=>{\n    const loaded=()=>{if(image.naturalWidth>0)image.parentElement.classList.add('has-image');};\n    image.addEventListener('load',loaded);image.addEventListener('error',()=>image.parentElement.classList.remove('has-image'));loaded();\n  });\n  function showToast(message){const toast=find('#toast');toast.textContent=message;toast.classList.add('visible');clearTimeout(toastTimer);toastTimer=setTimeout(()=>toast.classList.remove('visible'),4500);}\n  function filterProducts(){\n    const term=find('#search').value.trim().toLocaleLowerCase('pl');let count=0;\n    all('.product').forEach(card=>{const match=(activeFilter==='all'||card.dataset.category.split(' ').includes(activeFilter))&&card.textContent.toLocaleLowerCase('pl').includes(term);card.hidden=!match;if(match)count++;});\n    find('#result-count').textContent=count===1?'1 produkt':count>1&&count<5?count+' produkty':count+' produkt\u00f3w';\n    find('#no-results').hidden=count>0;\n  }\n  function setFilter(value){activeFilter=value;all('[data-filter]').forEach(button=>{const active=button.dataset.filter===value;button.classList.toggle('active',active);button.setAttribute('aria-pressed',String(active));});filterProducts();}\n  all('[data-filter]').forEach(button=>button.addEventListener('click',()=>setFilter(button.dataset.filter)));\n  all('[data-nav-category]').forEach(link=>link.addEventListener('click',()=>{find('#search').value='';setFilter(link.dataset.navCategory);}));\n  find('#search').addEventListener('input',filterProducts);\n  find('#search-form').addEventListener('submit',event=>{event.preventDefault();filterProducts();find('#katalog').scrollIntoView({behavior:window.matchMedia('(prefers-reduced-motion: reduce)').matches?'instant':'smooth'});});\n  function currentPrice(){const extraInstallation=activeProduct!=='install'&&find('#customer-delivery').value==='Monta\u017c we Wroc\u0142awiu';return extraInstallation||find('#customer-size').value==='individual'||find('#customer-color').value==='Inny \u2014 do ustalenia'?null:products[activeProduct].price;}\n  function syncDetail(){\n    const product=products[activeProduct];\n    const individual=find('#customer-size').value==='individual';\n    find('#custom-size-field').hidden=!individual;\n    find('#custom-dimensions').required=individual;\n    const price=currentPrice();find('#dialog-price').textContent=price===null?'Wycena':money.format(price);\n    find('#dialog-price-note').textContent=price===null?'Potwierdzimy cen\u0119 po sprawdzeniu zakresu':'Cena jednego pakietu w opisanym zakresie';\n    const text=find('#customer-text').value.trim();find('#live-preview').textContent=text||product.sample;\n    find('#live-preview').classList.toggle('white-lettering',find('#customer-color').value==='Bia\u0142y');\n  }\n  function openProduct(id){\n    activeProduct=products[id]?id:'custom';const product=products[activeProduct];form.reset();\n    find('#dialog-title').textContent=product.name;find('#dialog-description').textContent=product.description;find('#dialog-scope').textContent=product.scope;\n    const size=find('#customer-size');size.replaceChildren();\n    const option=document.createElement('option');option.value=activeProduct==='custom'?'individual':'package';option.textContent=product.size;size.append(option);\n    if(activeProduct!=='custom'){const other=document.createElement('option');other.value='individual';other.textContent='Inny rozmiar \u2014 wycena';size.append(other);}\n    find('#logo-upload-field').hidden=!product.logo;find('#customer-file').value='';\n    const delivery=find('#customer-delivery');delivery.replaceChildren();\n    const deliveryOptions=activeProduct==='install'?['Monta\u017c we Wroc\u0142awiu']:['Wysy\u0142ka w Polsce','Monta\u017c we Wroc\u0142awiu','Do ustalenia'];\n    deliveryOptions.forEach(value=>{const option=document.createElement('option');option.value=value;option.textContent=value;delivery.append(option);});\n    syncDetail();productDialog.showModal();\n  }\n  all('.customize').forEach(button=>{button.disabled=false;button.addEventListener('click',()=>openProduct(button.dataset.id));});\n  find('#custom-quote').disabled=false;find('#custom-quote').addEventListener('click',()=>openProduct('custom'));\n  ['#customer-text','#customer-color','#customer-size','#customer-delivery'].forEach(selector=>find(selector).addEventListener(selector==='#customer-text'?'input':'change',syncDetail));\n  all('[data-close]').forEach(button=>button.addEventListener('click',()=>find('#'+button.dataset.close).close()));\n  [productDialog,listDialog].forEach(dialog=>dialog.addEventListener('click',event=>{if(event.target===dialog){const bounds=dialog.getBoundingClientRect();if(event.clientX<bounds.left||event.clientX>bounds.right||event.clientY<bounds.top||event.clientY>bounds.bottom)dialog.close();}}));\n  function renderQuote(){\n    const container=find('#quote-items');container.replaceChildren();find('#quote-status').textContent='';\n    find('#list-count').textContent=String(quote.reduce((sum,item)=>sum+item.quantity,0));\n    find('#quote-summary').hidden=quote.length===0;find('#download-list').disabled=quote.length===0;\n    const emailLink=find('#email-list');emailLink.classList.toggle('is-disabled',quote.length===0);emailLink.setAttribute('aria-disabled',String(quote.length===0));\n    const subject=encodeURIComponent('SzablonArt \u2014 zapytanie o naklejki');\n    const fullEmail='mailto:szablonart@gmail.com?subject='+subject+'&body='+encodeURIComponent(quoteContent());\n    emailNeedsAttachment=quote.length>0&&fullEmail.length>1800;\n    const shortBody='Dzie\u0144 dobry, prosz\u0119 o wycen\u0119 naklejek opisanych w za\u0142\u0105czonej li\u015bcie TXT.\\n\\nList\u0119 do\u0142\u0105czam do wiadomo\u015bci, a plik logo osobno. Prosz\u0119 o potwierdzenie pe\u0142nej ceny, projektu oraz terminu realizacji.';\n    emailLink.href=quote.length?(emailNeedsAttachment?'mailto:szablonart@gmail.com?subject='+subject+'&body='+encodeURIComponent(shortBody):fullEmail):'mailto:szablonart@gmail.com';\n    attachmentNote.hidden=!emailNeedsAttachment;\n    attachmentNote.textContent=emailNeedsAttachment?'Pobierz list\u0119 TXT i do\u0142\u0105cz j\u0105 do wiadomo\u015bci, a logo osobno. Poczta otworzy kr\u00f3tkie zapytanie.':'';\n    if(!quote.length){const message=document.createElement('p');message.className='quote-empty';message.textContent='Lista jest pusta. Wybierz naklejk\u0119 w katalogu i dodaj swoj\u0105 tre\u015b\u0107.';container.append(message);return;}\n    quote.forEach((item,index)=>{\n      const card=document.createElement('div');card.className='quote-item';const description=document.createElement('div');\n      const title=document.createElement('h3');title.textContent=item.name;description.append(title);\n      const text=document.createElement('p');text.className='item-text';text.textContent=item.text;description.append(text);\n      const meta=document.createElement('p');meta.textContent=item.quantity+' \u00d7 pakiet \u00b7 '+item.color+' \u00b7 '+item.size+'\\n'+item.delivery+(item.file?'\\nPlik: '+item.file+' (tylko nazwa, bez za\u0142\u0105cznika)':'');description.append(meta);\n      const pricing=document.createElement('div');const price=document.createElement('strong');price.textContent=item.price===null?'Wycena':money.format(item.price*item.quantity);pricing.append(price);\n      const remove=document.createElement('button');remove.type='button';remove.className='remove-item';remove.textContent='Usu\u0144';remove.setAttribute('aria-label','Usu\u0144: '+item.name);remove.addEventListener('click',()=>{quote.splice(index,1);renderQuote();});pricing.append(remove);card.append(description,pricing);container.append(card);\n    });\n    const total=quote.reduce((sum,item)=>sum+(item.price===null?0:item.price*item.quantity),0);const unknown=quote.filter(item=>item.price===null).length;\n    find('#quote-total').textContent=total===0&&unknown?'Do wyceny':money.format(total);\n    find('#quote-total-note').textContent=(unknown?'Dodatkowo '+unknown+' '+(unknown===1?'pozycja wymaga':'pozycji wymaga')+' indywidualnej wyceny. ':'')+'Suma nie obejmuje dostawy ani dodatkowych prac. Pe\u0142n\u0105 cen\u0119 potwierdzimy w odpowiedzi na zapytanie, przed realizacj\u0105.';\n  }\n  form.addEventListener('submit',event=>{\n    event.preventDefault();if(!form.reportValidity())return;const data=new FormData(form),product=products[activeProduct];\n    const quantity=Number(data.get('quantity'));if(!Number.isInteger(quantity)||quantity<1||quantity>20)return;\n    const individual=data.get('size')==='individual';\n    quote.push({name:product.name,text:String(data.get('text')).trim(),color:String(data.get('color')),size:individual?String(data.get('dimensions')).trim():product.size,delivery:String(data.get('delivery')),quantity,price:currentPrice(),scope:product.scope,file:find('#customer-file').files[0]?.name||''});\n    productDialog.close();renderQuote();showToast('Dodano do listy. Zapytanie wy\u015blesz z w\u0142asnej poczty.');\n  });\n  find('#open-list').disabled=false;find('#open-list').addEventListener('click',()=>{renderQuote();listDialog.showModal();});\n  function quoteContent(){\n    const total=quote.reduce((sum,item)=>sum+(item.price===null?0:item.price*item.quantity),0);\n    return ['Dzie\u0144 dobry, prosz\u0119 o wycen\u0119 poni\u017cszych naklejek.','SzablonArt \u2014 lista do zapytania, nie zam\u00f3wienie.','',...quote.flatMap((item,index)=>[(index+1)+'. '+item.name,'Tre\u015b\u0107: '+item.text,'Kolor: '+item.color,'Rozmiar: '+item.size,'Realizacja: '+item.delivery,'Liczba pakiet\u00f3w: '+item.quantity,'Cena pozycji w opisanym zakresie: '+(item.price===null?'Indywidualna wycena':money.format(item.price*item.quantity)),'Zakres: '+item.scope,'Plik logo: '+(item.file||'Nie wybrano pliku')+' (plik nale\u017cy do\u0142\u0105czy\u0107 osobno)','']),'Suma cen znanych pozycji: '+money.format(total),'Pozycje oznaczone \u201ewycena\u201d wymagaj\u0105 indywidualnej ceny.','Dostawa, gara\u017c i inne prace dodatkowe nie s\u0105 uwzgl\u0119dnione.','Prosz\u0119 o potwierdzenie pe\u0142nej ceny, projektu, dost\u0119pno\u015bci koloru i terminu.'].join('\\n');\n  }\n  find('#email-list').addEventListener('click',event=>{\n    if(!quote.length){event.preventDefault();return;}\n    find('#quote-status').textContent=emailNeedsAttachment?'Otwieramy kr\u00f3tkie zapytanie w Twojej poczcie. Pobierz TXT i do\u0142\u0105cz go do wiadomo\u015bci, a logo osobno. Wiadomo\u015b\u0107 wysy\u0142asz samodzielnie.':'Otwieramy zapytanie w Twojej poczcie. Wy\u015blij wiadomo\u015b\u0107 samodzielnie i do\u0142\u0105cz plik logo. Je\u015bli poczta si\u0119 nie otworzy, u\u017cyj pliku TXT.';\n  });\n  find('#download-list').addEventListener('click',()=>{\n    if(!quote.length)return;\n    const blob=new Blob(['\\uFEFF'+quoteContent()],{type:'text\/plain;charset=utf-8'}),url=URL.createObjectURL(blob),anchor=document.createElement('a');anchor.href=url;anchor.download='SzablonArt-lista-do-wyceny.txt';document.body.append(anchor);anchor.click();anchor.remove();setTimeout(()=>URL.revokeObjectURL(url),5000);\n    find('#quote-status').textContent='Przygotowano plik TXT do pobrania. Wy\u015blij go samodzielnie na szablonart@gmail.com. Lista nie zosta\u0142a wys\u0142ana automatycznie.';\n  });\n  renderQuote();\n})();\n<\/script>\n<script>\n\/* Szablon-Art: a small, manually operated vinyl studio. No dependencies. *\/\n(() => {\n  'use strict';\n  const initialize = () => {\n    const root = document.getElementById('sa-shop');\n    if (!root || root.dataset.saMotionReady === 'true') return;\n    root.dataset.saMotionReady = 'true';\n\n    const find = selector => root.querySelector(selector);\n    const all = selector => Array.from(root.querySelectorAll(selector));\n    const preference = window.matchMedia('(prefers-reduced-motion: reduce)');\n    const animations = new Set();\n    const timers = new Set();\n    const revealAnimations = new Map();\n    const after = (callback, delay) => {\n      const timer = window.setTimeout(() => { timers.delete(timer); callback(); }, delay);\n      timers.add(timer);\n      return timer;\n    };\n    const clearTimers = () => { timers.forEach(window.clearTimeout); timers.clear(); };\n    const animate = (element, frames, options) => {\n      if (preference.matches || !element || typeof element.animate !== 'function') return null;\n      try {\n        const animation = element.animate(frames, options);\n        animations.add(animation);\n        const remove = () => animations.delete(animation);\n        animation.addEventListener('finish', remove, { once: true });\n        animation.addEventListener('cancel', remove, { once: true });\n        return animation;\n      } catch (_) {\n        \/\/ A partial Web Animations implementation should never block an offer.\n        return null;\n      }\n    };\n\n    const demo = find('#sa-cut-demo');\n    const word = find('#sa-vinyl-letters') || find('.sa-cut-word');\n    const cutButton = find('#sa-cut-run') || find('[data-cut-trigger]');\n    const status = find('#sa-cut-status');\n    let running = false;\n    let visitorColor = false;\n    let cutAnimations = [];\n    let letters = [];\n\n    const setStage = (number, announcement) => {\n      if (demo) demo.dataset.cutStage = String(number);\n      all('[data-cut-stage]').filter(marker => marker !== demo).forEach(marker => {\n        const active = Number(marker.dataset.cutStage) === number;\n        marker.classList.toggle('is-current', active);\n        marker.classList.toggle('is-active', active);\n        if (active) marker.setAttribute('aria-current', 'step');\n        else marker.removeAttribute('aria-current');\n      });\n      if (status && announcement) status.textContent = announcement;\n    };\n\n    if (word) {\n      const sample = word.dataset.cutText || word.textContent.trim() || 'TWOJA FIRMA';\n      word.setAttribute('role', 'img');\n      word.setAttribute('aria-label', sample);\n      \/\/ The screen reader receives the complete word, rather than ten individual letters.\n      \/\/ Rendering is bounded: 16 fragments at most; long demo text uses small groups.\n      const characters = Array.from(sample);\n      const groupSize = Math.max(1, Math.ceil(characters.filter(c => c.trim()).length \/ 16));\n      const groups = [];\n      let group = '';\n      let count = 0;\n      for (const character of characters) {\n        if (\/\\s\/.test(character)) {\n          if (group) { groups.push(group); group = ''; count = 0; }\n          groups.push(' ');\n        } else {\n          group += character;\n          count += 1;\n          if (count === groupSize) { groups.push(group); group = ''; count = 0; }\n        }\n      }\n      if (group) groups.push(group);\n      if (groups.filter(text => text.trim()).length > 16) {\n        groups.length = 0;\n        const chunkSize = Math.ceil(characters.length \/ 16);\n        for (let offset = 0; offset < characters.length; offset += chunkSize) {\n          groups.push(characters.slice(offset, offset + chunkSize).join(''));\n        }\n      }\n      const fragment = document.createDocumentFragment();\n      groups.forEach(text => {\n        const span = document.createElement('span');\n        span.className = text.trim() ? 'sa-letter' : 'sa-letter-space';\n        span.textContent = text.trim() ? text : '\\u00a0';\n        span.setAttribute('aria-hidden', 'true');\n        fragment.append(span);\n        if (text.trim()) letters.push(span);\n      });\n      word.replaceChildren(fragment);\n      word.classList.add('sa-word-ready');\n    }\n\n    const finishCut = (announce = true) => {\n      clearTimers();\n      cutAnimations.forEach(animation => { if (animation.playState !== 'finished') animation.cancel(); });\n      cutAnimations = [];\n      running = false;\n      if (demo) {\n        demo.classList.remove('is-cutting');\n        demo.classList.add('is-cut-ready');\n        demo.removeAttribute('aria-busy');\n      }\n      if (cutButton) {\n        cutButton.removeAttribute('aria-disabled');\n        cutButton.classList.remove('is-working');\n      }\n      setStage(3, announce ? 'Gotowy napis. Litery z folii, bez t\u0142a. Pokaz pogl\u0105dowy.' : '');\n    };\n\n    const runCut = () => {\n      if (running || !word || !demo) return;\n      if (preference.matches || typeof word.animate !== 'function') {\n        finishCut();\n        return;\n      }\n      running = true;\n      demo.classList.remove('is-cut-ready');\n      demo.classList.add('is-cutting');\n      demo.setAttribute('aria-busy', 'true');\n      cutButton.setAttribute('aria-disabled', 'true');\n      cutButton.classList.add('is-working');\n      setStage(1, 'Projekt: przygotowany uk\u0142ad liter.');\n      after(() => setStage(2, 'Ci\u0119cie: litery powstaj\u0105 z jednego arkusza folii.'), 270);\n\n      \/\/ Each glyph lifts out of the sheet, fans out and settles on the same surface.\n      \/\/ Deterministic motion makes repeat runs quiet and recognisable, with no flashing.\n      letters.forEach((letter, index) => {\n        const position = index - (letters.length - 1) \/ 2;\n        const x = position * 10;\n        const y = (index % 2 ? -1 : 1) * (18 + Math.abs(position) * 2.6);\n        const angle = position * 3.1;\n        const delay = index * 19;\n        const frames = [\n          { transform: 'translate3d(0,0,0) rotate(0deg) scale(1)', opacity: 1, offset: 0 },\n          { transform: 'translate3d(0,0,0) rotate(0deg) scale(1)', opacity: 1, offset: 0.19 },\n          { transform: `translate3d(${x * 0.22}px,${y * 0.16}px,0) rotate(${angle * 0.2}deg) scale(1.025)`, opacity: 1, offset: 0.34 },\n          { transform: `translate3d(${x}px,${y}px,0) rotate(${angle}deg) scale(.92)`, opacity: 0.22, offset: 0.51 },\n          { transform: `translate3d(${x * -0.08}px,${y * -0.11}px,0) rotate(${angle * -0.08}deg) scale(1.045)`, opacity: 1, offset: 0.83 },\n          { transform: 'translate3d(0,0,0) rotate(0deg) scale(1)', opacity: 1, offset: 1 }\n        ];\n        const animation = animate(letter, frames, {\n          duration: 1300,\n          delay,\n          easing: 'cubic-bezier(.22,.61,.36,1)',\n          fill: 'none'\n        });\n        if (animation) cutAnimations.push(animation);\n      });\n      after(() => setStage(3, 'Gotowy napis: litery bez t\u0142a, na wybranej powierzchni.'), 1190);\n      after(() => finishCut(), 1590);\n    };\n    if (cutButton && demo && word) {\n      cutButton.disabled = false;\n      cutButton.addEventListener('click', runCut);\n      setStage(1);\n    }\n\n    const setFoil = color => {\n      if (!word || !\/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$\/i.test(color || '')) return;\n      word.style.setProperty('--sa-foil-color', color);\n      const preview = find('#sa-vinyl-preview');\n      if (preview) {\n        preview.style.setProperty('--sa-foil-color', color);\n        const hex = color.slice(1);\n        const rgb = hex.length < 5\n          ? hex.slice(0, 3).split('').map(channel => parseInt(channel + channel, 16) \/ 255)\n          : [0, 2, 4].map(offset => parseInt(hex.slice(offset, offset + 2), 16) \/ 255);\n        const channels = rgb.map(channel => channel <= 0.04045 ? channel \/ 12.92 : Math.pow((channel + 0.055) \/ 1.055, 2.4));\n        const darkFoil = channels[0] * 0.2126 + channels[1] * 0.7152 + channels[2] * 0.0722 < 0.18;\n        preview.style.setProperty('--sa-sheet-bg', darkFoil ? '#f4efe5' : '#211b2d');\n        preview.style.setProperty('--sa-sheet-ink', darkFoil ? '#211b2d' : '#fffdf7');\n        preview.style.setProperty('--sa-sheet-label', darkFoil ? '#211b2d' : '#b4dfd0');\n      }\n      all('[data-foil-color]').forEach(swatch => {\n        const selected = swatch.dataset.foilColor.toLowerCase() === color.toLowerCase();\n        swatch.setAttribute('aria-pressed', String(selected));\n        if (selected) {\n          const label = swatch.dataset.colorName || swatch.getAttribute('aria-label');\n          const selection = find('[data-selected-color]');\n          if (selection && label) selection.textContent = label;\n        }\n      });\n    };\n\n    const trustedImage = source => typeof source === 'string' && (\n      \/^https:\\\/\\\/[^\\s]+$\/i.test(source) ||\n      (\/^assets\\\/[a-z0-9_.\\\/-]+$\/i.test(source) && !source.split('\/').includes('..')) ||\n      \/^data:image\\\/(?:png|jpeg|webp);base64,[a-z0-9+\/=\\s]+$\/i.test(source)\n    );\n\n    const initialFoil = find('[data-foil-color][aria-pressed=\"true\"]');\n    const lightFoil = initialFoil ? initialFoil.dataset.foilColor : '#fffdf7';\n    const blackFoil = all('[data-foil-color]').find(swatch => \/czarn\/i.test(swatch.dataset.colorName || ''));\n    const darkFoil = blackFoil ? blackFoil.dataset.foilColor : '#211b2d';\n\n    all('[data-sa-surface]').forEach(button => {\n      button.addEventListener('click', () => {\n        if (!demo) return;\n        if (running) finishCut(false);\n        const surface = button.dataset.saSurface === 'car' ? 'car' : 'glass';\n        const photo = find('#sa-demo-photo');\n        const source = button.dataset.saImage;\n        const alt = button.dataset.saAlt;\n        demo.dataset.surface = surface;\n        all('[data-sa-surface]').forEach(option => {\n          const selected = option === button;\n          option.setAttribute('aria-pressed', String(selected));\n          option.classList.toggle('is-active', selected);\n        });\n        if (photo && trustedImage(source)) {\n          photo.src = source;\n          if (alt) photo.alt = alt;\n          animate(photo, [{ opacity: 0.78, transform: 'scale(1.018)' }, { opacity: 1, transform: 'scale(1)' }], { duration: 340, easing: 'ease-out' });\n        }\n        if (!visitorColor) setFoil(surface === 'car' ? darkFoil : lightFoil);\n        demo.classList.remove('is-cut-ready');\n        setStage(1, surface === 'car' ? 'Przyk\u0142adowy napis na aucie. Naci\u015bnij \u201eWytnij napis\u201d, aby zobaczy\u0107 efekt.' : 'Przyk\u0142adowy napis na szybie. Naci\u015bnij \u201eWytnij napis\u201d, aby zobaczy\u0107 efekt.');\n      });\n    });\n\n    const note = find('#sa-studio-note') || find('[data-studio-note]');\n    const noteToggle = find('#sa-color-toggle') || find('[data-color-toggle]');\n    if (note && !find('[data-selected-color]')) {\n      const selectionLine = document.createElement('p');\n      selectionLine.className = 'studio-selected-color';\n      selectionLine.append(document.createTextNode('W pokazie: '));\n      const selection = document.createElement('strong');\n      selection.dataset.selectedColor = '';\n      selectionLine.append(selection);\n      note.append(selectionLine);\n    }\n    setFoil(lightFoil);\n    if (note && noteToggle) {\n      if (!note.id) note.id = 'sa-studio-note';\n      noteToggle.setAttribute('aria-controls', note.id);\n      noteToggle.setAttribute('aria-expanded', String(!note.hidden));\n      const setNote = show => {\n        note.hidden = !show;\n        noteToggle.setAttribute('aria-expanded', String(show));\n        if (show) {\n          animate(note, [\n            { opacity: 0.65, transform: 'translate3d(8px,7px,0) rotate(-3deg)' },\n            { opacity: 1, transform: 'translate3d(0,0,0) rotate(0deg)' }\n          ], { duration: 250, easing: 'cubic-bezier(.2,.7,.2,1)' });\n          const firstControl = note.querySelector('[data-foil-color], button, a[href], input');\n          if (firstControl) firstControl.focus({ preventScroll: true });\n        }\n      };\n      noteToggle.disabled = false;\n      noteToggle.addEventListener('click', () => setNote(note.hidden));\n      note.querySelectorAll('[data-note-close]').forEach(button => button.addEventListener('click', () => {\n        setNote(false);\n        noteToggle.focus({ preventScroll: true });\n      }));\n      note.addEventListener('keydown', event => {\n        if (event.key === 'Escape') {\n          event.preventDefault();\n          setNote(false);\n          noteToggle.focus({ preventScroll: true });\n        }\n      });\n      noteToggle.addEventListener('keydown', event => {\n        if (event.key === 'Escape' && !note.hidden) {\n          event.preventDefault();\n          setNote(false);\n          noteToggle.focus({ preventScroll: true });\n        }\n      });\n    }\n\n    all('[data-foil-color]').forEach(swatch => {\n      swatch.addEventListener('click', () => {\n        visitorColor = true;\n        setFoil(swatch.dataset.foilColor);\n        all('[data-foil-color]').forEach(other => other.setAttribute('aria-pressed', String(other === swatch)));\n        const label = swatch.dataset.colorName || swatch.getAttribute('aria-label') || 'wybrany';\n        const selection = find('[data-selected-color]');\n        if (selection) selection.textContent = label;\n        if (status) status.textContent = `Kolor w pokazie: ${label}. Dost\u0119pno\u015b\u0107 folii potwierdz\u0119 przy wycenie.`;\n        animate(word, [{ transform: 'scale(1)' }, { transform: 'scale(1.025)' }, { transform: 'scale(1)' }], { duration: 260, easing: 'ease-out' });\n      });\n    });\n\n    const reveal = (element, index = 0) => {\n      if (element.hidden || preference.matches) return;\n      const previous = revealAnimations.get(element);\n      if (previous) previous.cancel();\n      const animation = animate(element, [\n        { opacity: 0.76, transform: 'translate3d(0,13px,0)' },\n        { opacity: 1, transform: 'translate3d(0,0,0)' }\n      ], { duration: 390, delay: Math.min(index, 4) * 28, easing: 'cubic-bezier(.2,.7,.2,1)', fill: 'none' });\n      if (animation) {\n        revealAnimations.set(element, animation);\n        const remove = () => { if (revealAnimations.get(element) === animation) revealAnimations.delete(element); };\n        animation.addEventListener('finish', remove, { once: true });\n        animation.addEventListener('cancel', remove, { once: true });\n      }\n    };\n\n    \/\/ Progressive enhancement: images and descriptions stay visible before JS,\n    \/\/ before entering the viewport and when IntersectionObserver is unavailable.\n    let entranceObserver = null;\n    if (!preference.matches && 'IntersectionObserver' in window) {\n      entranceObserver = new IntersectionObserver(entries => {\n        let index = 0;\n        entries.forEach(entry => {\n          if (!entry.isIntersecting) return;\n          entranceObserver.unobserve(entry.target);\n          reveal(entry.target, index++);\n        });\n      }, { threshold: 0.12, rootMargin: '0px 0px -12px 0px' });\n      all('[data-motion-reveal], .product').forEach(element => entranceObserver.observe(element));\n    }\n\n    \/\/ The existing catalog script owns filtering and the hidden attribute.\n    \/\/ This observes its result; it never changes products, filters or quote handlers.\n    const productGrid = find('#product-grid');\n    if (productGrid && 'MutationObserver' in window) {\n      const filterObserver = new MutationObserver(records => {\n        const shown = new Set();\n        records.forEach(record => {\n          const card = record.target;\n          if (!card.classList.contains('product')) return;\n          if (card.hidden) {\n            const previous = revealAnimations.get(card);\n            if (previous) previous.cancel();\n          } else if (record.oldValue !== null) {\n            shown.add(card);\n          }\n        });\n        Array.from(shown).forEach((card, index) => {\n          if (entranceObserver) entranceObserver.unobserve(card);\n          reveal(card, index);\n        });\n      });\n      filterObserver.observe(productGrid, { attributes: true, attributeFilter: ['hidden'], attributeOldValue: true, subtree: true });\n    }\n\n    const preferenceChanged = () => {\n      if (!preference.matches) return;\n      if (running) finishCut();\n      animations.forEach(animation => animation.cancel());\n      if (entranceObserver) entranceObserver.disconnect();\n    };\n    if (typeof preference.addEventListener === 'function') preference.addEventListener('change', preferenceChanged);\n    else if (typeof preference.addListener === 'function') preference.addListener(preferenceChanged);\n\n    document.addEventListener('visibilitychange', () => {\n      if (document.hidden && running) finishCut(false);\n    });\n  };\n  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', initialize, { once: true });\n  else initialize();\n})();\n\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Napisy i logo z folii wycinanej na samochody, witryny i drzwi. Godziny otwarcia, telefon i w\u0142asny tekst. Wysy\u0142ka w Polsce oraz monta\u017c we Wroc\u0142awiu.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"szablonart-katalog","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/szablon-art.pl\/index.php?rest_route=\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/szablon-art.pl\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/szablon-art.pl\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/szablon-art.pl\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/szablon-art.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=15"}],"version-history":[{"count":10,"href":"https:\/\/szablon-art.pl\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":117,"href":"https:\/\/szablon-art.pl\/index.php?rest_route=\/wp\/v2\/pages\/15\/revisions\/117"}],"wp:attachment":[{"href":"https:\/\/szablon-art.pl\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}