@keyframes show{0%{opacity:0;transform:scale(1)}to{opacity:1;transform:scale(1)}}@keyframes hide{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(0);display:none}}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}.portfolio-filters{text-align:center;margin-bottom:25px}.filter-btn{background:#fff;color:#000;margin:5px;cursor:pointer;font-size:small;text-transform:uppercase;border:1px solid #000;border-radius:50px;padding:4px 15px;transition:background .2s,color .2s,border .2s}.filter-btn.active,.filter-btn:hover{background:#fff;color:#de9d03;border:1px solid #000}.masonry-grid{column-count:1;column-gap:10px;max-width:1200px;margin:0 auto}@media (min-width:600px){.masonry-grid{column-count:2}}@media (min-width:900px){.masonry-grid{column-count:3}}@media (min-width:1200px){.masonry-grid{column-count:5}}.masonry-item{display:inline-block;margin-bottom:0;break-inside:avoid;animation:show .2s forwards}.masonry-item img{width:100%;display:block;border-radius:6px}.hide{animation-name:hide;animation-duration:.2s;animation-fill-mode:forwards}.masonry-item.hide{opacity:0;transform:scale(.96);pointer-events:none}.masonry-item.showing{animation:fadeIn .4s forwards}.lightbox-overlay{display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.9);justify-content:center;align-items:center;flex-direction:column;z-index:9999;color:#fff;padding:20px;text-align:center;backdrop-filter:blur(4px)}.lightbox-overlay img{max-width:90%;max-height:70%;border-radius:6px;transition:opacity .3s ease;margin-bottom:15px}.lightbox-title{font-size:1.4rem;font-weight:700}.lightbox-caption{font-style:italic;color:#ccc;margin-bottom:10px}.lightbox-description{font-size:1rem;color:#ddd;max-width:80%;margin:0 auto}.lightbox-arrow{position:absolute;top:50%;font-size:40px;color:#fff;cursor:pointer;user-select:none;padding:0 15px;opacity:.6;transition:opacity .2s}.lightbox-arrow:hover{opacity:1}.lightbox-arrow.left{left:0}.lightbox-arrow.right{right:0}#jdn-loader,.lightbox-category{align-items:center;justify-content:center}.lightbox-category{display:inline-flex;gap:8px;margin-top:10px;color:#f5f5f5;font-weight:400;font-size:1em;text-align:center}.lightbox-category img{width:20px;height:16px;object-fit:contain;vertical-align:middle;margin:0;border-radius:0}.lazy-img{opacity:0;transition:opacity .4s ease}.lazy-img.loaded{opacity:1}#jdn-loader{position:fixed;inset:0;background:#fff;display:flex;z-index:999999;opacity:.8;transition:opacity .4s ease,visibility .4s ease}#jdn-loader.hide{opacity:0;visibility:hidden}.jdn-spinner{width:80px;height:80px}.jdn-spinner circle{transform-origin:50% 50%;stroke-dasharray:164;stroke-dashoffset:124;animation:spin 1s linear infinite;stroke:#727272}.jdn-portfolio-pagination{margin:2px 0!important;text-align:center}.nv-content-wrap ul{margin:0 0 20px!important}.jdn-portfolio-pagination ul{display:inline-flex;gap:6px!important;padding:0;list-style:none}.jdn-portfolio-pagination a,.jdn-portfolio-pagination span{font-size:.9rem;padding:4px 6px!important;border:1px solid #ddd;text-decoration:none}.jdn-portfolio-pagination .current{background:#000;color:#fff;border-color:#000}#portfolio-count,.portfolio-count{font-size:.9rem;margin-bottom:1rem;opacity:.85;font-weight:500;transition:opacity .3s ease}.portfolio-filters-tree{font-family:inherit;font-size:14px}.portfolio-tree{border-left:1px solid #ddd}.portfolio-tree .tree-item{margin:4px 0;cursor:pointer}.tree-label{display:inline-block;padding:4px 6px}.tree-label:hover{background:#f2f2f2}.tree-item.active>.tree-label{background:#e5e5e5;font-weight:700;color:#0073aa}.portfolio-flex-container{display:flex;gap:20px}.portfolio-filters-tree{width:200px;flex-shrink:0;overflow-y:auto;max-height:80vh}.portfolio-grid-wrapper{flex:1}.portfolio-tree{list-style:none;margin:0;padding-left:15px}.portfolio-tree ul{list-style:none;margin:0 0 0 15px;padding-left:10px;border-left:1px dashed #ccc}.tree-item{cursor:pointer;margin-bottom:5px}.tree-item.collapsed>ul{display:none}.tree-item.has-children>.tree-label{cursor:pointer;position:relative;padding-left:18px}.tree-item.has-children>.tree-label::before{content:"▸";position:absolute;left:0;transition:transform .2s ease}.tree-item.has-children.open>.tree-label::before{transform:rotate(90deg)}