/* Shared base used by all options. Each option sets the --lb-* and --accent tokens. */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;overflow-x:hidden}
img{max-width:100%;display:block}
button{font:inherit;color:inherit;cursor:pointer}
a{color:inherit}
:focus-visible{outline:2px solid var(--accent,#3cc);outline-offset:3px}
body.lang-switching [data-i18n],body.lang-switching [data-brand]{opacity:0;transition:opacity .18s}
[data-i18n],[data-brand]{transition:opacity .25s}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* reveal */
[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
[data-reveal="fade"]{transform:none}
[data-reveal="left"]{transform:translateX(-32px)}
[data-reveal="scale"]{transform:scale(.96)}
[data-reveal].is-in{opacity:1;transform:none}

/* grid filter transition */
.is-out>*{opacity:0!important;transform:translateY(10px) scale(.98)!important;transition:all .2s ease!important}
[data-cat]{animation:cardIn .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--i,0)*45ms)}
@keyframes cardIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}

/* form */
.shake{animation:shake .45s}
@keyframes shake{20%,60%{transform:translateX(-6px)}40%,80%{transform:translateX(6px)}}
.form-status{max-height:0;opacity:0;overflow:hidden;transition:all .4s;margin:0}
.form-status.show{max-height:120px;opacity:1;margin-top:16px}
.hp{position:absolute;left:-9999px;opacity:0}

/* lightbox */
.lb{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;visibility:hidden;pointer-events:none}
.lb.open{visibility:visible;pointer-events:auto}
.lb-backdrop{position:absolute;inset:0;background:var(--lb-backdrop,rgba(5,8,12,.82));backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);opacity:0;transition:opacity .4s}
.lb.open .lb-backdrop{opacity:1}
.lb-panel{position:relative;width:min(1100px,94vw);max-height:92vh;display:flex;flex-direction:column;background:var(--lb-bg,#0e1116);color:var(--lb-fg,#eef);border:1px solid var(--lb-line,rgba(255,255,255,.1));border-radius:var(--lb-radius,18px);overflow:hidden;font-family:var(--lb-font,inherit);transform:translateY(30px) scale(.97);opacity:0;transition:all .5s cubic-bezier(.2,.8,.2,1)}
.lb.open .lb-panel{transform:none;opacity:1}
.lb-head{display:flex;justify-content:space-between;gap:20px;padding:22px 26px 14px}
.lb-group{margin:0 0 4px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent)}
.lb-title{margin:0;font-size:clamp(20px,2.4vw,28px);font-weight:600;font-family:var(--lb-title-font,inherit)}
.lb-desc{margin:6px 0 0;opacity:.7;font-size:14px;max-width:640px;line-height:1.55}
.lb-x{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid var(--lb-line,rgba(255,255,255,.15));background:transparent;transition:transform .3s,background .3s}
.lb-x:hover{transform:rotate(90deg);background:var(--lb-hover,rgba(255,255,255,.08))}
.lb-stage{position:relative;flex:0 1 auto;min-height:220px;display:grid;place-items:center;background:var(--lb-stage,#05070a);height:min(58vh,620px)}
.lb-img{max-width:100%;max-height:100%;object-fit:contain;transition:opacity .3s,transform .4s}
.lb-img.swap{opacity:0;transform:scale(.98)}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(0,0,0,.35);color:#fff;font-size:26px;line-height:1;backdrop-filter:blur(6px);transition:background .3s}
.lb-nav:hover{background:var(--accent)}
.lb-prev{left:14px}.lb-next{right:14px}
.lb-count{position:absolute;bottom:12px;right:16px;font-size:12px;color:#fff;background:rgba(0,0,0,.45);padding:4px 10px;border-radius:20px;letter-spacing:.08em}
.lb-thumbs{display:flex;gap:8px;padding:14px 26px;overflow-x:auto;scrollbar-width:thin}
.lb-thumbs button{flex:none;width:72px;height:54px;padding:0;border:2px solid transparent;border-radius:8px;overflow:hidden;background:#000;opacity:.55;transition:all .25s}
.lb-thumbs button img{width:100%;height:100%;object-fit:cover}
.lb-thumbs button.active,.lb-thumbs button:hover{opacity:1;border-color:var(--accent)}
.lb-foot{padding:0 26px 20px;display:flex;justify-content:flex-end}
.lb-cta{text-decoration:none;font-size:14px;font-weight:600;padding:10px 20px;border-radius:999px;background:var(--accent);color:var(--lb-cta-fg,#000);transition:transform .25s}
.lb-cta:hover{transform:translateX(4px)}
body.lb-lock{overflow:hidden}
@media (max-width:640px){.lb-panel{width:100vw;max-height:100vh;height:100%;border-radius:0}.lb-head{padding:18px 16px 10px}.lb-thumbs{padding:12px 16px}.lb-foot{padding:0 16px 16px}.lb-stage{height:auto;flex:1 1 0}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
