@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/archivo-latin-wght-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Archivo;font-style:normal;font-weight:100 900;font-display:swap;src:url(fonts/archivo-latin-ext-wght-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url(fonts/jetbrains-mono-latin-wght-normal.woff2) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:100 800;font-display:swap;src:url(fonts/jetbrains-mono-latin-ext-wght-normal.woff2) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{--error:#b42318;--mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;--ink:#171717;--paper:#f4f0e7;--yellow:#e6f529;--muted:#b8b8b2;--line:#cbc8bf;--max:1200px}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:80px}body{margin:0;background:var(--paper);color:var(--ink);font-family:Archivo,Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}button,input,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}::selection{background:var(--yellow);color:var(--ink)}:focus-visible{outline:3px solid #697500;outline-offset:6px}.dark :focus-visible{outline-color:var(--yellow)}.wrap{max-width:var(--max);margin:auto;padding-inline:40px}.dark{background:var(--ink);color:var(--paper)}.skip{position:fixed;top:-80px;left:15px;background:var(--yellow);padding:15px;z-index:20}.skip:focus{top:15px}.header{display:flex;align-items:center;justify-content:space-between;padding-block:33px;gap:30px}.brand{display:inline-flex;align-items:center;gap:13px;text-decoration:none;white-space:nowrap}.brand-logo{display:block;width:225px;height:auto}.footer .brand-logo{width:145px}nav{display:flex;gap:32px;font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase}nav a{position:relative;white-space:nowrap;text-decoration:none;border-bottom:1px solid transparent;padding-block:8px}nav a:before{content:'/';position:absolute;left:-.9em;color:var(--yellow);opacity:0;transition:opacity .15s}nav a:hover:before{opacity:1}nav a:hover{border-color:var(--yellow)}.menu{display:none;background:none;color:inherit;font:500 12px var(--mono);letter-spacing:.12em;text-transform:uppercase;border:1px solid #5d5d58;padding:9px 12px}.hero{display:grid;grid-template-columns:1.04fr 1fr;align-items:center;gap:40px;padding-block:55px 78px}.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:2px;text-transform:uppercase;display:flex;align-items:center;gap:14px;margin:0 0 25px}.eyebrow:before{content:'';height:3px;width:30px;background:var(--yellow)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:900;letter-spacing:-.03em}h1{font-size:clamp(44px,4.6vw,66px);line-height:.99;margin-bottom:26px}h2{font-size:clamp(34px,3.7vw,51px);line-height:1.05;margin-bottom:30px}h3{font-size:24px;line-height:1.1;letter-spacing:-.015em}p{line-height:1.65}.intro{font-size:18px;max-width:450px;color:var(--muted)}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:26px;margin-top:29px}.btn{display:inline-flex;align-items:center;justify-content:space-between;gap:32px;background:var(--yellow);color:var(--ink);border:0;text-decoration:none;padding:17px 22px;font-weight:700;font-size:14px;transition:transform .18s,background .18s}.btn:hover{background:#f0ff42;transform:translateY(-2px)}.arrow{font-size:23px;font-weight:400;line-height:1}.text-link{font-size:13px;text-decoration:none;border-bottom:1px solid #a5a59e;padding-bottom:5px}.proof{font:11px var(--mono);letter-spacing:1.5px;margin-top:40px;display:flex;align-items:center;gap:20px}.proof:before{content:'';width:40px;height:2px;background:var(--yellow)}.monogram{width:100%;max-width:510px;justify-self:end;overflow:visible}.monogram .s{transform:rotate(6deg);transform-origin:310px 235px;transition:transform .6s cubic-bezier(.2,.8,.2,1)}.monogram:hover .s{transform:rotate(2deg)}.section{padding-block:80px}.experience{display:grid;grid-template-columns:.8fr 1.2fr;gap:65px}.section-summary{max-width:310px;color:#67665f;font-size:14px}.projects{border-top:1px solid var(--line)}.project{display:grid;grid-template-columns:105px 1fr;gap:25px;padding-block:27px;border-bottom:1px solid var(--line)}.tile{height:100px;background:var(--ink);position:relative;overflow:hidden}.tile:before{content:'';position:absolute;width:110px;height:180px;background:var(--paper);left:52px;top:10px;transform:rotate(36deg)}.tile:after{content:'';position:absolute;width:9px;height:160px;background:var(--yellow);transform:rotate(24deg);left:35px;top:-15px}.tile.t2:before{left:-75px;transform:rotate(-43deg)}.tile.t2:after{left:70px;transform:rotate(-18deg);width:4px}.tile.t3:before{top:65px;left:0;transform:rotate(-20deg)}.project h3{margin:5px 0 10px}.project p{font-size:14px;color:#69685f;margin:0}.client{font:10px var(--mono);letter-spacing:1px;text-transform:uppercase;color:#74736a;margin-bottom:8px}.experience{border-top:1px solid var(--line)}.services h2{max-width:610px}.service-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:30px;margin-top:45px}.service{padding-right:25px;border-right:1px solid var(--line)}.service:last-child{border:0}.number{font:700 12px var(--mono);background:var(--yellow);padding:5px 9px;color:var(--ink);display:inline-block;position:relative;margin-bottom:22px}.number:after{content:'/';font-size:25px;position:absolute;right:-14px;top:-3px;color:var(--yellow);font-weight:400}.service p{font-size:15px;color:#69685f;max-width:275px}.small-note{color:#69685f;font-size:14px;margin-top:30px;margin-bottom:0}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:27px;margin-top:45px}.step{border-left:1px solid #555550;padding-left:22px}.step:first-child{border:0;padding-left:0}.step h3{font-size:20px}.step p{font-size:14px;color:var(--muted);margin-bottom:0}.about{display:grid;grid-template-columns:1.15fr .85fr;gap:100px;align-items:center}.about p{max-width:500px;color:#69685f;font-size:16px}.about h3{margin-bottom:14px}.tech{border-top:1px solid var(--line);padding-top:18px;font-size:14px!important;line-height:1.65}.portrait{aspect-ratio:1/1;position:relative;background:#e5e1d8;overflow:hidden;display:flex;align-items:center;justify-content:center}.contact h2{max-width:780px}.contact p{color:var(--muted)}.availability{font-size:12px;padding-left:22px;border-left:1px solid #66665c;max-width:260px}.footer{border-top:1px solid #50504b;padding-block:20px;display:flex;align-items:center;justify-content:space-between}.egg{font:10px var(--mono);color:#9c9c94}.modal{border:0;background:var(--paper);color:var(--ink);max-width:570px;width:calc(100% - 32px);padding:34px;max-height:90dvh;overflow:auto}dialog::backdrop{background:#000b;backdrop-filter:blur(4px)}.modal h2{font-size:35px;margin-top:15px}.close{float:right;background:none;border:1px solid var(--line);padding:6px 10px}.modal p{font-size:14px;color:#69685f}.modal label{display:block;font-size:13px;font-weight:700;margin-top:22px}.modal textarea{width:100%;resize:vertical;min-height:175px;background:#fff9;border:1px solid #a9a69e;padding:14px;margin-top:9px;font-size:14px;line-height:1.6}.status{font-size:13px;min-height:20px;margin:15px 0 0}.modal .btn{margin-top:20px}.section[id]{scroll-margin-top:30px}@media(min-width:1440px){.hero{padding-block:75px 95px}}@media(max-width:900px){.wrap{padding-inline:28px}.header{gap:15px}nav{gap:18px;letter-spacing:.06em}.hero{gap:15px}h1{font-size:48px}.experience{gap:35px;grid-template-columns:.85fr 1.15fr}.project{grid-template-columns:75px 1fr;gap:18px}.tile{height:80px}.about{gap:45px}.steps{gap:15px}.step{padding-left:15px}.step h3{font-size:18px}}@media(max-width:650px){.brand-logo{width:173px}.footer .brand-logo{width:135px}.wrap{padding-inline:22px}.header{padding-block:22px;flex-wrap:wrap}.brand{gap:7px}.menu{display:block}nav{display:none;flex-basis:100%;padding-top:10px;justify-content:space-between;flex-wrap:wrap;column-gap:14px}nav.open{display:flex}.hero{grid-template-columns:1fr;padding-block:35px 45px;gap:28px}h1{font-size:clamp(38px,10vw,56px);max-width:480px}.intro{font-size:16px}.monogram{max-width:330px;justify-self:center;margin-top:5px}.proof{margin-top:30px}.section{padding-block:52px}.experience,.about{grid-template-columns:1fr;gap:28px}.section-summary{max-width:100%}.project{grid-template-columns:76px 1fr;padding-block:23px}.project h3{font-size:22px}.service-grid{grid-template-columns:1fr;gap:24px;margin-top:30px}.service{border:0;border-bottom:1px solid var(--line);padding:0 0 15px}.service p{max-width:100%;margin-bottom:8px}.service .number{margin-bottom:14px}.steps{grid-template-columns:1fr 1fr;gap:30px 20px}.step:nth-child(3){border:0;padding-left:0}.about .portrait{max-width:380px}.contact .actions{gap:20px}.availability{padding-left:0;border:0}.site-footer{padding-top:42px}.footer{gap:12px}.modal{padding:24px}.eyebrow{font-size:10px;letter-spacing:1.5px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}
/* Portrét, kontakt a patička. */
.portrait img{width:100%;height:100%;object-fit:cover;display:block}.contact-direct{margin:26px 0 0;font-size:14px}.section.contact{padding-bottom:0}.site-footer{padding-block:65px 40px}.legal{font-size:12px;line-height:1.6;color:var(--muted);margin:18px 0 0}.legal a{color:inherit}.modal .btn{margin-right:12px}.modal .btn:last-of-type{margin-right:0}
@media(max-width:420px){.header .brand-logo{width:170px}.modal .btn{width:100%;margin-right:0}}
.not-found{min-height:100vh}
.tile.t4:before{left:-30px;top:62px;transform:rotate(-64deg)}.tile.t4:after{left:58px;width:6px;transform:rotate(-12deg)}.project-link{display:inline-block;margin-top:12px}
.section-highlight{max-width:310px;margin:26px 0 0;padding-left:16px;border-left:3px solid var(--yellow);font-size:14px;color:#67665f}.section-highlight strong{display:block;color:var(--ink);font-size:17px;margin-bottom:4px}@media(max-width:650px){.section-highlight{max-width:100%}}
.signature{display:block;width:136px;height:auto;margin:6px 0 0 18px;transform:rotate(-7deg);transform-origin:left center}@media(max-width:650px){.signature{width:92px;margin-left:10px}}@media(max-width:420px){.header .signature{display:none}}
@media(min-width:651px) and (max-width:800px){.header .brand-logo{width:180px}.signature{width:100px;margin-left:12px}nav{gap:14px}}
.footer .signature{width:96px;margin:4px 0 0 14px}@media(max-width:650px){.footer .signature{width:80px;margin-left:10px}}
.egg{white-space:nowrap}.footer{flex-wrap:wrap}
/* Přilepená hlavička. Při zmenšení přibude o stejnou výšku odsazení tmavého úvodu, takže obsah neposkočí a mezi hlavičkou a úvodem neprosvítá světlé pozadí. */header.dark{position:sticky;top:0;z-index:10;transition:box-shadow .25s}header.dark+main>.dark:first-child{transition:padding-top .25s}header.dark .header{transition:padding-block .25s}header.dark .brand{transform-origin:left center;transition:transform .25s}.is-compact{box-shadow:0 1px 0 #34342f}.is-compact+main>.dark:first-child{padding-top:34px}.is-compact .header{padding-block:16px}.is-compact .brand{transform:scale(.82)}@media(max-width:650px){.is-compact+main>.dark:first-child{padding-top:20px}.is-compact .header{padding-block:12px}}
/* Obecná pravidla pro odstavce sekcí nesmí přebít popisky. */.about .eyebrow,.contact .eyebrow,.modal .eyebrow{font-size:11px;color:inherit;max-width:none}@media(max-width:650px){.about .eyebrow,.contact .eyebrow,.modal .eyebrow{font-size:10px}}
/* Kontaktní formulář */.modal input{width:100%;background:#fff9;border:1px solid #a9a69e;padding:12px 14px;margin-top:9px;font-size:14px}.modal input:focus,.modal textarea:focus{border-color:var(--ink)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.optional{font-weight:400;color:#69685f}.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.contact-form .btn{margin-top:24px}.contact-form .btn:disabled{opacity:.6;cursor:wait;transform:none}.modal .form-note{font-size:12px;margin:18px 0 0;border-top:1px solid var(--line);padding-top:14px}.form-note a{color:inherit}.modal .done-title{font-size:22px;font-weight:700;color:var(--ink);margin:10px 0 6px}@media(max-width:650px){.form-row{grid-template-columns:1fr}}
/* Pole formuláře mají vlastní fokus místo obecné odsazené linky. */.modal :is(input,textarea):focus-visible{outline:none;border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}
/* Dialog je vysoký asi 730 px. Kde se vejde, nepotřebuje posouvání a nic v něm neořízne panely rozšíření prohlížeče (správci hesel apod.). */@media(min-width:651px) and (min-height:820px){.modal{overflow:visible;max-height:none}}
/* Chyby formuláře */.modal .field-error{color:var(--error);font-size:13px;font-weight:600;line-height:1.4;margin:8px 0 0;padding-left:20px;position:relative}.modal .field-error:before{content:'!';position:absolute;left:0;top:1px;width:14px;height:14px;border-radius:50%;background:var(--error);color:#fff;font-size:10px;line-height:14px;text-align:center}.modal [aria-invalid=true]{border-color:var(--error);box-shadow:inset 0 0 0 1px var(--error)}.modal .status.is-error{color:var(--error);font-weight:600;background:#b4231812;border-left:3px solid var(--error);padding:10px 12px;margin-top:16px}
.modal [aria-invalid=true]:focus-visible{border-color:var(--error);box-shadow:inset 0 0 0 1px var(--error)}
