.fia-wrap { font-family: Arial, sans-serif; background: #fff; color: #000; }
.fia-header { padding: 1.5rem 2rem 1rem; border-bottom: 1px solid #000; display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.fia-header h2 { font-size: 1rem; font-weight: normal; letter-spacing: -0.03em; margin: 0; }
.fia-count { font-size: 0.7rem; color: #888; }
.fia-toolbar { padding: 0.9rem 2rem; border-bottom: 1px solid #000; display: flex; gap: 1rem; align-items: center; flex-wrap: wrap; }
.fia-toolbar input { flex: 1; min-width: 200px; font-family: Arial, sans-serif; font-size: 0.8rem; border: none; border-bottom: 1px solid #000; padding: 0.3rem 0; outline: none; background: transparent; letter-spacing: -0.02em; }
.fia-toolbar input::placeholder { color: #aaa; }
.fia-filters { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.fia-fbtn { font-family: Arial, sans-serif; font-size: 0.62rem; padding: 0.2rem 0.6rem; border: 1px solid #000; background: #fff; cursor: pointer; letter-spacing: -0.01em; }
.fia-fbtn:hover, .fia-fbtn.fia-active { background: #000; color: #fff; }
.fia-loading { padding: 4rem 2rem; text-align: center; font-size: 0.75rem; color: #aaa; }
.fia-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 1px; background: #000; }
.fia-card { background: #fff; cursor: pointer; display: flex; flex-direction: column; aspect-ratio: 3/4; overflow: hidden; }
.fia-card-img { flex: 1; overflow: hidden; background: #f0f0f0; }
.fia-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(100%); transition: transform 0.35s ease, filter 0.35s ease; }
.fia-card:hover .fia-card-img img { transform: scale(1.04); filter: grayscale(0%); }
.fia-card-info { padding: 0.55rem 0.7rem 0.65rem; border-top: 1px solid #000; background: #fff; }
.fia-card-client { font-size: 0.72rem; font-weight: bold; line-height: 1.2; letter-spacing: -0.02em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fia-card-meta { font-size: 0.58rem; color: #888; letter-spacing: -0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fia-empty { grid-column: 1/-1; background: #fff; padding: 4rem 2rem; text-align: center; font-size: 0.78rem; color: #aaa; }
.fia-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.9); z-index: 99999; overflow-y: auto; }
.fia-overlay.fia-open { display: flex; align-items: flex-start; justify-content: center; padding: 2rem 1rem; }
.fia-modal { background: #fff; width: 100%; max-width: 900px; display: grid; grid-template-columns: 1.2fr 1fr; margin: auto; }
.fia-modal-img { background: #f0f0f0; min-height: 500px; overflow: hidden; }
.fia-modal-img img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(100%); transition: filter 0.3s; }
.fia-modal-img img:hover { filter: grayscale(0%); }
.fia-strip { display: flex; gap: 1px; overflow-x: auto; max-height: 72px; background: #000; padding: 1px; }
.fia-strip img { height: 70px; width: 52px; object-fit: cover; flex-shrink: 0; filter: grayscale(100%); cursor: pointer; opacity: 0.5; transition: opacity 0.15s; }
.fia-strip img:hover, .fia-strip img.fia-active { opacity: 1; }
.fia-modal-text { padding: 2rem; display: flex; flex-direction: column; gap: 0.8rem; position: relative; overflow-y: auto; max-height: 580px; }
.fia-close { position: absolute; top: 0.9rem; right: 1rem; background: none; border: none; font-family: Arial, sans-serif; font-size: 0.65rem; cursor: pointer; color: #aaa; }
.fia-close:hover { color: #000; }
.fia-modal-client { font-size: 1.15rem; font-weight: bold; line-height: 1.1; margin-top: 1.2rem; letter-spacing: -0.03em; }
.fia-modal-title { font-size: 0.8rem; font-style: italic; color: #333; line-height: 1.4; }
.fia-modal-year { font-size: 0.7rem; color: #888; }
.fia-divider { height: 1px; background: #eee; }
.fia-modal-tags { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: auto; }
.fia-modal-tag { font-size: 0.55rem; padding: 0.18rem 0.5rem; border: 1px solid #ddd; color: #888; }
.fia-modal-filename { font-size: 0.6rem; color: #ccc; word-break: break-all; }
mark { background: #000 !important; color: #fff !important; }
@keyframes fia-fadein { from{opacity:0;transform:translateY(4px)} to{opacity:1;transform:none} }
@media(max-width:580px){ .fia-modal{grid-template-columns:1fr} .fia-modal-img{min-height:280px} .fia-grid{grid-template-columns:repeat(2,1fr)} }

fashion image archive

loading…

loading images…

(function(){
const CLOUD = ‘dbdagsqth’;
const FOLDER = ‘Marili Andre’;

function parseName(publicId) {
const raw = publicId.split(‘/’).pop();
const parts = raw.split(‘_’);
const client = parts.length > 1 ? parts[1].trim() : ”;
const lastPart = parts[parts.length – 1] || ”;
const yearMatch = lastPart.match(/(\d{4})/);
const year = yearMatch ? yearMatch[1] : ”;
const titleParts = parts.slice(2, parts.length – 1);
const title = titleParts.join(‘ ‘).replace(/^[“\u201C]|[“\u201D]$/g,”).trim();
return { client, title, year, raw };
}

function imgUrl(pid, w) {
return ‘https://res.cloudinary.com/’+CLOUD+’/image/upload/w_’+w+’,c_fill,ar_3:4,f_auto,q_auto/’+pid;
}

function esc(s){ return s.replace(/[.*+?^${}()|[\]\\]/g,’\\$&’); }
function hi(t,q){
if(!q||!t) return t||”;
return t.replace(new RegExp(‘(‘+esc(q)+’)’,’gi’),’$1‘);
}

let ALL=[], groups={}, activeFilter=’All’, query=”;

function filtered(){
var q=query.toLowerCase();
return ALL.filter(function(img){
var fm=activeFilter===’All’||img.meta.client===activeFilter;
if(!fm) return false;
if(!q) return true;
return [img.meta.client,img.meta.title,img.meta.year,img.meta.raw].join(‘ ‘).toLowerCase().includes(q);
});
}

function renderFilters(){
var clients=[‘All’].concat(Object.keys(groups).sort());
document.getElementById(‘fia-filters’).innerHTML=clients.map(function(c){
return ‘‘;
}).join(”);
document.getElementById(‘fia-filters’).querySelectorAll(‘.fia-fbtn’).forEach(function(b){
b.addEventListener(‘click’,function(){ activeFilter=b.dataset.f; renderFilters(); render(); });
});
}

function render(){
var res=filtered();
document.getElementById(‘fia-count’).textContent=res.length+’ images’;
var grid=document.getElementById(‘fia-grid’);
if(!res.length){ grid.innerHTML=’

no results

‘; return; }
grid.innerHTML=res.map(function(img,i){
var delay=Math.min(i,30)*15;
return ‘

‘+

'+img.meta.client+'

‘+

‘+

‘+hi(img.meta.client||’Untitled’,query)+’

‘+

‘+hi([img.meta.year,img.meta.title].filter(Boolean).join(‘ · ‘),query)+’

‘+

‘;
}).join(”);
grid.querySelectorAll(‘.fia-card’).forEach(function(c){
c.addEventListener(‘click’,function(){ openModal(+c.dataset.i); });
});
}

function openModal(i){
var img=ALL[i], m=img.meta;
document.getElementById(‘fia-mimg’).innerHTML=’'+m.client+'‘;
var related=ALL.filter(function(x){ return x.meta.client===m.client; });
var strip=document.getElementById(‘fia-strip’);
if(related.length>1){
strip.style.display=’flex’;
strip.innerHTML=related.map(function(r){
return ‘‘;
}).join(”);
strip.querySelectorAll(‘img’).forEach(function(th){
th.addEventListener(‘click’,function(){
document.getElementById(‘fia-mimg’).innerHTML=’‘;
strip.querySelectorAll(‘img’).forEach(function(t){ t.classList.remove(‘fia-active’); });
th.classList.add(‘fia-active’);
});
});
} else { strip.style.display=’none’; }

document.getElementById(‘fia-mtext’).innerHTML=
‘+

‘+(m.client||’Untitled’)+’

‘+
(m.title?’

‘+m.title+’

‘:”)+
(m.year?’

‘+m.year+’

‘:”)+

‘+

‘+
(m.client?’‘+m.client+’‘:”)+
(m.year?’‘+m.year+’‘:”)+

‘+

‘+img.public_id+’

‘;

document.getElementById(‘fia-close’).addEventListener(‘click’, closeModal);
document.getElementById(‘fia-overlay’).classList.add(‘fia-open’);
document.body.style.overflow=’hidden’;
}

function closeModal(){
document.getElementById(‘fia-overlay’).classList.remove(‘fia-open’);
document.body.style.overflow=”;
}

document.getElementById(‘fia-overlay’).addEventListener(‘click’,function(e){
if(e.target===document.getElementById(‘fia-overlay’)) closeModal();
});
document.addEventListener(‘keydown’,function(e){ if(e.key===’Escape’) closeModal(); });
document.getElementById(‘fia-search’).addEventListener(‘input’,function(e){ query=e.target.value; render(); });

fetch(‘https://res.cloudinary.com/’+CLOUD+’/image/list/’+FOLDER.replace(/ /g,’%20′)+’.json’)
.then(function(r){ return r.json(); })
.then(function(data){
ALL=(data.resources||[]).map(function(r){ return Object.assign({},r,{meta:parseName(r.public_id)}); });
ALL.forEach(function(img){
var c=img.meta.client||’Untitled’;
if(!groups[c]) groups[c]=[];
groups[c].push(img);
});
document.getElementById(‘fia-loading’).style.display=’none’;
document.getElementById(‘fia-grid’).style.display=’grid’;
renderFilters();
render();
})
.catch(function(){
document.getElementById(‘fia-loading’).style.display=’none’;
});
})();