:root{--bg:#fafaf7;--ink:#2b3033;--mute:#2b3033;--line:#e8e7e1;--r:22px;--pink:#fad5e6;--green:#2cac69;--green-d:#176a3b;
--glass:rgba(255,255,255,.58);--glass-b:rgba(255,255,255,.7)}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 Inter,"Helvetica Neue",Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}
a{color:inherit}img{max-width:100%;display:block}
.glass{background:var(--glass);-webkit-backdrop-filter:blur(16px) saturate(1.5);backdrop-filter:blur(16px) saturate(1.5);border:1px solid var(--glass-b);box-shadow:0 8px 30px rgba(0,0,0,.08)}
.wrap{max-width:1180px;margin:0 auto;padding:0 5vw}
section{padding:64px 0}
h1,h2,h3{font-weight:600;letter-spacing:-.02em;line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(34px,6vw,62px)}h2{font-size:clamp(26px,3.6vw,38px)}
.eyebrow{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--mute);font-weight:600;margin:0 0 14px}
.lead{font-size:19px;color:var(--mute);max-width:620px}
/* header */
header.top{position:sticky;top:0;z-index:20;background:var(--bg);border-bottom:1px solid var(--line)}
header.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:10px;padding-bottom:10px;flex-wrap:wrap}
header.top img{height:40px}
nav{display:flex;align-items:center;gap:6px 24px;flex-wrap:wrap;font-size:14px;font-weight:500}
nav a{text-decoration:none;color:var(--mute)}nav a.on{font-weight:700}nav a:not(.eshop):hover{text-decoration:underline;text-underline-offset:5px}
/* e-shop tlačítko – růžová + zelená */
.eshop{display:inline-flex;align-items:center;gap:10px;padding:9px 16px 9px 12px;border-radius:999px;background:var(--pink);color:var(--green-d)!important;border:1.5px solid var(--green);font-weight:600;text-decoration:none;transition:.25s}
.eshop i{width:11px;height:11px;border-radius:50%;background:var(--green);transition:.25s}
.eshop em{font-style:normal;transition:.25s}
.eshop:hover{background:var(--green);color:#fff!important;transform:translateY(-1px)}
.eshop:hover i{background:var(--pink)}.eshop:hover em{transform:translate(2px,-2px)}
.eshop.lg{padding:15px 26px 15px 20px;font-size:17px}
.btn{display:inline-block;padding:12px 24px;border-radius:999px;border:1.5px solid var(--ink);text-decoration:none;font-weight:600;font-size:15px;background:none;color:var(--ink);cursor:pointer;transition:.25s;font-family:inherit}
.btn:hover{background:var(--ink);color:var(--bg)}
/* fotky */
.ph{border-radius:var(--r);overflow:hidden;background:#eee}
.ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
/* hero */
.hero{padding:28px 0 40px}
.slides{position:relative;border-radius:30px;overflow:hidden;aspect-ratio:16/9;background:#ddd}
.slides{display:block}.slides img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;animation:fade 10s infinite}
@media(prefers-reduced-motion:reduce){.slides img{animation:none}.slides img:first-child{opacity:1}}
/* karty portfolia */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:22px}
.sec-h{display:flex;justify-content:space-between;align-items:end;gap:20px;margin-bottom:28px;flex-wrap:wrap}
.more{font-weight:600;text-decoration:none;border-bottom:1.5px solid var(--ink)}
/* e-shop pás – oddělený od portfolia */
.band{background:var(--pink);border-radius:32px;padding:clamp(28px,5vw,56px);display:grid;grid-template-columns:1.4fr 1fr;gap:30px;align-items:center;position:relative;overflow:hidden}
.band:after{content:"";position:absolute;right:-70px;top:-70px;width:260px;height:260px;border-radius:50%;background:var(--green);opacity:.9}
.band:before{content:"";position:absolute;right:90px;bottom:-60px;width:130px;height:130px;border-radius:50%;background:rgba(255,255,255,.55)}
.band h2{color:var(--green-d)}.band p{max-width:520px;color:var(--ink)}
.band .act{position:relative;z-index:1;justify-self:end}
.band .eshop{background:#fff}
/* o mně */
.about{display:grid;grid-template-columns:340px 1fr;gap:48px;align-items:start}
.about .ph{aspect-ratio:1}.about .ph:hover img{transform:scale(1.04)}
.cvh{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--mute);font-weight:600;margin:36px 0 12px}
.cv{display:grid;grid-template-columns:104px 1fr;gap:6px 18px;font-size:15px;margin:0}
.cv dt{color:var(--mute);font-variant-numeric:tabular-nums}.cv dd{margin:0}
details{border-top:1px solid var(--line);padding:14px 0}details summary{cursor:pointer;font-weight:600;font-size:15px}
details[open] summary{margin-bottom:14px}
/* podstránka projektu */
.crumb{font-size:14px;color:var(--mute);text-decoration:none;display:inline-block;margin:26px 0 10px}.crumb:hover{text-decoration:underline}
.pj{display:grid;grid-template-columns:1fr 1.15fr;gap:44px;align-items:start;padding-bottom:30px}
.pj .txt p{font-size:18px;color:var(--ink)}
.chip{display:inline-block;background:#fff;border:1px solid var(--line);padding:5px 14px;border-radius:999px;font-size:13px;font-weight:600;margin-bottom:16px}
.spec{margin:26px 0 0;display:grid;gap:10px}
.spec div{padding:14px 18px;border-radius:16px;background:#fff;border:1px solid var(--line)}
.spec small{display:block;font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);font-weight:600}
.note{border-radius:16px;padding:14px 18px;background:var(--pink);color:var(--green-d);font-weight:600;font-size:15px;border-left:5px solid var(--green)}
.main-ph{position:relative;aspect-ratio:4/3.2;cursor:zoom-in}
.main-ph:hover img{transform:scale(1.04)}
.gal{columns:3 260px;column-gap:20px;margin-top:10px}
.shot{position:relative;margin:0 0 20px;break-inside:avoid;border-radius:var(--r);overflow:hidden;cursor:zoom-in;background:#eee}
.shot img{width:100%;height:auto;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.shot:hover img{transform:scale(1.05)}
.zoom{position:absolute;right:12px;bottom:12px;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;font-size:17px;opacity:0;transform:translateY(8px);transition:.35s}
.shot:hover .zoom,.main-ph:hover .zoom{opacity:1;transform:none}
.pn{display:flex;justify-content:space-between;gap:16px;margin-top:30px;padding-top:26px;border-top:1px solid var(--line);font-weight:600}
.pn a{text-decoration:none;padding:12px 20px;border-radius:999px}.pn a:hover{background:#fff}
/* lightbox */
.lb{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;background:rgba(20,20,18,.78);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.lb.on{display:flex}.lb img{max-width:88vw;max-height:84vh;border-radius:20px;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.lb button{position:absolute;border:0;color:var(--ink);font-size:26px;cursor:pointer;width:48px;height:48px;border-radius:50%}
.lb .x{top:20px;right:20px}.lb .pv{left:20px;top:50%}.lb .nx{right:20px;top:50%}
.lb .ct{position:absolute;bottom:22px;font-size:13px;color:#eee;letter-spacing:.08em}
/* kontakt */
.contact{display:grid;grid-template-columns:1fr 1fr;gap:48px}
form{display:grid;gap:12px}
input,textarea{width:100%;padding:14px 16px;border:1px solid var(--line);background:#fff;color:var(--ink);font:inherit;border-radius:14px}
input:focus,textarea:focus{outline:2px solid var(--green);outline-offset:1px}
textarea{min-height:140px;resize:vertical}.hp{position:absolute;left:-9999px}
#msg{min-height:1.4em;font-size:15px}
footer{border-top:1px solid var(--line);padding:34px 0;color:var(--mute);font-size:14px}
footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center}

/* karty portfolia: text pod fotkou */
.pc{display:block;text-decoration:none}
.pc .ph{aspect-ratio:4/5}
.pc .cap{padding:14px 4px 0;line-height:1.35}.pc .cap b{display:block;font-size:16px;font-weight:600}.pc .cap small{color:var(--mute);font-size:13px}
.pc:hover .ph img{transform:scale(1.07)}
/* hero: text pod fotkami */
.hero-txt{display:flex;justify-content:space-between;align-items:end;gap:24px;flex-wrap:wrap;margin-top:30px}
.hero-txt h1{font-size:clamp(34px,5vw,54px);margin-bottom:8px}.hero-txt .lead{margin:0}
.hero-txt .act{display:flex;gap:12px;flex-wrap:wrap;align-items:center}
/* glass efekt přes fotky: skleněný okraj, odlesk a při najetí jemné zmatnění */
.ph,.shot,.slides{position:relative}
.ph::after,.shot::after,.slides::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
 background:linear-gradient(115deg,rgba(255,255,255,.3) 0%,rgba(255,255,255,.07) 38%,rgba(255,255,255,0) 60%);
 box-shadow:inset 0 0 0 1px rgba(255,255,255,.55),inset 0 1px 0 rgba(255,255,255,.85),inset 0 -40px 60px -45px rgba(255,255,255,.4);transition:.45s}
.ph:hover::after,.shot:hover::after,.slides:hover::after{background:linear-gradient(115deg,rgba(255,255,255,.55) 0%,rgba(255,255,255,.14) 45%,rgba(255,255,255,0) 72%)}
.zoom{z-index:2}

@media(max-width:820px){header.top .wrap{padding-top:8px;padding-bottom:8px}header.top img{height:34px}nav{gap:4px 16px;font-size:13px}.eshop{padding:6px 12px 6px 9px}.pj,.about,.contact,.band{grid-template-columns:1fr}.about .ph{max-width:300px}.band .act{justify-self:start}.slides{aspect-ratio:4/5}.lb .pv,.lb .nx{top:auto;bottom:18px}}

/* hamburger menu (mobil) */
.burger{display:none;width:44px;height:44px;border:0;background:none;padding:0;cursor:pointer;position:relative}
.burger span,.burger span::before,.burger span::after{content:"";position:absolute;height:2px;background:var(--ink);border-radius:2px;transition:.25s}
.burger span{left:11px;right:11px;top:21px}
.burger span::before{left:0;right:0;top:-7px}.burger span::after{left:0;right:0;top:7px}
header.open .burger span{background:transparent}
header.open .burger span::before{top:0;transform:rotate(45deg)}
header.open .burger span::after{top:0;transform:rotate(-45deg)}
@media(max-width:820px){
 header.top .wrap{flex-wrap:nowrap}
 .burger{display:block}
 header.top nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:1px solid var(--line);box-shadow:0 18px 30px rgba(0,0,0,.07);flex-direction:column;align-items:stretch;gap:0;padding:6px 5vw 22px;font-size:17px}
 header.open nav{display:flex}
 header.top nav a:not(.eshop){padding:15px 0;border-bottom:1px solid var(--line)}
 header.top nav .eshop{margin-top:18px;justify-content:center;padding:13px 18px}
 .band:before,.band:after{display:none}
}

/* patička: created by + klíček k administraci */
footer .foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:10px 28px}
footer .creator a{font-weight:600;text-decoration:none;border-bottom:1px solid currentColor}
footer .key{margin-left:auto;width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:none;color:var(--ink);display:grid;place-items:center;cursor:pointer;transition:.25s;padding:0}
footer .key:hover,footer .key:focus-visible{background:#fff;border-color:var(--ink)}
/* dialog přihlášení */
dialog#login{border:0;border-radius:24px;padding:34px 32px 28px;width:min(380px,calc(100% - 32px));background:#fff;color:var(--ink);box-shadow:0 30px 80px rgba(0,0,0,.28)}
dialog#login::backdrop{background:rgba(29,29,27,.5)}
#login .lg-close{position:absolute;top:10px;right:12px;margin:0}
#login .lg-close button{border:0;background:none;font-size:26px;line-height:1;cursor:pointer;color:var(--ink);width:40px;height:40px;border-radius:50%}
#login .lg-close button:hover{background:var(--bg)}
#login-form{display:grid;gap:12px}#login h2{font-size:22px;margin:0}#login p{margin:0 0 4px}
#login-msg{min-height:1.4em;font-size:14px;font-weight:600}
@media(max-width:820px){footer .foot{gap:8px 18px}}

/* samostatný vstup do fakturace (vedle klíčku administrace) */
footer .key.fa{text-decoration:none}
footer .key.fa + .key{margin-left:-18px}

/* projekt: hlavní fotka celá, bez ořezu (v přehledu portfolia zůstávají jednotné náhledy) */
.main-ph{aspect-ratio:auto;width:fit-content;max-width:100%;background:none}
.main-ph img{width:auto;max-width:100%;height:auto;max-height:85vh;object-fit:contain}

/* ===== široké rozvržení: web využívá celou šířku obrazovky ===== */
.wrap{max-width:none;padding:0 clamp(16px,4vw,80px)}
.gal{columns:300px;column-gap:clamp(14px,1.4vw,24px)}
.grid{grid-template-columns:repeat(auto-fill,minmax(clamp(230px,17vw,320px),1fr));gap:clamp(18px,1.6vw,28px)}
.about p,.pj .txt p,.cv{max-width:78ch}
@media(min-width:821px){
  .slides{aspect-ratio:auto;height:min(46vw,66vh)}
  .pj{grid-template-columns:minmax(320px,1fr) minmax(0,1.5fr);gap:clamp(32px,4vw,72px)}
  .about{grid-template-columns:clamp(300px,26vw,440px) 1fr}
  .main-ph{justify-self:end}
}
