/* ============================================================
 * LUMEN — Portfolio (Elementor blocks). Scoped to .kgal.
 * ============================================================ */
.kgal{
	--bg:#E6DDCD; --bg-soft:#EFE8DB; --ink:#2A2620; --muted:#8B8275;
	--olive:#5C6B50; --olive-deep:#37362F; --tan:#B8A07C; --line:#D8CDB9; --glass:#F1EBDF;
	--sans:'Inter',system-ui,sans-serif; --serif:'Playfair Display',Georgia,serif;
	--pad-x:clamp(20px,5vw,72px); --r:18px; --sh:0 22px 34px -18px rgba(42,38,32,0.22);
	background:var(--bg);color:var(--ink);font-family:var(--sans);font-weight:300;position:relative;overflow:hidden;
}
.kgal::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0.5;z-index:0;background-image:repeating-linear-gradient(125deg,rgba(184,160,124,0.06) 0 1px,transparent 1px 26px);}
.kgal *{box-sizing:border-box;}
.kgal img{display:block;max-width:100%;}

.kg-hero{position:relative;z-index:1;padding:clamp(48px,6vw,92px) var(--pad-x) clamp(24px,3vw,40px);}
.kg-eyebrow{display:inline-flex;align-items:center;gap:13px;font-size:0.66rem;font-weight:500;letter-spacing:0.24em;text-transform:uppercase;color:var(--muted);margin:0 0 18px;}
.kg-eyebrow::before{content:"";width:34px;height:1px;background:var(--tan);}
.kg-hero-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:24px 40px;}
.kg-title{font-family:var(--sans);font-weight:800;font-size:clamp(3rem,8vw,6.4rem);line-height:0.94;letter-spacing:-0.025em;text-transform:uppercase;margin:0;}
.kg-title .kg-script{display:inline-block;font-family:var(--serif);font-weight:500;font-style:italic;text-transform:none;color:var(--olive);font-size:0.92em;letter-spacing:-0.01em;}
.kg-intro{max-width:34ch;font-size:clamp(0.94rem,1.3vw,1.08rem);line-height:1.7;color:#6B6358;margin:0;font-weight:300;}

.kg-filter{position:sticky;top:0;z-index:5;padding:clamp(22px,3vw,34px) var(--pad-x) clamp(16px,2vw,22px);background:rgba(230,221,205,0.82);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);}
.kg-filter-track{position:relative;display:flex;flex-wrap:wrap;gap:6px 8px;max-width:1340px;margin:0 auto;}
.kg-tab{position:relative;z-index:1;display:inline-flex;align-items:center;gap:9px;background:transparent;border:0;cursor:pointer;font-family:var(--sans);font-size:0.7rem;font-weight:600;letter-spacing:0.14em;text-transform:uppercase;color:var(--muted);padding:13px 22px;border-radius:9999px;transition:color .3s;}
.kg-tab .kg-tab-n{font-size:0.58rem;opacity:0.7;font-variant-numeric:tabular-nums;}
.kg-tab:hover{color:var(--ink);}
.kg-tab.is-active{color:#F4EFE6;}
.kg-ind{position:absolute;z-index:0;top:0;left:0;height:100%;width:0;border-radius:9999px;background:linear-gradient(135deg,var(--olive),var(--olive-deep));transition:left .42s cubic-bezier(.2,.8,.2,1),width .42s cubic-bezier(.2,.8,.2,1);}

.kg-grid{column-count:3;column-gap:22px;padding:clamp(26px,3.5vw,48px) var(--pad-x) clamp(40px,5vw,72px);max-width:1500px;margin:0 auto;}
@media(max-width:1080px){.kg-grid{column-count:2;}}
@media(max-width:620px){.kg-grid{column-count:1;}}
.kg-item{--acc:var(--olive);break-inside:avoid;position:relative;display:block;width:100%;margin:0 0 22px;padding:0;border:1px solid var(--line);background:var(--glass);border-radius:var(--r);overflow:hidden;cursor:pointer;text-align:left;font:inherit;color:inherit;box-shadow:var(--sh);transition:transform .4s ease,box-shadow .4s ease;}
.kg-item:hover{transform:translateY(-5px);box-shadow:0 30px 44px -20px rgba(42,38,32,0.34);}
.kg-item:focus-visible{outline:2px solid var(--olive);outline-offset:3px;}
.kg-item-media{position:relative;overflow:hidden;}
.kg-item-media img{width:100%;height:auto;transition:transform 1.15s cubic-bezier(.2,.8,.2,1);}
.kg-item:hover .kg-item-media img,.kg-item:focus-visible .kg-item-media img{transform:scale(1.05);}
.kg-item-shade{position:absolute;inset:0;background:linear-gradient(to top,rgba(42,38,32,0.9) 0%,rgba(42,38,32,0.18) 46%,transparent 74%);opacity:0;transition:opacity .5s;}
.kg-item:hover .kg-item-shade,.kg-item:focus-visible .kg-item-shade{opacity:1;}
.kg-item-flag{position:absolute;top:13px;right:13px;z-index:3;background:rgba(241,235,223,0.92);color:var(--ink);font-size:0.5rem;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;padding:7px 12px;border-radius:9999px;}
.kg-item-bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--olive);transform:scaleX(0);transform-origin:left;transition:transform .5s cubic-bezier(.2,.8,.2,1);z-index:2;}
.kg-item:hover .kg-item-bar,.kg-item:focus-visible .kg-item-bar{transform:scaleX(1);}
.kg-item-info{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:22px;color:#F4EFE6;display:flex;flex-direction:column;gap:5px;transform:translateY(12px);opacity:0;transition:transform .5s,opacity .5s;}
.kg-item:hover .kg-item-info,.kg-item:focus-visible .kg-item-info{transform:translateY(0);opacity:1;}
.kg-item-cat{font-size:0.56rem;letter-spacing:0.22em;text-transform:uppercase;color:#D8CDB9;font-weight:600;}
.kg-item-title{font-family:var(--serif);font-style:italic;font-weight:600;font-size:1.5rem;line-height:1.08;}
.kg-item-loc{font-size:0.78rem;line-height:1.5;color:rgba(244,239,230,0.8);font-weight:300;max-width:28em;}
.kg-item-view{margin-top:8px;display:inline-flex;align-items:center;gap:9px;font-size:0.58rem;font-weight:600;letter-spacing:0.18em;text-transform:uppercase;}
.kg-item-view i{font-style:normal;transition:transform .3s;}
.kg-item:hover .kg-item-view i{transform:translateX(5px);}
.kg-item.kg-out{opacity:0;transform:scale(0.95);transition:opacity .35s,transform .35s;pointer-events:none;}
.kg-item[hidden]{display:none!important;}
.kg-empty{padding:60px var(--pad-x);text-align:center;color:var(--muted);font-style:italic;font-family:var(--serif);font-size:1.1rem;}

.kg-cta{position:relative;z-index:1;margin:0 var(--pad-x) clamp(48px,6vw,84px);}
.kg-cta-inner{position:relative;overflow:hidden;border-radius:var(--r);background:linear-gradient(150deg,var(--olive),var(--olive-deep));color:#F1EBDF;text-align:center;padding:clamp(48px,7vw,88px) clamp(24px,5vw,48px);box-shadow:var(--sh);max-width:1340px;margin:0 auto;}
.kg-cta-inner .kg-eyebrow{color:#CFC6B2;justify-content:center;}
.kg-cta-inner .kg-eyebrow::before{background:#CFC6B2;}
.kg-cta h2{font-family:var(--sans);font-weight:700;font-size:clamp(2rem,4.4vw,3.2rem);text-transform:uppercase;letter-spacing:-0.02em;line-height:1.04;margin:14px 0 16px;}
.kg-cta h2 em{font-family:var(--serif);font-style:italic;font-weight:500;text-transform:none;color:#D8CDB9;}
.kg-cta p{max-width:46ch;margin:0 auto 32px;font-size:0.96rem;line-height:1.75;color:rgba(241,235,223,0.82);}
.kgal a.kg-btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--sans);font-size:0.7rem;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;padding:16px 30px;border-radius:9999px;background:#F4EFE6;color:var(--ink)!important;border:0;box-shadow:var(--sh);transition:transform .35s,filter .35s;}
.kgal a.kg-btn:hover{transform:translateY(-2px);filter:brightness(1.04);}

.kg-lb{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;background:rgba(28,25,20,0.94);backdrop-filter:blur(6px);padding:clamp(16px,4vw,56px);}
.kg-lb.is-open{display:flex;animation:kgFade .35s ease;}
.kg-lb-stage{margin:0;position:relative;max-width:min(1100px,100%);max-height:100%;display:flex;flex-direction:column;align-items:center;gap:16px;}
.kg-lb-img{max-width:100%;max-height:78vh;width:auto;height:auto;object-fit:contain;border-radius:6px;box-shadow:0 30px 80px rgba(0,0,0,0.5);animation:kgPop .4s cubic-bezier(.2,.8,.2,1);}
.kg-lb-cap{display:flex;flex-direction:column;gap:4px;text-align:center;color:#F1EBDF;max-width:60ch;}
.kg-lb-title{font-family:var(--serif);font-style:italic;font-size:1.1rem;}
.kg-lb-counter{font-size:0.6rem;letter-spacing:0.24em;text-transform:uppercase;color:rgba(241,235,223,0.55);}
.kg-lb-text{font-size:0.84rem;color:rgba(241,235,223,0.72);font-weight:300;}
.kg-lb-btn{position:absolute;z-index:2;background:rgba(241,235,223,0.1);border:1px solid rgba(241,235,223,0.28);color:#F1EBDF;width:52px;height:52px;border-radius:9999px;cursor:pointer;font-size:1.2rem;display:grid;place-items:center;transition:background .25s,transform .25s;}
.kg-lb-btn:hover{background:var(--olive);border-color:var(--olive);}
.kg-lb-prev{left:clamp(8px,2vw,28px);top:50%;transform:translateY(-50%);}
.kg-lb-next{right:clamp(8px,2vw,28px);top:50%;transform:translateY(-50%);}
.kg-lb-close{top:clamp(10px,2vw,26px);right:clamp(10px,2vw,26px);font-size:1.5rem;}
@media(max-width:640px){.kg-lb-prev{left:6px;}.kg-lb-next{right:6px;}.kg-lb-img{max-height:66vh;}}

.kgal-js [data-kg-reveal]{opacity:0;transform:translateY(22px);transition:opacity .8s ease,transform .8s cubic-bezier(.2,.8,.2,1);transition-delay:calc(var(--i,0)*60ms);}
.kgal-js [data-kg-reveal].kg-in{opacity:1;transform:none;}
body.elementor-editor-active [data-kg-reveal]{opacity:1!important;transform:none!important;}
@keyframes kgFade{from{opacity:0;}to{opacity:1;}}
@keyframes kgPop{from{opacity:0;transform:scale(0.96);}to{opacity:1;transform:scale(1);}}
@media(max-width:760px){.kg-filter{position:static;}}
@media (prefers-reduced-motion:reduce){.kgal *,.kg-lb *{animation:none!important;transition:none!important;}.kgal-js [data-kg-reveal]{opacity:1!important;transform:none!important;}}
