/* sunos.eu – vzhled 1:1 podle živého webu (Nowadays + vlastní CSS SunoS). Bez zpětných lomítek. */
@font-face{font-family:"SunoS";src:url("sn/fonts/sunos.woff2") format("woff2"),url("sn/fonts/sunos.woff") format("woff");font-display:swap}
@font-face{font-family:"SunoS-Fire";src:url("sn/fonts/SunoS-Fire.woff") format("woff");font-display:block}
:root{--sn-acc:#00bfff;--sn-dark:#222;--sn-foot:#24272b;--sn-foot2:#1f2225;--sn-txt:#555;--sn-h:#444;--sn-mut:#9aa8a8;--sn-wrap:1170px;--sn-hf:"SunoS",Helvetica,Arial,sans-serif;--sn-bf:"Righteous",Helvetica,Arial,sans-serif}
*,*:before,*:after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:#fff;color:var(--sn-txt);font-family:var(--sn-bf);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:var(--sn-acc)}
.sn-wrap{max-width:var(--sn-wrap);margin:0 auto;padding:0 15px}
.sn-fire{font-family:"SunoS-Fire";font-style:normal;font-weight:400;line-height:1;speak:never;display:inline-block}
/* hlavička */
.sn-head{position:fixed;top:0;left:0;right:0;z-index:50;transition:background .3s,box-shadow .3s}
.sn-head__in{display:flex;align-items:center;justify-content:space-between;height:80px}
.sn-logo img{height:50px;width:auto}
.sn-nav{display:flex;gap:34px;align-items:center}
.sn-nav a{font-family:var(--sn-hf);font-size:12px;letter-spacing:0;text-transform:uppercase;color:#fff;text-decoration:none;text-shadow:3px 3px 3px #000;padding:28px 0;position:relative}
.sn-nav a:hover,.sn-nav a.is-on{color:var(--sn-acc)}
.sn-nav a.is-on:after{content:"";position:absolute;left:0;right:0;bottom:18px;height:1px;background:currentColor;opacity:.5}
.sn-scrolled .sn-head,.un-is-sub .sn-head{background:var(--sn-foot);box-shadow:0 2px 12px rgba(0,0,0,.25)}
.sn-burger{display:none;background:none;border:0;width:40px;height:40px;cursor:pointer;position:relative}
.sn-burger span,.sn-burger span:before,.sn-burger span:after{position:absolute;left:8px;right:8px;height:2px;background:#fff;content:"";transition:transform .25s}
.sn-burger span{top:19px}.sn-burger span:before{left:0;right:0;top:-8px}.sn-burger span:after{left:0;right:0;top:8px}
/* úvod s videem */
.sn-hero{position:relative;height:100vh;min-height:520px;overflow:hidden;background:#000;display:flex;align-items:center;justify-content:center;text-align:center;color:#fff}
.sn-hero__bg,.sn-hero__bg img,.sn-hero__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.sn-hero__bg:after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.18)}
.sn-hero__in{position:relative;z-index:2;padding:0 20px}
.sn-hero__t{font-family:var(--sn-hf);font-weight:100;font-size:clamp(34px,5.4vw,72px);line-height:1.2;text-transform:uppercase;letter-spacing:.06em;margin:0 0 50px;text-shadow:3px 3px 3px #000;color:#fff}
.sn-hero__t span{font-style:normal;color:var(--sn-acc)}
.sn-hero__s{font-family:var(--sn-bf);text-transform:uppercase;font-size:16px;letter-spacing:.04em;margin:0 0 60px;text-shadow:3px 3px 4px #000}
/* tlačítka */
.sn-btn{display:inline-flex;align-items:center;gap:12px;border:2px solid var(--sn-acc);color:var(--sn-acc);background:transparent;font-family:Lato,Helvetica,Arial,sans-serif;font-weight:700;text-transform:uppercase;font-size:13px;letter-spacing:.02em;padding:13px 42px;text-decoration:none;transition:background .2s,color .2s;cursor:pointer}
.sn-btn .sn-fire{font-size:22px}
.sn-btn:hover{background:var(--sn-acc);color:#fff}
.sn-btn--hero{text-shadow:3px 3px 3px #000}
.sn-btn--sm{border:1px solid #fff;color:#fff;padding:8px 12px;font-size:12px;text-transform:none;font-weight:400}
.sn-btn--sm:hover{background:#fff;color:var(--sn-dark)}
.sn-btn--fill{background:var(--sn-acc);color:#fff;border-color:var(--sn-acc)}
.sn-btn--fill:hover{background:#0aa3d6}
/* sekce */
.sn-sec{padding:110px 0}
.sn-white{background:#fff}
.sn-dark{background:var(--sn-dark);color:#ccc}
.sn-head-b{text-align:center;margin-bottom:70px}
.sn-head-b.sn-l{text-align:left;margin-bottom:60px}
.sn-sub{font-family:var(--sn-hf);font-size:9px;letter-spacing:.45em;text-transform:uppercase;color:#444;margin:0 0 6px}
.sn-dark .sn-sub{color:#ddd}
.sn-title{font-family:var(--sn-hf);font-weight:100;font-size:26px;line-height:1.2;text-transform:uppercase;color:var(--sn-h);margin:0;text-shadow:3px 3px 3px #ababab}
.sn-dark .sn-title{color:#fff;text-shadow:3px 3px 3px #000}
.sn-c{text-align:center}
.sn-body p{font-size:18px;margin:0 0 40px}
.sn-act{margin:30px 0 0}
.sn-art{padding-top:170px}
.sn-art .sn-title{font-size:32px}
.sn-art .sn-body{max-width:760px;margin:0 auto}
/* galerie */
.sn-gal .sn-head-b{margin-bottom:60px}
.sn-gal__grid{display:grid;grid-template-columns:repeat(6,1fr);grid-auto-rows:118px;grid-auto-flow:dense;gap:20px 21px}
.sn-gal__it{display:block;overflow:hidden;box-shadow:0 0 25px #000;background:#111}
.sn-gal__it img{width:100%;height:100%;object-fit:cover;transition:transform .5s}
.sn-gal__it:hover img{transform:scale(1.06)}
.sn-gal__it{grid-row:span 1;aspect-ratio:1/1;height:auto}
.sn-gal__grid{grid-auto-rows:auto}
.sn-gal__it.is-tall{grid-row:span 2;aspect-ratio:auto}
/* proč my */
.sn-feat__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 30px}
.sn-ft{display:grid;grid-template-columns:33% 1fr;gap:15px;align-items:start}
.sn-ft__ic{color:var(--sn-acc);font-size:100px;line-height:1;margin-top:5vh}
.sn-ft h3{font-family:var(--sn-hf);font-weight:100;font-size:24px;text-transform:uppercase;color:var(--sn-h);margin:0 0 12px;text-shadow:3px 3px 3px #ababab}
.sn-ft p{font-size:18px;margin:0}
/* tým */
.sn-team__grid{display:grid;grid-template-columns:repeat(5,1fr);gap:30px}
.sn-tm{position:relative;overflow:hidden;box-shadow:5px 5px 20px #000;aspect-ratio:680/846;text-shadow:3px 3px 3px #000}
.sn-tm img{width:100%;height:100%;object-fit:cover}
.sn-tm__d{position:absolute;left:0;right:0;bottom:0;top:64%;padding:14px 18px;background:rgba(0,0,0,.25);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:top .35s}
.sn-tm:hover .sn-tm__d{top:38%}
.sn-tm h3{font-family:var(--sn-hf);font-weight:100;font-size:14px;color:#fff;text-transform:uppercase;margin:0 0 10px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.2)}
.sn-tm p{margin:0 0 8px;color:#ddd;font-size:14px}
.sn-tm__s{display:flex;gap:8px}
/* sítě (ikony kreslené CSS, text jen pro čtečky) */
.sn-soc{display:flex;gap:10px;margin:28px 0 0}
.sn-soc__a{width:30px;height:30px;border:1px solid #4e5b5b;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#9aa8a8;text-decoration:none;font-family:Lato,Arial,sans-serif;font-weight:700;font-size:13px;position:relative}
.sn-soc__a span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.sn-soc--facebook:before{content:"f"}
.sn-soc--instagram:before{content:"";width:12px;height:12px;border:1.5px solid currentColor;border-radius:4px}
.sn-soc__a:hover{color:#fff;border-color:#fff}
/* nabídka + formulář */
.sn-offer{padding-bottom:0}
.sn-offer__row{display:grid;grid-template-columns:1fr 1fr 1fr;align-items:stretch}
.sn-offer__img{position:relative;overflow:hidden;min-height:100%;background:#111}
.sn-offer__img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:8% 50%}
.sn-offer__box{background:var(--sn-dark);color:#ccc;padding:90px 50px}
.sn-offer__box h3{font-family:var(--sn-hf);font-weight:100;font-size:22px;line-height:1.45;text-transform:uppercase;color:#ddd;margin:0 0 22px;padding-bottom:22px;position:relative}
.sn-offer__box h3:after{content:"";position:absolute;left:0;bottom:0;width:58px;height:1px;background:#ddd}
.sn-offer__box p{font-size:16px;margin:0 0 30px}
.sn-offer__form{padding:30px 22px 60px 32px}
.sn-form-t{font-family:var(--sn-hf);font-weight:100;font-size:26px;color:#333;text-transform:uppercase;text-shadow:3px 3px 3px gray;margin:0 0 50px}
.sn-form label{display:block;margin:0 0 22px;font-size:12px;color:#444}
.sn-form label>span{display:block;margin-bottom:8px}
.sn-form sup{color:#444}
.sn-form input,.sn-form textarea{width:100%;border:1px solid #ddd;background:#fff;color:#6e6e6e;font:inherit;font-size:14px;padding:8px 14px;border-radius:0}
.sn-form input:focus,.sn-form textarea:focus{outline:0;border-color:#a7a7a7}
.sn-form textarea{min-height:86px;resize:vertical}
.sn-form__2{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.sn-form .un-hp{position:absolute;left:-9999px}
.un-form-msg,.un-msg{padding:10px 14px;margin:0 0 16px;border-left:3px solid var(--sn-acc);background:#f4fbff;color:#333;font-size:14px}
/* patička */
.sn-foot{color:var(--sn-mut);font-size:14px}
.sn-foot__top{background:var(--sn-foot);padding:40px 0 50px}
.sn-foot__grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}
.sn-foot__t{font-family:var(--sn-hf);font-weight:100;font-size:12px;color:#fff;text-transform:uppercase;margin:0 0 26px;padding-bottom:16px;border-bottom:1px solid #34393e;position:relative}
.sn-foot__t:after{content:"";position:absolute;left:0;bottom:-1px;width:20px;height:1px;background:var(--sn-mut)}
.sn-foot__about{font-size:16px;line-height:1.7;margin:0}
.sn-foot__c{list-style:none;margin:0;padding:0;font-size:13px;line-height:1.7}
.sn-foot__c a{color:var(--sn-acc);text-decoration:none}
.sn-foot__bot{background:var(--sn-foot2);padding:24px 0 0;font-size:12px}
.sn-foot__bot p{margin:0 0 6px}
.sn-foot .un-credit{color:var(--sn-mut)}
/* lightbox */
.sn-lb{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.92);display:flex;align-items:center;justify-content:center;cursor:zoom-out}
.sn-lb img{max-width:92vw;max-height:90vh;width:auto;height:auto;box-shadow:0 0 40px #000}
.sn-lb button{position:absolute;top:50%;transform:translateY(-50%);background:none;border:0;color:#fff;font-size:44px;cursor:pointer;padding:20px}
.sn-lb .p{left:10px}.sn-lb .n{right:10px}.sn-lb .x{top:30px;right:20px;transform:none;font-size:34px}
.un-gap{max-width:var(--sn-wrap);margin:14px auto;padding:8px 12px;border:1px dashed #e0a800;background:#fff8e1;color:#5a4500;font-size:12px}
/* mobil a tablet */
@media (max-width:991px){
 .sn-feat__grid{grid-template-columns:1fr 1fr}
 .sn-team__grid{grid-template-columns:repeat(3,1fr)}
 .sn-gal__grid{grid-template-columns:repeat(3,1fr)}
 .sn-offer__row{grid-template-columns:1fr 1fr}.sn-offer__img{display:none}
}
@media (max-width:760px){
 .sn-head__in{height:64px}.sn-logo img{height:40px}
 .sn-burger{display:block}
 .sn-nav{position:fixed;top:64px;left:0;right:0;background:var(--sn-foot);flex-direction:column;gap:0;padding:10px 0;display:none}
 .sn-nav a{padding:14px 20px;width:100%;text-align:center;color:#ddd}
 .sn-nav a.is-on:after{display:none}
 .sn-menu-open .sn-nav{display:flex}.sn-menu-open .sn-head{background:var(--sn-foot)}
 .sn-hero{height:60vh;min-height:420px}
 .sn-hero__t{margin-bottom:24px}.sn-hero__s{margin-bottom:30px}
 .sn-sec{padding:70px 0}
 .sn-head-b{margin-bottom:40px}
 .sn-body p{font-size:16px;margin-bottom:24px}
 .sn-feat__grid{grid-template-columns:1fr}
 .sn-ft__ic{font-size:80px;margin-top:0}
 .sn-team__grid{grid-template-columns:1fr 1fr;gap:16px}
 .sn-gal__grid{grid-template-columns:1fr 1fr;gap:12px}
 .sn-offer__row{grid-template-columns:1fr}.sn-offer__img{display:block;height:240px;min-height:0}
 .sn-offer__box{padding:50px 24px}
 .sn-offer__form{padding:40px 15px 50px}
 .sn-form__2{grid-template-columns:1fr;gap:0}
 .sn-foot__grid{grid-template-columns:1fr}
 .sn-art{padding-top:120px}
}
@media (prefers-reduced-motion:reduce){.sn-hero__video{display:none}html{scroll-behavior:auto}}
/* Pavel 23. 10. 23:47: celý web tmavý v tónu patičky (#24272b), akcent #00bfff a logo beze změny */
:root{--sn-txt:#c3c9cf;--sn-h:#fff}
body{background:var(--sn-foot);color:var(--sn-txt)}
.sn-white{background:var(--sn-foot)}
.sn-dark{background:var(--sn-foot2);color:var(--sn-txt)}
.sn-sub,.sn-dark .sn-sub{color:#d6dbe0}
.sn-title,.sn-white .sn-title{color:#fff;text-shadow:3px 3px 3px #000}
.sn-body p{color:var(--sn-txt)}
.sn-ft h3{color:#fff;text-shadow:3px 3px 3px #000}
.sn-ft p{color:var(--sn-txt)}
.sn-offer__box{background:var(--sn-foot2);color:var(--sn-txt)}
.sn-offer__img{background:var(--sn-foot2)}
.sn-form-t{color:#fff;text-shadow:3px 3px 3px #000}
.sn-form label,.sn-form sup{color:#d6dbe0}
.sn-form input,.sn-form textarea{background:#2c3035;border-color:#41474e;color:#f1f3f5}
.sn-form input::placeholder,.sn-form textarea::placeholder{color:#8f99a3;opacity:1}
.sn-form input:focus,.sn-form textarea:focus{border-color:var(--sn-acc)}
.un-form-msg,.un-msg{background:#1a2a33;color:#e6f7ff}
.sn-foot__top{border-top:1px solid #34393e}
.sn-foot__bot{text-align:center}
/* Pavel 24. 10. 0:05: tmavý, ale ne plochý – vrstvy sekcí + vystouplé karty (světlejší povrch, jemná azurová linka a záře, zdvih při najetí) */
:root{--sn-card:#2c3036;--sn-card2:#30353b;--sn-line:rgba(0,191,255,.28);--sn-glow:0 0 0 1px rgba(0,191,255,.10),0 10px 30px rgba(0,0,0,.45),0 0 22px rgba(0,191,255,.06);--sn-glow-h:0 0 0 1px rgba(0,191,255,.30),0 18px 40px rgba(0,0,0,.55),0 0 30px rgba(0,191,255,.16)}
/* vrstvy sekcí: střídání tónů, jemný přechod a vinětace */
.sn-sec{position:relative}
#about{background:radial-gradient(ellipse at 50% 0%,#2f343a 0%,#24272b 60%,#202327 100%)}
#portfolio{background:radial-gradient(ellipse at 50% 40%,#1d2024 0%,#17191c 100%);box-shadow:inset 0 14px 30px -14px rgba(0,0,0,.7),inset 0 -14px 30px -14px rgba(0,0,0,.7)}
#features{background:linear-gradient(180deg,#262a2f 0%,#212428 100%)}
#team{background:radial-gradient(ellipse at 50% 30%,#1f2226 0%,#17191c 100%);box-shadow:inset 0 14px 30px -14px rgba(0,0,0,.7),inset 0 -14px 30px -14px rgba(0,0,0,.7)}
#offer{background:linear-gradient(180deg,#24272b 0%,#1e2125 100%);padding-bottom:110px}
.sn-art{background:radial-gradient(ellipse at 50% 0%,#2f343a 0%,#24272b 55%,#1e2125 100%)}
/* společný vzhled karty */
.sn-text .sn-c,.sn-ft,.sn-tm,.sn-gal__it,.sn-offer__row{background:var(--sn-card);border:1px solid rgba(255,255,255,.04);border-top:1px solid var(--sn-line);border-radius:14px;box-shadow:var(--sn-glow);transition:transform .25s,box-shadow .25s,border-color .25s}
.sn-ft:hover,.sn-tm:hover,.sn-gal__it:hover{transform:translateY(-4px);box-shadow:var(--sn-glow-h);border-top-color:rgba(0,191,255,.6)}
/* úvodní text a článek */
.sn-text .sn-c{max-width:1000px;padding:60px 70px 56px;background:linear-gradient(180deg,var(--sn-card2) 0%,var(--sn-card) 100%)}
.sn-text .sn-head-b{margin-bottom:44px}
.sn-text .sn-body p:last-child{margin-bottom:0}
.sn-art .sn-c{max-width:860px}
/* proč my */
.sn-feat__grid{gap:28px}
.sn-ft{padding:26px 24px 28px 18px;align-items:center}
.sn-ft__ic{margin-top:0;font-size:86px;text-shadow:0 0 18px rgba(0,191,255,.25)}
/* tým */
.sn-team__grid{gap:24px}
.sn-tm{box-shadow:var(--sn-glow)}
/* galerie */
.sn-gal__grid{gap:18px}
.sn-gal__it{border-radius:10px}
.sn-gal__it img{border-radius:inherit}
/* nabídka + formulář jako jedna karta */
.sn-offer__row{max-width:var(--sn-wrap);margin:0 auto;overflow:hidden}
.sn-offer__box{background:linear-gradient(180deg,#25292e 0%,#202327 100%)}
.sn-offer__form{background:var(--sn-card)}
.sn-form input,.sn-form textarea{background:#24282d;border-radius:6px}
.sn-btn{border-radius:6px}
.sn-btn:not(.sn-btn--sm):hover{box-shadow:0 0 18px rgba(0,191,255,.35)}
@media (max-width:1200px){.sn-offer__row{margin:0 15px}}
@media (max-width:760px){
 .sn-text .sn-c{padding:38px 22px;margin:0 15px}
 .sn-ft{padding:20px 18px}
 .sn-offer__row{margin:0 15px}
 #offer{padding-bottom:70px}
 .sn-gal__grid{gap:10px}
}
@media (prefers-reduced-motion:reduce){.sn-ft,.sn-tm,.sn-gal__it{transition:none}.sn-ft:hover,.sn-tm:hover,.sn-gal__it:hover{transform:none}}
/* Pavel 24. 10. 0:15: karty jemně pulzují (azurová záře a horní linka, 3,6 s, posunuté fáze); při najetí platí zdvih, při omezení pohybu nic */
@keyframes sn-puls{0%,100%{box-shadow:var(--sn-glow);border-top-color:var(--sn-line)}50%{box-shadow:0 0 0 1px rgba(0,191,255,.22),0 10px 30px rgba(0,0,0,.45),0 0 28px rgba(0,191,255,.20);border-top-color:rgba(0,191,255,.65)}}
.sn-text .sn-c,.sn-ft,.sn-tm,.sn-gal__it,.sn-offer__row{animation:sn-puls 3.6s ease-in-out infinite}
.sn-ft:nth-child(3n+2),.sn-tm:nth-child(3n+2),.sn-gal__it:nth-child(5n+2){animation-delay:-.9s}
.sn-ft:nth-child(3n),.sn-tm:nth-child(3n),.sn-gal__it:nth-child(5n+3){animation-delay:-1.8s}
.sn-ft:nth-child(4),.sn-tm:nth-child(4),.sn-gal__it:nth-child(5n+4){animation-delay:-2.7s}
.sn-gal__it:nth-child(5n){animation-delay:-1.3s}
.sn-offer__row{animation-delay:-2.2s}
.sn-ft:hover,.sn-tm:hover,.sn-gal__it:hover{animation:none}
@media (prefers-reduced-motion:reduce){.sn-text .sn-c,.sn-ft,.sn-tm,.sn-gal__it,.sn-offer__row{animation:none}}
.sn-text .sn-c,.sn-offer__row{animation-duration:5.2s}
/* Pavel 24. 10. 0:20: „Proč právě MY?“ – místo pulzu kometa po obrysu karty jako na unovation (conic-gradient z var(--orb), @property + orbit), v azurové #00bfff, posunuté fáze */
@property --orb{syntax:'<angle>';inherits:false;initial-value:0deg}
@keyframes sn-orbit{100%{--orb:360deg}}
.sn-ft{animation:none;position:relative;isolation:isolate}
.sn-ft::after{content:"";position:absolute;inset:-1px;z-index:2;border-radius:inherit;padding:1.5px;pointer-events:none;background:conic-gradient(from var(--orb),transparent 0deg 230deg,rgba(0,191,255,0) 230deg,rgba(0,191,255,.5) 300deg,#00bfff 340deg,#e6f9ff 357deg,transparent 360deg);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);filter:drop-shadow(0 0 3px #00bfff) drop-shadow(0 0 8px rgba(0,191,255,.55));animation:sn-orbit 6s linear infinite}
.sn-ft:nth-child(2)::after{animation-delay:-1s}
.sn-ft:nth-child(3)::after{animation-delay:-2s}
.sn-ft:nth-child(4)::after{animation-delay:-3s}
.sn-ft:nth-child(5)::after{animation-delay:-4s}
.sn-ft:nth-child(6)::after{animation-delay:-5s}
.sn-ft:hover::after{animation-duration:2.4s}
@media (prefers-reduced-motion:reduce){.sn-ft::after{display:none}}
/* Pavel 24. 10. 0:21: zkosené rohy karet jako na unovation (clip-path .cut, trojúhelník loga); pulz a kometa jdou po zkoseném obrysu (prstenec polygon evenodd) */
.sn-text .sn-c,.sn-ft,.sn-tm,.sn-gal__it,.sn-offer__row{--ok:22px;--ow:1.5px;position:relative;isolation:isolate;border:0;border-radius:0;animation:none;box-shadow:inset 0 0 0 0 transparent;clip-path:polygon(var(--ok) 0,100% 0,100% calc(100% - var(--ok)),calc(100% - var(--ok)) 100%,0 100%,0 var(--ok))}
.sn-tm,.sn-gal__it{--ok:14px}
.sn-gal__it img{border-radius:0}
/* stín pod kartami: drop-shadow na mřížce (sleduje zkosení; box-shadow by clip-path ořízl) */
.sn-feat__grid,.sn-team__grid,.sn-gal__grid{filter:drop-shadow(0 10px 16px rgba(0,0,0,.45))}
/* prstenec po zkoseném obrysu + pulz (azurová linka a vnitřní záře) */
.sn-text .sn-c::before,.sn-ft::before,.sn-tm::before,.sn-gal__it::before,.sn-offer__row::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:#00bfff;opacity:.35;clip-path:polygon(evenodd,var(--ok) 0,100% 0,100% calc(100% - var(--ok)),calc(100% - var(--ok)) 100%,0 100%,0 var(--ok),var(--ok) 0,calc(var(--ok) + var(--ow)*.41) var(--ow),calc(var(--ow)) calc(var(--ok) + var(--ow)*.41),var(--ow) calc(100% - var(--ow)),calc(100% - var(--ok) - var(--ow)*.41) calc(100% - var(--ow)),calc(100% - var(--ow)) calc(100% - var(--ok) - var(--ow)*.41),calc(100% - var(--ow)) var(--ow),calc(var(--ok) + var(--ow)*.41) var(--ow));animation:sn-ring 3.6s ease-in-out infinite;animation-delay:var(--d,0s)}
@keyframes sn-ring{0%,100%{opacity:.3}50%{opacity:.95}}
@keyframes sn-inglow{0%,100%{box-shadow:inset 0 0 0 0 rgba(0,191,255,0)}50%{box-shadow:inset 0 0 26px 0 rgba(0,191,255,.16)}}
.sn-text .sn-c,.sn-offer__row,.sn-tm,.sn-gal__it{animation:sn-inglow 3.6s ease-in-out infinite;animation-delay:var(--d,0s)}
.sn-text .sn-c,.sn-offer__row{--d:-1.2s}
.sn-text .sn-c::before,.sn-offer__row::before,.sn-text .sn-c,.sn-offer__row{animation-duration:5.2s}
.sn-offer__row{--d:-3.4s}
.sn-tm:nth-child(2),.sn-gal__it:nth-child(5n+2){--d:-.9s}
.sn-tm:nth-child(3),.sn-gal__it:nth-child(5n+3){--d:-1.8s}
.sn-tm:nth-child(4),.sn-gal__it:nth-child(5n+4){--d:-2.7s}
.sn-tm:nth-child(5),.sn-gal__it:nth-child(5n){--d:-1.3s}
.sn-tm:hover,.sn-gal__it:hover{animation:none;box-shadow:inset 0 0 26px 0 rgba(0,191,255,.2)}
.sn-tm:hover::before,.sn-gal__it:hover::before,.sn-ft:hover::before{animation:none;opacity:1}
/* „Proč právě MY?“: statický prstenec + kometa (stejný evenodd prstenec, conic-gradient z var(--orb) jako unovation) */
.sn-ft::before{animation:none;opacity:.28}
.sn-ft::after{inset:0;border-radius:0;padding:0;-webkit-mask:none;mask:none;--ow:2px;clip-path:polygon(evenodd,var(--ok) 0,100% 0,100% calc(100% - var(--ok)),calc(100% - var(--ok)) 100%,0 100%,0 var(--ok),var(--ok) 0,calc(var(--ok) + var(--ow)*.41) var(--ow),calc(var(--ow)) calc(var(--ok) + var(--ow)*.41),var(--ow) calc(100% - var(--ow)),calc(100% - var(--ok) - var(--ow)*.41) calc(100% - var(--ow)),calc(100% - var(--ow)) calc(100% - var(--ok) - var(--ow)*.41),calc(100% - var(--ow)) var(--ow),calc(var(--ok) + var(--ow)*.41) var(--ow));z-index:4}
.sn-ft:hover{box-shadow:inset 0 0 26px 0 rgba(0,191,255,.14)}
.sn-ft:hover,.sn-tm:hover,.sn-gal__it:hover{transform:translateY(-4px)}
.sn-form input,.sn-form textarea,.sn-btn{border-radius:0}
@media (prefers-reduced-motion:reduce){.sn-text .sn-c,.sn-offer__row,.sn-tm,.sn-gal__it{animation:none}.sn-text .sn-c::before,.sn-ft::before,.sn-tm::before,.sn-gal__it::before,.sn-offer__row::before{animation:none;opacity:.55}}
/* Pavel 24. 10. 0:56 + 1:01: úvodní karta – pulzuje jen horní hrana; fotky týmu a galerie – pulzuje jen spodní hrana; kontaktní blok beze změny (stav pre_hrana); karty plasticky vystouplé – vrstvený drop-shadow sleduje zkosení */
@keyframes sn-hrana{0%,100%{opacity:.55;filter:none}50%{opacity:1;filter:drop-shadow(0 0 5px #00bfff) drop-shadow(0 0 12px rgba(0,191,255,.6))}}
/* klidný obrys a bez vnitřní záře */
.sn-text .sn-c,.sn-tm,.sn-gal__it{animation:none}
.sn-text .sn-c::before,.sn-tm::before,.sn-gal__it::before{animation:none;opacity:.32}
/* úvodní karta: horní hrana od zkosení doprava */
.sn-text .sn-c::after{content:"";position:absolute;top:0;left:var(--ok);right:0;height:3px;z-index:4;pointer-events:none;background:linear-gradient(90deg,rgba(0,191,255,.35),#00bfff 18%,#00bfff 82%,rgba(0,191,255,.6));animation:sn-hrana 5.2s ease-in-out infinite;animation-delay:var(--d,0s)}
/* fotky týmu a galerie: spodní hrana od levého rohu po zkosení vpravo dole */
.sn-tm::after,.sn-gal__it::after{content:"";position:absolute;top:auto;bottom:0;left:0;right:var(--ok);height:2px;z-index:4;pointer-events:none;background:linear-gradient(90deg,rgba(0,191,255,.6),#00bfff 18%,#00bfff 82%,rgba(0,191,255,.35));animation:sn-hrana 3.6s ease-in-out infinite;animation-delay:var(--d,0s)}
/* plasticita: světlejší horní a tmavší spodní část karet */
.sn-ft,.sn-tm,.sn-gal__it{background:linear-gradient(180deg,#33383f 0%,#2c3036 45%,#25292e 100%)}
/* stín ven ze stránky: drop-shadow na rodiči (mřížky) nebo na kartě bez clip-path */
.sn-feat__grid,.sn-team__grid,.sn-gal__grid,.sn-text .sn-c{filter:drop-shadow(0 18px 20px rgba(0,0,0,.55)) drop-shadow(0 4px 5px rgba(0,0,0,.45))}
/* úvodní karta: zkosení tvarem pozadí (bez clip-path → stín sleduje tvar) */
.sn-text .sn-c{clip-path:none;--okd:calc(var(--ok)*.7071);background:linear-gradient(135deg,transparent var(--okd),#2c3036 0) top left,linear-gradient(-135deg,#2c3036 0,#2c3036 0) top right,linear-gradient(-45deg,transparent var(--okd),#2c3036 0) bottom right,linear-gradient(45deg,#2c3036 0,#2c3036 0) bottom left;background-size:50.5% 50.5%;background-repeat:no-repeat}
@media (prefers-reduced-motion:reduce){.sn-text .sn-c::after,.sn-tm::after,.sn-gal__it::after{animation:none;opacity:1}}
/* Pavel 24. 10. 01:30: přes rezervační formulář nesmí nic pulzovat – prstenec kontaktního bloku (a karty stránky Rezervace) kreslený pod obsahem (z-index:-1 v izolované kartě), viditelný jen na hraně; i když prohlížeč při překreslení po hoveru clip-path prstence nepoužije, formulář nepřekryje */
.sn-offer--rez .sn-offer__row::before,.sn-rez .sn-c::before{z-index:-1}
.sn-offer--rez .sn-offer__form{background:transparent}
/* Pavel 24. 10. 4:01: karty týmu na mobilu a dotyku v původním stylu (fotka přes celou kartu, průsvitný rozmazaný panel dole, pevný poměr) – zavřená ukáže jen jméno s čárou, ťuk vysune zbytek jako hover na desktopu (třída is-open řeší sunos.js); odkazy sítí klikací jen u otevřené */
@media (hover:none),(max-width:760px){
 .sn-tm__d{top:calc(100% - 58px);padding:12px 14px 12px}
 .sn-tm h3{line-height:1.35;padding-bottom:9px;margin:0 0 9px;overflow:visible}
 .sn-tm p{line-height:1.4}
 .sn-tm__s{margin-top:10px}
 .sn-tm.is-open .sn-tm__d{top:38%}
 .sn-tm{cursor:pointer;-webkit-tap-highlight-color:transparent}
 .sn-tm:not(.is-open) .sn-tm__s a{pointer-events:none}
 .sn-tm__d p{transition:opacity .3s}
 .sn-tm:not(.is-open) .sn-tm__d p{opacity:0}
}
@media (hover:hover) and (max-width:760px){.sn-tm:hover .sn-tm__d p{opacity:1}}
@media (hover:none){
 .sn-tm:hover .sn-tm__d{top:calc(100% - 58px)}
 .sn-tm.is-open:hover .sn-tm__d{top:38%}
}
@media (max-width:760px){
 .sn-tm h3{font-size:13px}
 .sn-tm p{font-size:13.5px}
}
/* velké fotky: na dotyk swipe (posun řeší sunos.js), stránka pod náhledem zamčená, ovládání dobře trefitelné prstem */
html.sn-lb-open,html.sn-lb-open body{overflow:hidden;overscroll-behavior:none}
.sn-lb{touch-action:none;overscroll-behavior:contain;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}
.sn-lb img{max-height:90vh;max-height:90dvh;will-change:transform;cursor:default;-webkit-touch-callout:none}
.sn-lb .c{position:absolute;top:34px;left:24px;color:#d6dbe0;font-size:14px;letter-spacing:.08em;text-shadow:0 1px 3px #000;pointer-events:none}
.sn-lb button{line-height:1;text-shadow:0 1px 6px #000}
@media (hover:none),(max-width:760px){
 .sn-lb img{max-width:100vw;max-height:80vh;max-height:80dvh}
 .sn-lb .p,.sn-lb .n{top:auto;bottom:max(18px,env(safe-area-inset-bottom));transform:none;width:56px;height:56px;padding:0;font-size:36px;border-radius:50%;background:rgba(36,39,43,.75);box-shadow:0 0 0 1px rgba(0,191,255,.35)}
 .sn-lb .p{left:calc(50% - 72px)}.sn-lb .n{right:calc(50% - 72px)}
 .sn-lb .x{top:max(14px,env(safe-area-inset-top));right:10px;width:48px;height:48px;padding:0;font-size:34px}
 .sn-lb .c{top:max(28px,calc(env(safe-area-inset-top) + 14px));left:20px}
}
/* Pavel 24. 10. 4:05: iPhone – při scrollu přes galerii „přelakuje“. Příčina: pulz spodní hrany animoval filter:drop-shadow u každé dlaždice uvnitř mřížky, která sama má filter:drop-shadow – WebKit pak při každém snímku animace znovu rastruje celou několik tisíc px vysokou vrstvu galerie a při scrollu nestíhá (prázdné a přeblikávající dlaždice, přes hlavičku). Na mobilu a dotyku: bez filtru na mřížce, pulz hrany jen průhledností (záře statickým box-shadow – vypadá stejně, běží na kompozitoru), bez hover zdvihu, hlavička ve vlastní vrstvě */
@keyframes sn-hrana-m{0%,100%{opacity:.55}50%{opacity:1}}
@media (hover:none),(max-width:760px){
 .sn-gal__grid,.sn-team__grid{filter:none}
 .sn-gal__it,.sn-tm{box-shadow:0 10px 18px rgba(0,0,0,.45)}
 .sn-tm::after,.sn-gal__it::after{animation-name:sn-hrana-m;box-shadow:0 0 5px #00bfff,0 0 12px rgba(0,191,255,.6);will-change:opacity}
 .sn-head{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}
}
@media (hover:none){
 .sn-gal__it:hover,.sn-tm:hover{transform:none}
 .sn-gal__it:hover img{transform:none}
}
/* Pavel 24. 10. 4:08: mozaika galerie na mobilu – velké (na výšku) a malé fotky se střídají až do konce. Příčina: řádky mřížky byly „auto“ a výšku jim dávaly jen čtvercové dlaždice; kde vedle sebe stály dvě fotky na výšku, řádek neměl výšku a dole se zhroutily na malé čtverce s mezerami. Teď pevné čtvercové řádky (šířka sloupce), velké = 2 řádky, hustá výplň bez děr */
@media (max-width:760px){
 .sn-gal .sn-wrap{container-type:inline-size}
 .sn-gal__grid{grid-auto-rows:calc((100vw - 40px)/2);grid-auto-rows:calc((100cqw - 10px)/2);grid-auto-flow:row dense}
 .sn-gal__it,.sn-gal__it.is-tall{aspect-ratio:auto;height:auto}
 .sn-gal__it.is-tall{grid-row:span 2}
}

/* Pavel 24. 10. 15:37 („formulář rezervace furt pulsuje modře přes víc než polovinu pozadí“): příčina = puls celé karty s formulářem – vnitřní záře sn-inglow (inset 26px azurová) a hlavně vrstva ::before = plná azurová plocha přes celou kartu (opacity .3–.95, sn-ring), z které obrys dělal jen clip-path polygon(evenodd); kde ho prohlížeč nepoužije (Safari po překreslení), pulzuje modře celé pozadí pod průhledným formulářem. Teď: karta s formulářem (úvod i stránka Rezervace) bez pulzu, obrys jen tenká klidná linka na hraně (inset stín, ne plocha) */
.sn-offer--rez .sn-offer__row,.sn-rez .sn-c{animation:none;box-shadow:none}
.sn-offer--rez .sn-offer__row::before,.sn-rez .sn-c::before{animation:none;background:none;clip-path:none;opacity:1;box-shadow:inset 0 0 0 1px rgba(0,191,255,.28)}

/* Pavel 24. 10. 15:56 („ty fotky by mohly být taky seříznuté a jemně podsvícené“ + „jak tady“ = jako dlaždice galerie): velké fotky (náhled galerie / lightbox) – zkosený pravý dolní roh a tenká modrá hrana se září jako dlaždice. BEZ animace a bez plné barevné vrstvy: hrana = skutečný rámeček (padding obalu .sn-photo__e s barvou, clip-path na obalu i fotce), záře = filter drop-shadow na vnějším obalu .sn-photo (bez clip-path). Když Safari clip-path nepoužije, zůstane obyčejný obdélník s tenkým modrým rámečkem. Sdílená třída: <span class="sn-photo"><span class="sn-photo__e"><img></span></span> */
.sn-photo{--ok:14px;--ow:1.5px;display:inline-block;line-height:0;filter:drop-shadow(0 0 2px rgba(0,191,255,.55)) drop-shadow(0 0 10px rgba(0,191,255,.28)) drop-shadow(0 14px 22px rgba(0,0,0,.6))}
.sn-photo__e{display:block;padding:var(--ow) var(--ow) 2px;background:linear-gradient(0deg,#00bfff 0,#00bfff 2px,rgba(0,191,255,.5) 2px);clip-path:polygon(0 0,100% 0,100% calc(100% - var(--ok)),calc(100% - var(--ok)) 100%,0 100%)}
.sn-photo__e > img{display:block;box-shadow:none;--oi:calc(var(--ok) - var(--ow)*.59);clip-path:polygon(0 0,100% 0,100% calc(100% - var(--oi)),calc(100% - var(--oi)) 100%,0 100%)}
.sn-lb__f{--ok:22px;will-change:transform;cursor:default}
.sn-lb .sn-lb__f img{will-change:auto}
@media (hover:none),(max-width:760px){
 .sn-lb__f{--ok:14px}
 .sn-lb .sn-lb__f img{max-width:calc(100vw - 20px)}
}

/* sn-poi – Pavel 24. 10. 15:59–16:21: „Proč právě my“ – hořící ohnivá poi obíhá po hraně karet (ZKOUŠKA na testingu). Vrstva SVG nad každou kartou (vkládá ji a hýbe s ní jeden requestAnimationFrame v sunos.js, třída .sn-feat--poi na #features): knot s plameny šlehajícími dozadu, jiskry, plynule slábnoucí ohon (28 překrývajících se tahů, stroke-dashoffset z proměnné --off), jemný kouř. Jen u hrany, žádná plná barevná vrstva ani maska, bez CSS filtrů. Odstranění = smazat celý tento blok + blok v sunos.js */
.sn-feat--poi{position:relative;isolation:isolate}
.sn-feat--poi .sn-ft::after{display:none}
.sn-feat--poi .sn-ft:hover{transform:none}
.sn-poi-defs{position:absolute;left:0;top:0;width:0;height:0;overflow:hidden}
.sn-poi{position:absolute;left:0;top:0;z-index:5;pointer-events:none;overflow:visible}
.sn-poi polygon{fill:none;stroke-linejoin:round;stroke-dashoffset:calc(var(--off,0)*1px)}
.sn-poi__tail{stroke-width:2;opacity:.85}
.sn-poi__t{stroke-opacity:.06}
.sn-poi__smoke{stroke:#7a3414;stroke-width:9;stroke-opacity:.07;stroke-linecap:round}
.sn-poi__sp circle{fill:#ffcf73}
@keyframes sn-poi-ft{0%{opacity:.85}21%{opacity:.68}43%{opacity:.9}67%{opacity:.72}100%{opacity:.85}}
@keyframes sn-poi-ftw{0%{stroke-width:2}29%{stroke-width:2.5}53%{stroke-width:1.7}78%{stroke-width:2.4}100%{stroke-width:2}}
.sn-poi__tail{animation:sn-poi-ft .83s ease-in-out infinite,sn-poi-ftw 1.13s ease-in-out infinite;animation-delay:-.3s,-.5s}
/* mobil a dotyk: méně jisker, bez kouře (řeší sunos.js), ohon jen průhlednost */
@media (hover:none),(max-width:760px){.sn-poi__tail{animation:sn-poi-ft .83s ease-in-out infinite;animation-delay:-.3s}}
/* omezený pohyb: statický žhavý knot s ohonem, nic se nehýbe (sunos.js nespouští animaci) */
@media (prefers-reduced-motion:reduce){.sn-poi__tail{animation:none}}
