@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;450;500&display=swap');
:root{--bg:#0b1113;--panel:#10191c;--panel2:#121e21;--text:#eef3ee;--muted:#91a09f;--line:#273234;--accent:#bcf285;--accent-dark:#17251b;--mono:'IBM Plex Mono',monospace;--heading:'Space Grotesk',sans-serif;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--bg);color:var(--text);font-family:'DM Sans',sans-serif;font-size:15px;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{border:0}::selection{background:var(--accent);color:#111}.wrap{width:calc(100% - 112px);max-width:1328px;margin:auto}.header{height:102px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.logo{font:700 34px var(--heading);letter-spacing:-3px}.logo span{color:var(--accent)}nav{display:flex;gap:36px;margin-left:90px}nav a{font-size:13px;color:var(--muted);transition:color .2s}nav a:hover,nav a.current{color:var(--accent)}.header-actions{display:flex;gap:24px;align-items:center}.icon-button{width:32px;height:32px;background:none;font-size:24px}.contact-link{font-size:13px}.contact-link span{margin-left:20px;color:var(--accent)}.hero{display:grid;grid-template-columns:1.13fr 1fr;gap:40px;align-items:center;min-height:663px;padding-block:70px 64px}.eyebrow,.section-label{font:10px var(--mono);letter-spacing:1.2px;display:flex;align-items:center;gap:10px}.eyebrow{font-size:10px;white-space:nowrap}.slash{color:var(--muted);margin-inline:6px}.status-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px #bcf28550;flex-shrink:0}h1{font:500 clamp(42px,4.75vw,70px)/1.09 var(--heading);letter-spacing:-3.5px;margin:30px 0 23px}h1>span{color:var(--accent)}.hero-copy>p{color:var(--muted);font-size:15px;line-height:1.8;margin:0 0 31px}.hero-actions{display:flex;gap:12px}.button{display:inline-flex;justify-content:space-between;align-items:center;gap:25px;padding:16px 21px;font-size:12px;font-weight:600;border:1px solid transparent;transition:transform .2s,background .2s}.button:hover{transform:translateY(-3px)}.primary{background:var(--accent);color:#142016}.secondary{background:transparent;border-color:var(--line)}.secondary:hover{background:var(--panel)}.hero-foot{display:flex;gap:20px;align-items:center;font:8px var(--mono);letter-spacing:.7px;color:var(--muted);margin-top:42px}.tiny-cross{font-size:15px;color:var(--accent)}.network-panel{border:1px solid var(--line);border-radius:5px;background:radial-gradient(ellipse at center,#1a312c66,transparent 70%),var(--panel);overflow:hidden}.panel-top,.panel-bottom{padding:16px 19px;display:flex;justify-content:space-between;font:8px var(--mono);letter-spacing:1px;color:var(--muted)}.panel-top{border-bottom:1px solid var(--line)}.panel-top>span:first-child{color:var(--text)}.panel-top i{display:inline-block;width:5px;height:5px;border:1px solid var(--accent);margin-right:7px}.mono{font-family:var(--mono)}.network-stage{height:342px;position:relative;isolation:isolate;background-image:radial-gradient(#6d89822b 1px,transparent 1px);background-size:19px 19px}.orbit{position:absolute;width:265px;height:265px;border:1px solid #8ebda228;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);z-index:-1}.orbit-two{width:190px;height:265px}.orbit-three{width:80px;height:265px}.globe-line{position:absolute;left:50%;top:50%;width:265px;height:110px;transform:translate(-50%,-50%);border:1px solid #8ebda228;border-radius:50%;z-index:-1}.globe-line-two{height:205px}.connections{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.connections path{fill:none;stroke:url(#line);stroke-width:1;stroke-dasharray:4 5;opacity:.6}.connections circle{fill:var(--accent)}.region{position:absolute;font:7px var(--mono);letter-spacing:2px;color:#6e9186}.region-top{top:21px;left:44%}.region-left{left:15px;top:49%}.region-right{right:11px;top:49%;writing-mode:vertical-rl}.node{position:absolute;display:flex;align-items:center;flex-direction:column;gap:6px;background:var(--panel);border:1px solid #3f5750;border-radius:4px;width:110px;padding:12px 4px 9px;transition:background .2s,transform .2s,border .2s;box-shadow:0 4px 20px #0002}.node:hover,.node[aria-pressed=true]{border-color:var(--accent);background:var(--accent-dark);transform:translateY(-4px)}.node>span:not(.node-icon){font:10px var(--heading)}.node-icon{font-size:22px;color:var(--accent);line-height:1}.node small{font:6px var(--mono);letter-spacing:1px;color:var(--muted)}.node-security{left:10%;top:12%}.node-cluster{right:9%;top:12%}.node-data{left:10%;bottom:10%}.node-process{right:9%;bottom:10%}.core{position:absolute;width:92px;height:92px;left:50%;top:49%;transform:translate(-50%,-50%);background:#14221e;border:1px solid #a0c47b;border-radius:16px;display:flex;align-items:center;justify-content:center;flex-direction:column;box-shadow:0 0 40px #bcf2850d}.core-symbol{font:600 35px var(--heading);letter-spacing:-3px}.core-symbol span{color:var(--accent)}.core>span{font:7px var(--mono);letter-spacing:1px;color:var(--accent)}.core-pulse{position:absolute;inset:-8px;border:1px solid #bcf28520;border-radius:22px;animation:breathe 4s infinite}.node-inspector{margin:0 15px;padding:14px 12px;background:#18252380;border:1px solid #324039;display:flex;gap:10px;align-items:center;min-height:72px}.inspector-icon,.inspector-arrow{color:var(--accent)}.inspector-arrow{margin-left:auto}.node-inspector strong{font-weight:500;font-size:11px}.node-inspector p{font-size:10px;color:var(--muted);line-height:1.6;margin:5px 0 0}.panel-bottom{font-size:6px;letter-spacing:.7px}.panel-bottom .status-dot{width:4px;height:4px;margin-right:6px}.principles{border-block:1px solid var(--line);background:var(--panel)}.principles-inner{display:flex;align-items:center;justify-content:space-between;min-height:77px;gap:24px;font:10px var(--mono);color:var(--muted)}.principles-inner>span:first-child{font-size:8px;letter-spacing:1px;max-width:170px;line-height:1.8}.principles b{font:500 13px var(--heading);color:var(--text);margin-left:12px}.section{padding-block:76px;border-bottom:1px solid var(--line)}.section-label{color:var(--muted);justify-content:space-between;font-size:9px}.small-mark{font-size:16px;color:var(--accent)}h2{font:500 40px/1.18 var(--heading);letter-spacing:-1.8px;margin:0}h2 span{color:var(--muted)}.about-content{display:grid;grid-template-columns:1fr 1fr;gap:75px;margin-top:33px}.about-content p{font-size:14px;line-height:1.9;margin:0 0 16px}.muted{color:var(--muted)}.text-link{font-size:12px;color:var(--accent);display:inline-block;margin-top:10px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin:30px 0 34px}.section-heading>p{font-size:13px;line-height:1.8;color:var(--muted);margin:0}.expertise-grid{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line)}details{position:relative;padding:26px;align-self:start;min-height:224px}details+details{border-left:1px solid var(--line)}summary{list-style:none;cursor:pointer}summary::-webkit-details-marker{display:none}.card-number{font:8px var(--mono);letter-spacing:1px;color:var(--muted)}.card-symbol{display:block;font-size:31px;color:var(--accent);margin:23px 0 18px}h3{font:500 24px/1.2 var(--heading);letter-spacing:-.6px;margin:0}.expand{position:absolute;right:25px;top:24px;color:var(--accent);font-size:18px}.details-content{padding-top:13px}.details-content p{color:var(--muted);font-size:12px;line-height:1.9;margin:0 0 18px}.tags{display:flex;gap:6px;flex-wrap:wrap}.tags span{font:8px var(--mono);border:1px solid var(--line);padding:5px 7px;color:var(--muted)}details[open]{background:var(--panel)}.filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:24px}.filters button{padding:10px 15px;background:none;border:1px solid var(--line);font-size:11px;color:var(--muted);transition:.2s}.filters button.active{background:var(--accent-dark);border-color:#7b9b5a;color:var(--accent)}.filters button:hover{color:var(--text)}.filters button span{margin-left:9px;opacity:.6}.tech-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}.tech-item{display:flex;align-items:center;gap:11px;padding:17px 12px;border:1px solid var(--line);background:var(--panel);animation:appear .3s both}.tech-item:hover{border-color:#608064;transform:translateY(-2px)}.tech-logo{font:500 20px var(--heading);width:25px;text-align:center;color:var(--tech-color)}.tech-name{font-size:11px}.stack-note{font:9px var(--mono);color:var(--muted);margin:23px 0 0}.stack-note span{color:var(--accent);margin-right:6px}.terminal-section{display:grid;grid-template-columns:.8fr 1.2fr;gap:75px;align-items:center}.terminal-intro .section-label{margin-bottom:25px}.terminal-intro p{font-size:13px;color:var(--muted);line-height:1.8}.command-shortcuts{display:flex;gap:8px;margin-top:25px}.command-shortcuts button{font:10px var(--mono);border:1px solid var(--line);background:none;padding:8px 10px;color:var(--accent)}.terminal{border:1px solid var(--line);background:#080e10;border-radius:5px;overflow:hidden;font:11px/1.8 var(--mono)}.terminal-bar{background:var(--panel2);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;padding:10px 15px;color:var(--muted);font-size:9px}.window-dots{display:flex;gap:5px}.window-dots i{height:6px;width:6px;background:#687a71;border-radius:50%}.window-dots i:first-child{background:#ab6862}.window-dots i:nth-child(2){background:#b5a66b}.terminal-bar button{background:none;font:9px var(--mono);color:var(--muted)}.terminal-output{height:155px;overflow:auto;padding:18px 20px 8px;scrollbar-width:thin}.terminal-output p{margin:0 0 7px;white-space:pre-wrap;overflow-wrap:anywhere;color:#92a5a1}.terminal-output b,.terminal-green{color:var(--accent)}#terminal-form{display:flex;padding:12px 20px 18px;align-items:center;gap:10px}#terminal-form label{color:var(--accent);white-space:nowrap}#terminal-form label span{color:#7c9eab}#terminal-input{background:none;color:#eef3ee;border:0;outline:none;min-width:0;width:100%;font:11px var(--mono)}#terminal-form button{background:none;color:var(--accent)}.contact-section{padding:70px 0 80px;background:var(--panel)}.contact-layout{display:grid;grid-template-columns:1.2fr 1fr;align-items:end;gap:65px;margin-top:34px}.contact-layout h2{font-size:42px}.contact-layout h2 span{color:var(--accent)}.contact-layout p{color:var(--muted);font-size:13px;line-height:1.8;margin:0 0 20px}.contact-layout .button{min-width:232px}.contact-layout small{font-size:10px;display:block;color:var(--muted);margin-top:12px}footer{display:flex;align-items:center;gap:30px;padding-block:30px;color:var(--muted);font:9px var(--mono)}footer .logo{font-size:27px;color:var(--text)}.footer-motto{margin-left:auto;letter-spacing:1px}footer>a:last-child{margin-left:24px}.skip{position:fixed;top:-60px;left:20px;padding:12px;background:var(--accent);color:#111;z-index:20}.skip:focus{top:10px}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);opacity:0;background:var(--accent);color:#142016;padding:14px 24px;font-size:12px;pointer-events:none;transition:.2s;z-index:30}.toast.show{opacity:1;transform:translate(-50%,0)}[data-theme=light]{--bg:#f4f5ef;--panel:#e9eee5;--panel2:#dbe4d7;--text:#14221b;--muted:#5d6d64;--line:#cdd6ca;--accent:#427323;--accent-dark:#e0ebd8;color-scheme:light}[data-theme=light] .primary{background:#b9ee83}[data-theme=light] .node-inspector{background:#d9e6d2}[data-theme=light] .core{color:#eef3ee}[data-theme=light] .core span{color:#b9ee83}[data-theme=light] .terminal{--accent:#bcf285}[data-theme=light] .terminal-bar{background:#1c2b27}@keyframes breathe{50%{inset:-14px;opacity:.3}}@keyframes appear{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}@media(min-width:1500px){.hero{min-height:730px}.network-stage{height:380px}}@media(max-width:1100px){.wrap{width:calc(100% - 64px)}.hero{gap:25px}h1{font-size:50px;letter-spacing:-2.5px}.hero-foot{gap:10px;font-size:7px}.hero-actions .button{padding:14px;gap:13px}.node{width:95px}.node-security,.node-data{left:5%}.node-cluster,.node-process{right:5%}.tech-grid{grid-template-columns:repeat(4,1fr)}.terminal-section{gap:35px}.contact-layout{gap:30px}.contact-layout h2{font-size:36px}.eyebrow{font-size:8px}}@media(max-width:800px){.header{height:80px}nav{margin:0;gap:20px}.hero{grid-template-columns:1fr;padding-block:50px;gap:40px}.hero-copy{max-width:600px}h1{font-size:clamp(42px,8vw,68px)}.eyebrow{font-size:10px}.hero-foot{font-size:8px;gap:20px;margin-top:30px}.network-stage{height:360px}.node-security,.node-data{left:14%}.node-cluster,.node-process{right:14%}.node{width:110px}.region-right{writing-mode:initial;right:15px}.principles-inner{flex-wrap:wrap;justify-content:flex-start;padding-block:20px;gap:22px}.principles-inner>span:first-child{flex-basis:100%;max-width:none}.principles b{font-size:11px}.section{padding-block:55px}.about-content{gap:30px}.expertise-grid{grid-template-columns:1fr}details{min-height:0}details+details{border-left:0;border-top:1px solid var(--line)}.card-symbol{position:absolute;top:65px;right:28px;margin:0}h3{font-size:24px;margin-top:20px}.details-content{max-width:90%}.section-heading p{max-width:240px}.terminal-section{grid-template-columns:1fr;gap:25px}.contact-layout{grid-template-columns:1fr;gap:30px}.contact-layout h2{font-size:42px}.footer-motto{display:none}footer>a:last-child{margin-left:auto}h2{font-size:34px}}@media(max-width:520px){.wrap{width:calc(100% - 40px)}nav{display:none}.header-actions{gap:15px}.header{height:74px}.logo{font-size:30px}.hero{padding-top:38px}.eyebrow{font-size:7px;gap:7px;letter-spacing:.7px}.slash{margin-inline:2px}h1{font-size:43px;letter-spacing:-2px;margin-top:25px}.hero-copy>p{font-size:13px}.hero-actions .button{font-size:10px;padding:14px 12px}.hero-foot{font-size:6px;gap:12px}.network-stage{height:310px}.node{width:95px}.node-security,.node-data{left:5%}.node-cluster,.node-process{right:5%}.core{width:72px;height:76px}.core-symbol{font-size:29px}.core>span{font-size:6px}.orbit{width:235px;height:235px}.orbit-two{width:170px}.orbit-three{width:80px}.globe-line{width:235px}.region{font-size:5px}.region-left{left:8px}.region-right{right:8px;writing-mode:vertical-rl}.panel-top{font-size:7px}.node-inspector strong{font-size:10px}.node-inspector p{font-size:9px}.panel-bottom{font-size:5px;padding-inline:15px}.principles-inner{gap:16px}.principles-inner>span{font-size:8px}.principles b{font-size:9px;margin-left:5px}.about-content{grid-template-columns:1fr;gap:25px}.about-content p{font-size:13px}.section-label{font-size:7px;letter-spacing:.8px}.section-heading{align-items:start;flex-direction:column;gap:18px}.section-heading p{font-size:12px;max-width:none}.tech-grid{grid-template-columns:repeat(2,1fr)}.tech-item{padding:14px 10px}.filters{gap:6px}.filters button{padding:9px 10px;font-size:10px}.stack-note{font-size:8px;line-height:1.8}.contact-layout h2{font-size:34px}.contact-section{padding-block:50px}.terminal{font-size:10px}footer{gap:18px;font-size:7px}footer>a:last-child{white-space:nowrap}.terminal-intro h2{font-size:32px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.connections circle{display:none}}@media print{body{background:white!important;color:#111!important;font-size:11px}nav,.header-actions,.hero-actions,.hero-foot,.network-panel,.principles,.filters,.terminal-section,.contact-layout .button,footer>a:last-child,.skip,.toast{display:none!important}.wrap{width:100%}.header{height:55px}.hero{display:block;min-height:0;padding:25px 0}h1{font-size:36px;letter-spacing:-1px}h1 span,h2 span,.logo span{color:#333!important}.hero-copy>p,.muted,.about-content p,.section-label,.section-heading p,.details-content p,.tech-name,.contact-layout p,.contact-layout small,footer{color:#333!important}.section{padding:23px 0;break-inside:avoid}.section-heading{margin:15px 0}.about-content{margin-top:15px}.expertise-grid{border:0;gap:15px}details{padding:0!important;border:0!important;background:none!important}.details-content{display:block!important}.expand,.card-symbol{display:none}h2{font-size:25px}h3{font-size:20px;margin-top:12px}.tech-grid{grid-template-columns:repeat(6,1fr)}.tech-item{padding:7px;background:none;border-color:#ddd}.tech-logo{font-size:15px}.contact-section{background:none;padding:25px 0}.contact-layout{margin-top:15px}.contact-layout h2{font-size:28px}.tags span{color:#333}.stack-note{color:#333}footer{padding:15px 0}}

/* ===== v2: portret, certyfikaty, animacje przewijania ===== */
:root{--gcp:#8ab4f8;--sec:#e8a06a;--pm:#c7b0ec;--ease:cubic-bezier(.2,.7,.1,1)}
[data-theme=light]{--gcp:#2f62c4;--sec:#b35a1f;--pm:#6b4cb0}
.scroll-progress{position:fixed;inset:0 0 auto;height:2px;z-index:50;pointer-events:none}
.scroll-progress span{display:block;height:100%;background:var(--accent);transform-origin:0 50%;transform:scaleX(var(--p,0))}
.site-header{position:sticky;top:0;z-index:40;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);transition:background .3s}
.header{border-bottom:0;height:84px;transition:height .3s var(--ease)}
.site-header.scrolled .header{height:64px}
.site-header.scrolled .logo{font-size:28px}
.logo{transition:font-size .3s var(--ease)}

/* czytelniejsze drobne napisy */
.eyebrow{font-size:11px}.section-label{font-size:11px}.card-number{font-size:10px}.tags span{font-size:10px;padding:6px 8px}
.details-content p{font-size:14px;line-height:1.8}.tech-name{font-size:13px}.stack-note{font-size:11px}
.principles-inner{font-size:11px}.principles-inner>span:first-child{font-size:10px}.principles b{font-size:14px}
.panel-top,.panel-bottom{font-size:9px}.node small{font-size:7px}.node>span:not(.node-icon){font-size:12px}
.node-inspector strong{font-size:13px}.node-inspector p{font-size:12px}.core>span{font-size:8px}
footer{font-size:11px}.terminal{font-size:12px}#terminal-input{font-size:12px}.terminal-bar,.terminal-bar button{font-size:10px}
.command-shortcuts{flex-wrap:wrap}.command-shortcuts button{font-size:11px;transition:background .2s}.command-shortcuts button:hover{background:var(--accent-dark)}

/* hero */
.hero{grid-template-columns:1.15fr .85fr;gap:72px;min-height:0;padding-block:72px 80px}
.hero-copy>p{font-size:17px;line-height:1.75;max-width:54ch}
h1{text-wrap:balance}
.hero-stats{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:0;margin:44px 0 0;border-top:1px solid var(--line)}
.hero-stats>div{padding:20px 28px 0 0;margin-right:28px;border-right:1px solid var(--line)}
.hero-stats>div:last-child{border-right:0;margin-right:0}
.hero-stats dt{font:500 38px/1 var(--heading);letter-spacing:-1.5px;color:var(--accent);font-variant-numeric:tabular-nums}
.hero-stats dt b{font-weight:500}
.hero-stats dd{margin:8px 0 0;font:11px/1.4 var(--mono);color:var(--muted);max-width:14ch}
.portrait{position:relative;margin:0;justify-self:end;width:100%;max-width:460px}
.portrait-frame{position:relative;aspect-ratio:4/5;max-width:100%;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--panel)}
.portrait-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 18%;transform:translateY(var(--py,0)) scale(1.08);will-change:transform}
.portrait-frame::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,color-mix(in srgb,var(--bg) 70%,transparent));pointer-events:none}
.tick{position:absolute;width:14px;height:14px;border:solid var(--accent);z-index:2}
.tick-tl{top:10px;left:10px;border-width:1px 0 0 1px}.tick-tr{top:10px;right:10px;border-width:1px 1px 0 0}
.tick-bl{bottom:10px;left:10px;border-width:0 0 1px 1px}.tick-br{bottom:10px;right:10px;border-width:0 1px 1px 0}
.portrait-caption{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px;font:10px var(--mono);letter-spacing:1px;color:var(--muted)}
.portrait-caption>span:first-child{display:flex;align-items:center;gap:8px;color:var(--text)}
.badge{position:absolute;display:flex;align-items:center;gap:12px;padding:12px 16px 12px 12px;background:color-mix(in srgb,var(--panel) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:6px;font:500 14px/1.25 var(--heading);box-shadow:0 18px 40px #0005;transition:transform .3s var(--ease),border-color .3s;z-index:3}
.badge:hover{transform:translateY(-4px);border-color:var(--accent)}
.badge small{display:block;font:9px var(--mono);letter-spacing:1.2px;color:var(--muted);margin-bottom:3px}
.badge-mark,.issuer-mark{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:6px;font:700 17px var(--heading);border:1px solid currentColor}
.badge-gcp{left:-48px;top:58%;animation:float 6s ease-in-out infinite}.badge-gcp .badge-mark,.issuer-mark.gcp{color:var(--gcp)}
.badge-sec{right:-28px;top:9%;animation:float 6s ease-in-out -3s infinite}.badge-sec .badge-mark,.issuer-mark.sec{color:var(--sec)}
.issuer-mark.pm{color:var(--pm)}
@keyframes float{50%{translate:0 -8px}}

/* o mnie */
.about-content{grid-template-columns:.9fr 1.1fr}
.about-content p{font-size:16px;line-height:1.8;max-width:62ch}
.about-card{display:flex;align-items:center;gap:16px;margin-top:40px;padding:14px;border:1px solid var(--line);border-radius:6px;max-width:360px;background:var(--panel)}
.about-card img,.contact-person img{width:64px;height:64px;border-radius:50%;object-fit:cover;border:1px solid var(--line);flex-shrink:0}
.about-card strong{display:block;font:500 17px var(--heading)}.about-card span{font:11px var(--mono);color:var(--muted)}
.duties{list-style:none;padding:0;margin:30px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line)}
.duties li{display:flex;gap:12px;padding:20px;background:var(--bg);font-size:14px;line-height:1.65;color:var(--muted)}
.duties li>span{color:var(--accent)}
.duties b{display:block;font:500 16px/1.3 var(--heading);color:var(--text);margin-bottom:6px}

/* certyfikaty */
.cert-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:12px}
.cert{position:relative;display:flex;flex-direction:column;gap:14px;padding:24px;border:1px solid var(--line);border-radius:6px;background:var(--panel);transition:border-color .3s,transform .4s var(--ease);min-width:0}
.cert:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));transform:translateY(-4px)}
.cert-featured{background:radial-gradient(120% 80% at 100% 0,color-mix(in srgb,var(--gcp) 14%,transparent),transparent 60%),var(--panel)}
.cert-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.cert-issuer{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}
.cert-level{font:9px var(--mono);letter-spacing:1.2px;color:var(--accent);border:1px solid var(--line);padding:4px 7px}
.cert h3{font-size:22px;margin:6px 0 0;text-wrap:balance}
.cert-featured h3{font-size:28px}
.cert>p{margin:0;color:var(--muted);font-size:14px;line-height:1.65}
.cert dl{display:flex;gap:28px;margin:auto 0 0;padding-top:16px;border-top:1px solid var(--line)}
.cert dt{font:9px var(--mono);letter-spacing:1px;color:var(--muted);text-transform:uppercase}
.cert dd{margin:4px 0 0;font:500 14px var(--heading);font-variant-numeric:tabular-nums}
.cert-verify{font-size:12px;font-weight:600;color:var(--accent)}
.cert-verify span{display:inline-block;transition:transform .2s}.cert-verify:hover span{transform:translate(3px,-3px)}
.cert-verify::before{content:"";position:absolute;inset:0}
.muted-link{color:var(--muted);font-weight:400}.muted-link::before{display:none}
.cert-timeline{position:relative;list-style:none;margin:56px 0 8px;padding:0;height:66px}
.cert-timeline::before{content:"";position:absolute;left:0;right:0;top:6px;height:1px;background:var(--line)}
.cert-timeline::after{content:"";position:absolute;left:0;right:0;top:6px;height:1px;background:var(--accent);transform-origin:0 50%;transform:scaleX(0);transition:transform 1.6s var(--ease) .3s}
.cert-timeline.in::after,html:not(.js) .cert-timeline::after{transform:scaleX(1)}
.cert-timeline li{position:absolute;left:var(--x);top:0;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;font-size:12px;color:var(--muted);white-space:nowrap}
.cert-timeline li:first-child{transform:none;align-items:flex-start;text-align:left}
.cert-timeline li:last-child{transform:translateX(-100%);align-items:flex-end;text-align:right}
.cert-timeline li::before{content:"";width:13px;height:13px;border-radius:50%;background:var(--bg);border:1px solid var(--accent);box-shadow:0 0 0 4px var(--bg)}
.cert-timeline b{font:500 12px var(--mono);color:var(--text)}

