/* Construtor de páginas + visualizador + elementos da biblioteca */
.pc-grid { display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:14px; align-items:stretch; }
.pc-b { border:1px solid var(--line); border-radius:12px; background:var(--panel, var(--soft)); min-width:0; overflow:hidden; display:flex; flex-direction:column; }
.pc-b1 { grid-column:span 1; } .pc-b2 { grid-column:span 2; } .pc-b3 { grid-column:span 3; }
.pc-corpo { padding:14px 16px; flex:1; min-width:0; }
@media (max-width: 980px) { .pc-grid { grid-template-columns:repeat(2, minmax(0,1fr)); } .pc-b3 { grid-column:span 2; } }
@media (max-width: 640px) { .pc-grid { grid-template-columns:minmax(0,1fr); } .pc-b1, .pc-b2, .pc-b3 { grid-column:span 1; } }
/* elementos */
.elem-titulo { font-size:12.5px; font-weight:700; color:var(--muted); margin-bottom:8px; text-transform:uppercase; letter-spacing:.03em; }
.elem-vazio { color:var(--muted); font-size:12.5px; padding:6px 0; }
.elem-kpi-v { font-size:34px; font-weight:800; line-height:1.1; } .elem-kpi-v span { font-size:16px; font-weight:600; margin-left:4px; color:var(--muted); }
.elem-kpi-s { font-size:11.5px; color:var(--muted); margin-top:6px; }
.elem-barras { display:grid; grid-template-columns:minmax(80px, 34%) 1fr auto; gap:6px 10px; align-items:center; font-size:12.5px; }
.elem-b-l { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .elem-b-t { background:var(--soft); border-radius:6px; height:12px; overflow:hidden; } .elem-b-f { height:100%; border-radius:6px; } .elem-b-v { font-weight:700; text-align:right; }
.elem-svg { width:100%; height:auto; color:var(--ink); } .elem-svg-p { width:130px; height:130px; flex:none; color:var(--ink); }
.elem-pizza { display:flex; gap:14px; align-items:center; flex-wrap:wrap; } .elem-leg { font-size:12px; display:grid; gap:4px; } .elem-leg i { display:inline-block; width:10px; height:10px; border-radius:3px; margin-right:6px; }
.elem-scroll { overflow-x:auto; } .elem-tab { width:100%; border-collapse:collapse; font-size:12px; } .elem-tab th { text-align:left; color:var(--muted); padding:5px 8px; border-bottom:1px solid var(--line); white-space:nowrap; } .elem-tab td { padding:5px 8px; border-bottom:1px solid var(--line); max-width:260px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.elem-lista { display:grid; gap:6px; } .elem-li { display:flex; justify-content:space-between; gap:10px; font-size:12.5px; padding:6px 0; border-bottom:1px solid var(--line); } .elem-li span { color:var(--muted); text-align:right; }
.elem-txt h3 { margin:0 0 6px; font-size:18px; } .elem-txt p { margin:0; font-size:13px; color:var(--muted); line-height:1.5; }
/* editor */
.con-barra { display:flex; gap:18px; flex-wrap:wrap; align-items:flex-end; margin:6px 0 10px; }
.con-perfis { display:flex; gap:12px; flex-wrap:wrap; align-items:center; font-size:12.5px; }
.con-acoes { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin:10px 0 14px; }
.con-tool { display:flex; align-items:center; gap:6px; padding:6px 10px; background:var(--soft); border-bottom:1px solid var(--line); cursor:grab; font-size:12px; flex-wrap:wrap; }
.con-grip { color:var(--muted); letter-spacing:-2px; user-select:none; } .con-nome { font-weight:700; } .con-sp { flex:1; }
.con-btn { border:1px solid var(--line); background:var(--panel, var(--soft)); color:var(--ink); border-radius:6px; padding:2px 8px; font-size:11.5px; cursor:pointer; }
.con-btn.on { background:var(--brand,#3b82f6); border-color:var(--brand,#3b82f6); color:#fff; } .con-btn.bad { color:var(--bad,#dc2626); } .con-btn:hover { filter:brightness(1.15); }
.con-alvo { outline:2px dashed var(--brand,#3b82f6); outline-offset:-2px; }
.con-modal { position:fixed; inset:0; background:rgba(0,0,0,.55); z-index:9999; display:none; align-items:center; justify-content:center; padding:20px; }
.con-modal-c { background:var(--panel, #111827); color:var(--ink); border:1px solid var(--line); border-radius:12px; width:min(720px,100%); max-height:88vh; display:flex; flex-direction:column; }
.con-modal-h { display:flex; justify-content:space-between; align-items:center; padding:12px 16px; border-bottom:1px solid var(--line); } .con-modal-b { padding:14px 16px; overflow:auto; }
.con-galeria { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; }
.con-card { text-align:left; border:1px solid var(--line); background:var(--soft); color:var(--ink); border-radius:10px; padding:12px; cursor:pointer; display:flex; flex-direction:column; gap:4px; } .con-card span { font-size:11.5px; color:var(--muted); } .con-card:hover { border-color:var(--brand,#3b82f6); }
.con-cols { display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:4px 10px; font-size:12.5px; max-height:160px; overflow:auto; } .con-chk { display:flex; gap:8px; align-items:center; font-size:12.5px; margin-top:10px; }
.con-filtro { display:grid; grid-template-columns:1fr 1fr 1fr auto; gap:6px; margin-bottom:6px; align-items:center; } .con-filtro .inv-inp { margin:0; }
