@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@600;700;800&display=swap');
:root{--ink:#111111;--paper:#ffffff;--cream:#fff9df;--yellow:#ffd400;--accent:#e3312b;--muted:#66625b;--line:#dedbd2;--dark:#111111}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',system-ui,sans-serif;line-height:1.6}header{height:82px;display:flex;align-items:center;justify-content:space-between;padding:0 5vw;border-bottom:1px solid var(--line);position:sticky;top:0;background:rgba(255,255,255,.96);backdrop-filter:blur(12px);z-index:20}.brand{font-family:Manrope,sans-serif;font-weight:800;font-size:1.25rem;color:var(--ink);text-decoration:none}.pulse{color:var(--accent)}nav{display:flex;gap:1.3rem;align-items:center}nav a{color:var(--ink);text-decoration:none;font-size:.9rem}.nav-cta{border:2px solid var(--ink);padding:.55rem .9rem;background:var(--yellow);box-shadow:3px 3px 0 var(--ink)}.menu{display:none;background:none;border:0;font-size:1.6rem}.hero,.subhero,.intro,.cards,.process,.brands,.cta,.servicegrid,.twocol,.note,.gallery,.mapwrap,.story,.contactgrid,.contacttip,.quote{max-width:1240px;margin:auto;padding:2rem 3vw}.hero{min-height:0;display:grid;grid-template-columns:1.4fr .6fr;gap:2rem;align-items:center}.eyebrow{font-size:.74rem;letter-spacing:.18em;font-weight:800;color:var(--accent);margin:0 0 1rem}.hero h1,.subhero h1{font-family:Manrope,sans-serif;font-size:clamp(3.4rem,8vw,7.8rem);line-height:.91;letter-spacing:-.065em;margin:.1em 0 .28em}.subhero h1{font-size:clamp(3rem,7vw,6.6rem)}em{font-style:normal;color:var(--accent)}.lead{font-size:clamp(1.05rem,1.8vw,1.35rem);max-width:780px;color:#514d47}.actions{display:flex;gap:.8rem;flex-wrap:wrap;margin:2rem 0}.btn{display:inline-block;border:2px solid var(--ink);padding:.9rem 1.2rem;color:var(--ink);text-decoration:none;font-weight:800;background:white;box-shadow:4px 4px 0 var(--ink);transition:transform .15s,box-shadow .15s}.btn:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}.btn.primary{background:var(--yellow);color:var(--ink)}.stats{display:flex;gap:2.5rem;margin-top:2rem}.stats div{display:flex;flex-direction:column}.stats b{font-size:1.05rem}.stats span{font-size:.8rem;color:var(--muted)}.hero-art{height:480px;background:var(--yellow);color:var(--ink);border:3px solid var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(1.5deg);box-shadow:14px 14px 0 var(--accent)}.cup{font-size:7rem}.steam{font-size:2rem;letter-spacing:.4em;color:var(--accent);font-weight:800}.hero-art p{text-align:center}.intro{display:grid;grid-template-columns:.6fr 1fr 1fr;gap:3rem;border-top:1px solid var(--line)}h2{font-family:Manrope,sans-serif;font-size:clamp(2rem,4vw,3.5rem);line-height:1.05;letter-spacing:-.04em;margin:.1em 0 .6em}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);padding-top:0;padding-bottom:0}.card{background:var(--paper);padding:1.5rem;color:var(--ink);text-decoration:none;min-height:280px;display:flex;flex-direction:column}.card span,.worktext span{font-size:.75rem;color:var(--accent);font-weight:700;letter-spacing:.12em}.card h3{font-family:Manrope;font-size:1.8rem;margin-top:auto}.card b{margin-top:1.5rem}.process{display:grid;grid-template-columns:.8fr 1.2fr;gap:2rem}.process ol{list-style:none;margin:0;padding:0;counter-reset:x}.process li{padding:1.4rem 0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr 2fr;gap:1rem}.process li b{font-size:1.1rem}.process li span{color:var(--muted)}.brands{background:var(--dark);color:white;max-width:none;padding-left:max(3vw,calc((100vw - 1240px)/2 + 3vw));padding-right:max(3vw,calc((100vw - 1240px)/2 + 3vw))}.brandcloud{font-family:Manrope;font-weight:700;font-size:clamp(1.5rem,3vw,2.6rem);line-height:1.7;color:#d8d0c4}.textlink{display:inline-block;margin-top:2rem;color:white}.cta{text-align:center}.cta .actions{justify-content:center}.subhero{padding-bottom:2rem}.servicegrid{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);padding-top:0;padding-bottom:0}.servicegrid article{background:var(--paper);padding:1.5rem}.servicegrid h2{font-size:2rem}.twocol{display:grid;grid-template-columns:1fr 1fr;gap:2rem}.brandlist{display:flex;flex-wrap:wrap;gap:.7rem}.brandlist span{border:2px solid var(--ink);padding:.8rem 1rem;background:var(--yellow);font-weight:700}.note{padding-top:1rem;padding-bottom:1rem;color:var(--muted);font-size:.9rem}.quote blockquote{font-family:Manrope;font-size:clamp(2rem,5vw,4rem);line-height:1.1;margin:0;border-left:8px solid var(--accent);padding-left:2rem}.gallery{display:grid;gap:3rem}.work{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:1px;background:var(--line)}.placeholder{min-height:330px;background:var(--yellow);border:2px solid var(--ink);display:flex;align-items:center;justify-content:center;flex-direction:column;font-family:Manrope;font-size:2rem}.placeholder small{font:400 .8rem 'DM Sans';color:var(--muted)}.worktext{background:var(--paper);padding:2rem}.worktext h2{font-size:1.8rem}.mapwrap{display:grid;grid-template-columns:1.2fr .8fr;gap:2rem;align-items:center}.map{height:520px;background:#fff7c2;position:relative;overflow:hidden;border:1px solid var(--line)}.region{position:absolute;inset:18% 13%;border:4px solid var(--accent);background:rgba(255,212,0,.38);border-radius:47% 53% 56% 44%;display:grid;place-items:center;font:800 2rem Manrope;color:#8d8477;transform:rotate(-7deg)}.pin{position:absolute;background:var(--ink);color:white;padding:.35rem .55rem;font-size:.75rem;z-index:2}.p1{left:47%;top:43%}.p2{left:52%;top:52%}.p3{left:28%;top:25%}.story{display:grid;grid-template-columns:.8fr 1.2fr;gap:2rem}.portrait{min-height:600px;background:var(--yellow);color:var(--ink);border:3px solid var(--ink);box-shadow:12px 12px 0 var(--accent);display:grid;place-items:center;text-align:center;font:800 2rem Manrope}.portrait small{font:400 .8rem 'DM Sans';color:#aaa}.story h2{font-size:3rem}.signature{font:700 1.5rem Manrope;margin-top:3rem}.signature span{font-size:.9rem;color:var(--accent)}.contactgrid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);padding-top:0;padding-bottom:0}.contactgrid>a,.contactgrid>div{background:var(--paper);padding:1.5rem;display:flex;flex-direction:column;text-decoration:none;color:var(--ink)}.contactgrid span{font-size:.72rem;letter-spacing:.15em;color:var(--accent);font-weight:700}.contactgrid b{font:700 clamp(1.3rem,2.5vw,2rem) Manrope;margin:.6rem 0}.contactgrid small{color:var(--muted)}footer{background:var(--dark);color:#f7f7f7;border-top:10px solid var(--yellow);padding:2rem 3vw;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3rem}footer .brand{color:white}footer div{display:flex;flex-direction:column;gap:.5rem}footer a{color:#ddd;text-decoration:none}footer p{max-width:430px;color:#aaa}footer small{grid-column:1/-1;border-top:1px solid #444;padding-top:1.5rem;color:#777}
@media(max-width:900px){header{height:70px}.menu{display:block}nav{display:none;position:absolute;top:70px;left:0;right:0;background:var(--paper);padding:1.5rem 5vw;flex-direction:column;align-items:stretch;border-bottom:1px solid var(--line)}nav.open{display:flex}.hero{grid-template-columns:1fr;padding-top:2rem}.hero-art{height:300px}.stats{gap:1rem;flex-wrap:wrap}.intro,.process,.twocol,.mapwrap,.story{grid-template-columns:1fr}.cards,.servicegrid{grid-template-columns:1fr}.work{grid-template-columns:1fr 1fr}.worktext{grid-column:1/-1}.contactgrid{grid-template-columns:1fr}.portrait{min-height:420px}footer{grid-template-columns:1fr}.hero,.subhero,.intro,.process,.brands,.cta,.servicegrid,.twocol,.note,.gallery,.mapwrap,.story,.contactgrid,.contacttip,.quote{padding-left:4vw;padding-right:4vw}}@media(max-width:560px){.hero h1,.subhero h1{font-size:3.25rem}.hero,.subhero,.intro,.process,.brands,.cta,.twocol,.note,.gallery,.mapwrap,.story,.contacttip,.quote{padding-top:1.5rem;padding-bottom:1.5rem}.stats{display:grid;grid-template-columns:1fr 1fr}.work{grid-template-columns:1fr}.worktext{grid-column:auto}.placeholder{min-height:240px}.story h2{font-size:2.2rem}.map{height:360px}.contactgrid>a,.contactgrid>div,.card,.servicegrid article{padding:1.25rem}footer{padding:1.5rem 4vw}}

/* Identyfikacja v2: żółty / czerwony / czarny / biały */
.brand{letter-spacing:-.035em}.brand .pulse{display:inline-block;background:var(--accent);color:white;padding:.08em .28em;transform:skew(-6deg);margin-right:.12em}.hero h1 em,.subhero h1 em{color:var(--accent)}.hero-art .cup{filter:grayscale(1);text-shadow:5px 5px 0 rgba(227,49,43,.22)}.cards{border-top:8px solid var(--yellow);border-bottom:8px solid var(--accent)}.card:hover{background:var(--cream)}.brands{border-top:10px solid var(--yellow);border-bottom:10px solid var(--accent)}.brands .eyebrow{color:var(--yellow)}.brands .brandcloud{color:white}.textlink{color:var(--yellow);font-weight:800}.quote blockquote{border-left-color:var(--accent)}::selection{background:var(--yellow);color:var(--ink)}

/* OpenStreetMap */
.osm-map{background:#eee;border:3px solid var(--ink);box-shadow:8px 8px 0 var(--yellow);height:auto;min-height:520px;display:flex;flex-direction:column;overflow:hidden}
.osm-map iframe{display:block;width:100%;height:480px;border:0;flex:1;min-height:480px}
.map-credit{margin:0;padding:.75rem 1rem;background:var(--paper);border-top:2px solid var(--ink);font-size:.82rem}
.map-credit a{color:var(--ink);font-weight:800;text-decoration:none}
.map-credit a:hover{text-decoration:underline}
@media(max-width:560px){.osm-map{min-height:390px}.osm-map iframe{height:350px;min-height:350px}}

/* Oryginalne logo EKG Ekspresu */
.brand{display:inline-flex;align-items:center;flex-shrink:0;line-height:1}
.brand-logo{display:block;width:72px;height:auto;aspect-ratio:1;object-fit:contain}
footer .brand{align-self:flex-start}
footer .brand-logo{width:180px}
@media(max-width:1100px) and (min-width:901px){nav{gap:.7rem}nav a{font-size:.8rem}}
@media(max-width:900px){header .brand-logo{width:62px}}

/* Kod QR na stronie kontaktowej */
.contactgrid>.contact-qr{grid-column:1/-1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:2rem}
.contact-qr h2{font-size:clamp(1.8rem,3vw,2.5rem);margin-top:.5rem}
.contact-qr p{color:var(--muted);margin-bottom:1.5rem}
.contact-qr img{display:block;width:280px;max-width:100%;height:auto;flex-shrink:0;background:white}
@media(max-width:560px){.contactgrid>.contact-qr{flex-direction:column;align-items:flex-start}.contact-qr img{align-self:center}}

/* Media społecznościowe w stopce */
footer .social-link{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;flex-shrink:0}
footer .social-link img{display:block;filter:invert(1)}
footer .social-link:hover,footer .social-link:focus-visible{color:var(--yellow);text-decoration:underline;text-underline-offset:4px}

/* Dolny wiersz stopki: prawa autorskie i ikony */
footer .footer-bottom{grid-column:1/-1;display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:1rem;border-top:1px solid #444;padding-top:1.5rem}
footer .footer-bottom small{border:0;padding:0}

/* Zdjęcie na stronie O mnie */
.story .portrait-photo{display:block;width:100%;height:auto;aspect-ratio:1;object-fit:cover;object-position:center 30%;min-height:0;align-self:start}

/* Karuzela zdjęć */
.carousel{max-width:1240px;margin:0 auto;padding:0 3vw 2rem}
.carousel-stage{position:relative;background:#171717;border:2px solid var(--ink)}
.carousel-slide{margin:0;height:clamp(320px,55vw,650px)}
.carousel-slide[hidden]{display:none}
.carousel-slide img{display:block;width:100%;height:100%;object-fit:contain}
.carousel-arrow{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border:2px solid var(--ink);background:var(--yellow);color:var(--ink);font:400 2.5rem/1 system-ui;cursor:pointer;display:grid;place-items:center}
.carousel-prev{left:1rem}.carousel-next{right:1rem}
.carousel-arrow:hover{background:white}
.carousel-meta{display:flex;justify-content:space-between;gap:1rem;align-items:center;margin:1rem 0 1.5rem;font-size:.9rem}
.carousel-count{white-space:nowrap;font-weight:700;color:var(--accent)}
.carousel-thumbs{display:flex;gap:.75rem;overflow-x:auto;padding:4px 4px 12px}
.carousel-thumb{flex:0 0 110px;height:80px;padding:0;border:3px solid transparent;opacity:.6;background:var(--ink);cursor:pointer}
.carousel-thumb img{display:block;width:100%;height:100%;object-fit:cover}
.carousel-thumb[aria-pressed="true"]{border-color:var(--accent);opacity:1}
.carousel-thumb:hover{opacity:1}
.carousel button:focus-visible,.carousel:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(min-width:901px) and (max-width:1200px){header nav{gap:.55rem}header nav a{font-size:.75rem}}
@media(max-width:560px){.carousel{padding:0 4vw 1.5rem}.carousel-slide{height:420px;max-height:65vh}.carousel-arrow{width:40px;height:44px}.carousel-prev{left:.5rem}.carousel-next{right:.5rem}.carousel-thumb{flex-basis:80px;height:62px}}

/* Osobne realizacje z niezależnymi karuzelami */
.projects{max-width:1240px;margin:auto;padding:0 3vw 2rem}
.project+.project{border-top:1px solid var(--line);padding-top:2rem;margin-top:2rem}
.project-heading{max-width:760px;margin-bottom:2rem}
.project-heading h2{font-size:clamp(2rem,4vw,3rem)}
.project-heading>p:last-child{color:var(--muted)}
.project .carousel{padding:0;max-width:none}
@media(max-width:900px){.projects{padding-left:4vw;padding-right:4vw}}

/* Mniejszy odstęp między nagłówkiem a treścią podstron */
.subhero{padding:2rem 3vw}
@media(max-width:560px){.subhero{padding:1.5rem 4vw}}

/* Mniejsze paddingi sekcji dwukolumnowych */
.twocol{padding:2rem 3vw}
@media(max-width:560px){.twocol{padding:1.5rem 4vw}}

footer .footer-links{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;align-content:center;gap:.5rem 1.5rem}


footer .footer-links{grid-column:1/-1}