/* obszary działania */
.expertise-layout{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.expertise-layout .expertise-grid{grid-template-columns:1fr}
.expertise-layout details{min-height:0}
.expertise-layout details+details{border-left:0;border-top:1px solid var(--line)}
.expertise-layout .card-symbol{position:absolute;right:62px;top:20px;margin:0;font-size:22px}
.expertise-layout h3{margin-top:14px}
details{transition:background .3s}
summary:hover h3{color:var(--accent)}h3{transition:color .2s}
.region{display:none}

/* stack */
.tech-item{transition:border-color .2s,transform .2s}
.tech-grid{grid-template-columns:repeat(5,1fr)}
@media(max-width:1100px){.tech-grid{grid-template-columns:repeat(4,1fr)}}

/* kontakt */
.contact-person{display:flex;gap:18px;align-items:flex-start;margin-bottom:24px}
.contact-person p{margin:0!important;font-size:15px!important}
.contact-actions{display:flex;gap:10px;flex-wrap:wrap}
.contact-layout .button{min-width:0}
.contact-layout .button.primary{min-width:232px}

/* animacje: wejście przy ładowaniu i przy przewijaniu */
.js .load-in{opacity:0;transform:translateY(22px);animation:rise .9s var(--ease) forwards;animation-delay:calc(var(--d,0) * 110ms + 80ms)}
.js .reveal{opacity:0;transform:translateY(34px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:calc(var(--d,0) * 90ms)}
.js .reveal.in{opacity:1;transform:none}
.js .tech-item.reveal{transform:translateY(16px) scale(.97)}
.js .tech-item.reveal.in{transform:none}
.js .tech-item.reveal.in:hover{transform:translateY(-2px)}
@keyframes rise{to{opacity:1;transform:none}}

@media(max-width:1100px){
  .hero{gap:40px;grid-template-columns:1.1fr .9fr}.hero-stats{grid-template-columns:repeat(2,auto)}.hero-stats>div:nth-child(2){border-right:0;margin-right:0}
  .badge-gcp{left:-20px}.badge-sec{right:-12px}
  .cert-grid{grid-template-columns:1fr 1fr}
  .expertise-layout{grid-template-columns:1fr}
}
@media(max-width:800px){
  .header{height:72px}.site-header.scrolled .header{height:60px}
  .hero{grid-template-columns:1fr;gap:48px;padding-block:44px 56px}
  .portrait{justify-self:center;max-width:420px;order:-1}
  .badge-gcp{left:-12px;top:auto;bottom:70px}.badge-sec{right:-8px}
  .about-content{grid-template-columns:1fr}
  .duties{grid-template-columns:1fr}
  .expertise-layout .card-symbol{right:56px;top:22px}
}
@media(max-width:520px){
  .eyebrow{font-size:9px;letter-spacing:.6px;white-space:normal}.section-label{font-size:9px}
  .hero-copy>p{font-size:15px}
  .hero-stats{grid-template-columns:1fr 1fr}.hero-stats>div{padding:16px 12px 0 0;margin-right:12px}.hero-stats dt{font-size:32px}
  .hero-actions{flex-wrap:wrap}
  .portrait{max-width:none}
  .badge{padding:9px 12px 9px 9px;font-size:12px}.badge small{font-size:8px}.badge-mark{width:28px;height:28px;font-size:14px}
  .badge-gcp{left:-6px;bottom:62px}.badge-sec{right:-6px;top:6%}
  .portrait-caption{font-size:9px}
  .principles-inner>span{font-size:10px}.principles b{font-size:12px}
  .cert-grid{grid-template-columns:1fr}
  .cert-timeline{height:auto;display:grid;gap:14px;padding-left:22px}
  .cert-timeline::before,.cert-timeline::after{left:6px;right:auto;top:0;bottom:0;width:1px;height:auto;transform-origin:50% 0;transform:scaleY(0)}
  .cert-timeline.in::after{transform:scaleY(1)}
  .cert-timeline li,.cert-timeline li:first-child,.cert-timeline li:last-child{position:relative;left:0;transform:none;flex-direction:row;align-items:center;text-align:left;gap:10px;white-space:normal}
  .cert-timeline li::before{position:absolute;left:-22px}
  .about-content p{font-size:15px}
  .tech-grid{grid-template-columns:repeat(2,1fr)}.tech-name{font-size:12px}
  .stack-note{font-size:10px}
  .node small{font-size:6px}.panel-bottom{font-size:7px}
  footer{font-size:9px}.terminal{font-size:11px}
  .contact-person img{width:52px;height:52px}
}
@media(prefers-reduced-motion:reduce){.js .load-in,.js .reveal{opacity:1!important;transform:none!important}.badge{animation:none}.portrait-frame img{transform:scale(1.02)!important}.cert-timeline::after{transform:none!important}}
@media print{
  .site-header{position:static;backdrop-filter:none;background:none}.scroll-progress,.badge,.portrait-caption,.about-card,.contact-person img,.contact-actions .secondary,.network-panel,.hero-stats dd{display:none!important}
  .js .load-in,.js .reveal{opacity:1!important;transform:none!important;animation:none!important}
  .hero{display:grid!important;grid-template-columns:1fr 150px;gap:24px;align-items:start}.portrait{max-width:150px}.portrait-frame{border:0}.portrait-frame::after{display:none}.portrait-frame img{transform:none!important}.tick{display:none}
  .hero-stats{display:flex;gap:14px;border:0;margin-top:12px}.hero-stats>div{border:0;padding:0}.hero-stats dt{font-size:16px;color:#111!important}
  .cert-grid{grid-template-columns:1fr 1fr;gap:8px}.cert{padding:10px;background:none!important;border-color:#ccc}.cert h3,.cert-featured h3{font-size:14px}.cert>p{font-size:10px;color:#333!important}.cert-verify{color:#111!important;font-size:9px}.cert-timeline{display:none}
  .expertise-layout{display:block}.duties{background:none;border:0}.duties li{padding:6px 0;background:none;color:#333!important}
}
h2{text-wrap:balance}
@media(max-width:520px){.contact-layout h2 br,.section-heading h2 br{display:none}.portrait-frame{aspect-ratio:1/1.1}}
[data-theme=light] .tech-logo{filter:brightness(.62) saturate(1.5)}[data-theme=light] .badge{box-shadow:0 14px 30px #14221b22}
/* v3: loga technologii, odznaki, projekty */
.tech-logo{display:grid;place-items:center;width:26px;height:26px;flex-shrink:0;font-size:17px}
.tech-logo svg{width:22px;height:22px;fill:var(--tech-color)}
.tech-item.is-core{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 9%,transparent),transparent 70%),var(--panel)}
.tech-item.is-core .tech-name{font-weight:600}

.cert-badge{display:block;width:104px;height:104px;margin:4px 0 2px}
.cert-badge img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 8px 18px #0006);transition:transform .5s var(--ease)}
.cert:hover .cert-badge img{transform:rotate(-4deg) scale(1.05)}
.cert-featured .cert-badge{width:132px;height:132px}
.badge-img{width:44px;height:44px;object-fit:contain;flex-shrink:0}
.project-rows{border-top:1px solid var(--line)}
.project-row{display:grid;grid-template-columns:.8fr 1.4fr .8fr;gap:40px;align-items:start;padding:28px 0;border-bottom:1px solid var(--line);transition:background .3s,padding .4s var(--ease)}
.project-row:hover{background:var(--panel);padding-inline:20px}
.project-row h3{font-size:24px;transition:color .2s}.project-row:hover h3{color:var(--accent)}
.project-row p{margin:0;color:var(--muted);font-size:15px;line-height:1.7;max-width:60ch}
.project-row .tags{justify-content:flex-end}
@media(max-width:900px){.project-row{grid-template-columns:1fr;gap:12px}.project-row .tags{justify-content:flex-start}}
@media(max-width:520px){.cert-badge{width:88px;height:88px}.cert-featured .cert-badge{width:104px;height:104px}.badge-img{width:32px;height:32px}.tech-item.is-core::after{display:none}}
@media print{.cert-badge{width:48px;height:48px}.cert-badge img{filter:none}.project-row{padding:8px 0}.project-row p{color:#333!important}}
.tech-logo{width:32px}.tech-logo[data-icon=php] svg,.tech-logo[data-icon=vmware] svg,.tech-logo[data-icon=amazonwebservices] svg{width:32px;height:32px}
/* kadr do ramion: pełna szerokość, bez powiększenia */
.portrait-frame,.portrait-frame{aspect-ratio:1/1}
.portrait-frame img{object-position:50% 0;transform:none!important}
@media(max-width:520px){.portrait-frame{aspect-ratio:1/1}}
.portrait-frame{aspect-ratio:4/5}
@media(max-width:520px){.portrait-frame{aspect-ratio:4/5}}
