#connected-catalog-status{margin:10px 0;color:#43617f;line-height:1.5}
.connected-exercise-row{gap:10px;align-items:center}
.connected-exercise-row .grow{min-width:0}
.connected-exercise-row strong,.connected-exercise-row small{display:block;overflow-wrap:anywhere}
.connected-exercise-row small{margin-top:4px;color:#55708c}
.connected-exercise-row .icon-btn{flex:none;min-width:40px;min-height:40px;font-size:22px;line-height:1}
.connected-media-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;width:100%}
.connected-media-actions button{border:1px solid #b9d9f3;border-radius:999px;background:#eef8ff;color:#053b69;padding:8px 13px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.connected-media-actions button[aria-pressed=true]{background:#064f91;color:#fff;border-color:#064f91}
.connected-media-viewer{width:100%;margin-top:10px;padding:10px;border:1px solid #d7e8f4;border-radius:14px;background:#f7fbff}
.connected-media-viewer img,.connected-media-viewer video{display:block;width:100%;max-height:320px;object-fit:contain;border-radius:10px}
.connected-media-viewer a{display:inline-block;margin-top:7px;color:#0769be;font-size:12px;font-weight:700}
.connected-modal-photo{display:block;width:100%;max-height:260px;object-fit:contain;border-radius:12px;background:#f2f7fb}
.connected-related{display:grid;gap:7px}
.connected-related button{width:100%;text-align:left;border:1px solid #cce0f0;border-radius:10px;background:#f7fbff;color:#063965;padding:10px 12px;font:inherit;font-size:12px;cursor:pointer}
.connected-local-upload{margin-top:10px}
@media(max-width:760px){.connected-media-actions button{min-height:40px}.connected-media-viewer img,.connected-media-viewer video{max-height:240px}}
.connected-filters{display:flex;gap:6px;padding:5px;background:#edf3f8;border-radius:13px;margin:16px 0 10px}.connected-filters button{flex:1;border:0;background:transparent;color:#59718b;font:inherit;font-size:12px;font-weight:700;padding:10px;border-radius:9px;cursor:pointer}.connected-filters button[aria-pressed=true]{background:#062c50;color:#fff;box-shadow:0 3px 8px #062c5020}#library-list .connected-exercise-row{display:flex;gap:12px;border:1px solid #e0e9f1;border-radius:16px;background:#fff;padding:12px;margin:10px 0;box-shadow:0 4px 14px #092a4d05}.connected-exercise-photo{width:70px;height:78px;flex:none;border:0;border-radius:11px;overflow:hidden;padding:0;background:#edf5fb;color:#116eb7;cursor:pointer}.connected-exercise-photo img{width:100%;height:100%;object-fit:cover}.connected-view{border:0;background:none;color:#0874c7;padding:7px 0 0;font:inherit;font-size:11px;font-weight:700;cursor:pointer}#library-list .connected-exercise-row strong{font-size:13px;line-height:1.45}#library-list .connected-exercise-row small{font-size:11px}.connected-related button{padding:14px;border-radius:13px;background:#f6f9fc}.exercise-media-panel{border:0;border-radius:16px;background:#f5f9fc;padding:16px}.exercise-media-panel header>span{display:none}@media(max-width:420px){.connected-exercise-photo{width:58px;height:70px}#library-list .connected-exercise-row{gap:9px;padding:10px}.connected-exercise-row .icon-btn{min-width:34px;min-height:36px}}
/* Execution viewer follows the app's navy/white visual language. */
.connected-execution-dialog{padding:24px!important;border-radius:24px!important;max-width:480px!important}.connected-execution-dialog h2{font-size:22px;line-height:1.3;padding-right:34px}.connected-execution-dialog>.stack{gap:12px!important;margin-top:10px!important}.connected-execution-dialog .exercise-media-panel{padding:0;background:transparent}.connected-execution-dialog .exercise-media-panel header{display:none}.connected-execution-dialog .exercise-media-options{padding:5px;background:#edf3f8;border-radius:14px;margin:4px 0 16px;gap:5px}.connected-execution-dialog .exercise-media-options button{border:0;background:transparent;flex:1;justify-content:center;margin:0;border-radius:10px;min-height:44px}.connected-execution-dialog .exercise-media-options button[aria-pressed=true]{background:#002a5d;color:#fff}.connected-execution-dialog #exercise-media-player{border-radius:16px;overflow:hidden;background:#f5f9fc;padding:12px}.connected-execution-dialog #exercise-media-player img{height:240px;object-fit:contain;background:#fff}.connected-execution-dialog #exercise-media-player video{max-height:280px;background:#051e36}.connected-execution-dialog .exercise-media-footer{padding:0 3px}.connected-execution-dialog .connected-local-upload{border:0;background:transparent;color:#55718d;min-height:36px;padding:6px;margin:0;font-size:12px}.connected-execution-dialog .connected-related{gap:9px}.connected-execution-dialog .connected-related button{min-height:48px;font-size:13px}.connected-exercise-photo img{object-fit:contain;background:white}
/* Compact prescription cards: movement, preview, then the editable metrics. */
html[data-screen='workout-create'] #builder-exercises>.exercise-row{display:grid;grid-template-columns:22px minmax(0,1fr) 72px;gap:10px;align-items:center;padding:16px;border:1px solid #dfe8f1;border-radius:16px;margin:12px 0;background:#fff}
html[data-screen='workout-create'] #builder-exercises .builder-media{grid-column:3;grid-row:1;width:72px;height:72px;margin:0;border-radius:12px;min-width:0}
html[data-screen='workout-create'] #builder-exercises .builder-media span{font-size:9px;padding:3px 5px;right:3px;bottom:3px}
html[data-screen='workout-create'] #builder-exercises .exercise-number{grid-column:1;grid-row:1;font-size:12px;color:#829bb2}
html[data-screen='workout-create'] #builder-exercises .grow{grid-column:2;grid-row:1;min-width:0}
html[data-screen='workout-create'] #builder-exercises h3{font-size:14px;line-height:1.4;margin:0 0 4px}
html[data-screen='workout-create'] #builder-exercises .grow p{font-size:11px;line-height:1.5}
html[data-screen='workout-create'] #builder-exercises .exercise-inputs,html[data-screen='workout-create'] #builder-exercises .builder-row-actions,html[data-screen='workout-create'] #builder-exercises .connected-media-actions,html[data-screen='workout-create'] #builder-exercises .connected-media-viewer{grid-column:1/-1;width:100%}
html[data-screen='workout-create'] #builder-exercises .exercise-inputs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding-top:8px}
html[data-screen='workout-create'] #builder-exercises .exercise-inputs input{width:100%;min-width:0;box-sizing:border-box;background:#f5f8fc;border-radius:9px;min-height:40px}
.connected-exercise-photo video{display:block;width:100%;height:100%;object-fit:cover;background:#09243d}
.connected-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.connected-filters button{min-width:0;padding:10px 4px}
.connected-illustrative-notice{margin:4px 0 12px;padding:11px 13px;border:1px solid #d8e3f3;border-radius:12px;background:#f1f6fd;color:#28496c;font-size:12px;line-height:1.5}

.connected-exercise-photo video{display:block;width:100%;height:100%;object-fit:cover;background:#09243d}
.connected-filters{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}
.connected-filters button{min-width:0;padding:10px 4px}
const fs=require('fs');const p='docs/design-preview/builder-connected-catalog.js';let s=fs.readFileSync(p,'utf8');s=s.replace("currentScreen.type !== 'builder'", "!['builder', 'library'].includes(currentScreen.type)");s=s.replace('  function render() {','  function render() {\n    if (currentScreen.type === \'library\') { renderLibrary(); return; }');const addition=`
  let libraryGroup = 'Todos';
  function renderLibrary() {
    const grid = document.querySelector('.visual-library-grid');
    const search = document.querySelector('[data-connected-library-search]');
    if (!grid || !search) return;
    const all = [...byName.values()];
    const term = normalize(search.value);
    const items = all.filter(e => (libraryGroup === 'Todos' || e.category === libraryGroup) && normalize(e.name+' '+e.category).includes(term));
    const filters = document.querySelector('.library-muscles');
    filters.innerHTML = ['Todos', ...new Set(all.map(e => e.category))].map(group => '<button data-connected-group="'+esc(group)+'" aria-pressed="'+(group===libraryGroup)+'" class="'+(group===libraryGroup?'active':'')+'">'+esc(group)+'</button>').join('');
    grid.innerHTML = items.map(e => '<article class="visual-exercise-card"><button type="button" class="exercise-photo-link" data-connected-library-media="'+esc(e.id)+'" aria-label="Ver execução de '+esc(e.name)+'">'+(e.photo||e.gif?'<img loading="lazy" src="'+esc(e.photo||e.gif)+'" alt="'+esc(e.name)+'">':'<div class="connected-library-placeholder">'+icon('Barbell')+'</div>')+'<span>'+esc(e.category)+'</span></button><div class="visual-exercise-copy"><p>'+esc(e.category)+'</p><h2>'+esc(e.name)+'</h2><div class="visual-exercise-action"><small>'+mediaButtons(e).map(m=>m.kind).join(' · ')+'</small><button class="text-link" data-connected-library-media="'+esc(e.id)+'">Ver execução '+icon('ArrowRight')+'</button></div></div></article>').join('');
    document.querySelector('#visual-library-count').textContent = items.length+' exercícios disponíveis';
    document.querySelector('.library-no-results').hidden = items.length > 0;
  }
  function initConnectedLibrary() {
    const search=document.querySelector('[data-visual-library-search]');
    if(!search)return;
    search.removeAttribute('data-visual-library-search');search.setAttribute('data-connected-library-search','');
    search.placeholder='Buscar exercício ou grupo muscular';
    document.querySelector('.visual-library-grid').replaceChildren();
    document.querySelector('.library-muscles').replaceChildren();
    document.querySelector('#visual-library-count').textContent='Carregando exercícios…';
    document.querySelector('.library-caption').textContent='Mesmo catálogo de exercícios disponível em Montar treino.';
    document.querySelector('[data-library-reset]')?.removeAttribute('data-library-reset');
    search.addEventListener('input',renderLibrary);
    document.addEventListener('click',event=>{
      const group=event.target.closest('[data-connected-group]');
      if(group){libraryGroup=group.dataset.connectedGroup;renderLibrary();}
      if(event.target.closest('.library-no-results button')){search.value='';libraryGroup='Todos';renderLibrary();}
      const media=event.target.closest('[data-connected-library-media]');
      if(media){const item=byId.get(media.dataset.connectedLibraryMedia);if(item){openConnectedMediaModal(item.name,item.id);document.querySelector('[data-connected-local-upload]')?.remove();}}
    });
    loadFirebase().then(renderLibrary).catch(()=>{document.querySelector('#visual-library-count').textContent='Não foi possível carregar o catálogo. Atualize para tentar novamente.';});
  }
`;
s=s.replace("  document.addEventListener('DOMContentLoaded', () => {",addition+"\n  document.addEventListener('DOMContentLoaded', () => {\n    if (currentScreen.type === 'library') { initConnectedLibrary(); return; }");fs.writeFileSync(p,s);
'@ | node
@'
.visual-library-grid button.exercise-photo-link{display:block;width:100%;padding:0;border:0;text-align:left;cursor:pointer;background:#eaf4fc}
.visual-library-grid button.text-link{border:0;background:none;cursor:pointer;font:inherit;padding:0}
.connected-library-placeholder{min-height:200px;display:grid;place-items:center;color:#1c6699;background:linear-gradient(135deg,#e6f3fb,#c5e2f3)}
.connected-library-placeholder svg{width:70px;height:70px}
