/* Visualizador de ZPL grátis (24/10/2026) — templates/zpl_viewer.html. Usa os tokens do vf2.css. */
.zv-head{max-width:760px;margin:6px 0 22px}
.zv-watch{margin-top:6px}
.zv-video-links{text-align:center;margin:14px 0 0;color:var(--v2-muted);font-size:15px}
.zv-head .v2-h1{font-size:clamp(32px,4.4vw,50px);margin:8px 0 12px}
.zv-tool{padding:22px;display:grid;gap:18px}
.zv-inputs{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.zv-drop{position:relative;border:2px dashed var(--v2-line-strong);border-radius:var(--v2-radius);background:var(--v2-canvas);
  padding:22px 18px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:230px;
  transition:border-color .15s var(--v2-ease),background .15s var(--v2-ease)}
.zv-drop.dragging{border-color:var(--v2-green);background:var(--v2-green-soft)}
.zv-drop.has-files{justify-content:flex-start}
.zv-file-input{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.zv-file-input:focus-visible + .zv-drop-icon + .zv-drop-title .btn{outline:3px solid var(--v2-green-line);outline-offset:2px}
.zv-drop-icon{color:var(--v2-green);margin-bottom:6px}
.zv-drop-title{margin:4px 0}
.zv-drop-title .btn{cursor:pointer}
.zv-drop-hint{margin:6px 0 0;color:var(--v2-muted);font-size:14px}
.zv-chips{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:8px;justify-content:center;max-width:100%}
.zv-chips li{display:flex;align-items:center;gap:6px;background:var(--v2-surface);border:1px solid var(--v2-line);border-radius:999px;
  padding:4px 4px 4px 12px;font-size:13px;color:var(--v2-text);max-width:100%}
.zv-chips li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.zv-chips button{border:0;background:var(--v2-tint);color:var(--v2-ink);border-radius:999px;width:28px;height:28px;cursor:pointer;font-size:16px;line-height:1;flex:none}
.zv-chips button:hover{background:var(--v2-red-soft);color:var(--v2-red)}
.zv-paste{display:flex;flex-direction:column;gap:8px;min-width:0}
.zv-paste .zv-label{display:block;margin:0;padding:0;font-weight:600;color:var(--v2-ink);font-size:14px}
.zv-paste textarea{flex:1;min-height:190px;width:100%;box-sizing:border-box;resize:vertical;border:1px solid var(--v2-line-strong);border-radius:var(--v2-radius-sm);
  padding:12px;font:13px/1.5 ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;color:var(--v2-ink);background:var(--v2-surface)}
.zv-paste textarea:focus{outline:3px solid var(--v2-green-line);border-color:var(--v2-green)}
button.v2-btn-link{background:none;border:0;padding:0;font:inherit;font-weight:600;cursor:pointer}
.zv-sample{align-self:flex-start;min-height:44px}
.zv-options{display:flex;flex-wrap:wrap;gap:14px;align-items:flex-end}
.zv-field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600;color:var(--v2-ink);min-width:220px;flex:1}
.zv-field select{min-height:44px;border:1px solid var(--v2-line-strong);border-radius:var(--v2-radius-sm);padding:0 12px;background:var(--v2-surface);font:inherit;font-weight:500;color:var(--v2-ink)}
.zv-submit{flex:none}
.zv-submit[disabled]{opacity:.7;cursor:progress}
.zv-privacy{display:flex;gap:8px;align-items:flex-start;margin:0;color:var(--v2-muted);font-size:14px}
.zv-privacy .v2-icon{color:var(--v2-green);flex:none;margin-top:2px}
.zv-message{border-radius:var(--v2-radius-sm);padding:12px 14px;font-size:15px}
.zv-message.error{background:var(--v2-red-soft);color:var(--v2-red);border:1px solid #f5c2bd}
.zv-results{margin-top:28px}
.zv-results-head{display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:flex-end;margin-bottom:16px}
.zv-results-head .v2-h3{margin:0}
.zv-notes{margin:6px 0 0;color:var(--v2-amber);font-size:14px}
.zv-notes:empty{display:none}
.zv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.zv-label{margin:0;padding:12px;display:flex;flex-direction:column;gap:10px}
.zv-label img{display:block;width:100%;height:auto;border:1px solid var(--v2-line);border-radius:6px;background:#fff;image-rendering:auto}
.zv-label figcaption{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--v2-text)}
.zv-label figcaption b{color:var(--v2-ink)}
.zv-label figcaption small{color:var(--v2-muted);overflow-wrap:anywhere}
.zv-label .v2-btn-link{align-self:flex-start;min-height:44px}
.zv-label-fail{display:flex;align-items:center;justify-content:center;aspect-ratio:2/3;background:var(--v2-red-soft);color:var(--v2-red);border-radius:6px;font-weight:600}
.zv-warn{margin:4px 0 0;padding-left:18px;color:var(--v2-amber);font-size:13px}
.zv-upsell{display:grid;grid-template-columns:1.2fr 1fr;gap:28px;align-items:center}
.zv-upsell-links{display:grid;gap:12px}
.zv-upsell-card{display:flex;justify-content:space-between;align-items:center;padding:18px 20px;color:var(--v2-ink);text-decoration:none}
.zv-upsell-card span{color:var(--v2-green)}
.zv-steps{list-style:none;counter-reset:zv;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.zv-steps li{counter-increment:zv;background:var(--v2-surface);border:1px solid var(--v2-line);border-radius:var(--v2-radius);padding:18px;display:flex;flex-direction:column;gap:6px}
.zv-steps li::before{content:counter(zv);width:30px;height:30px;border-radius:50%;background:var(--v2-green-soft);color:var(--v2-green);font-weight:700;display:flex;align-items:center;justify-content:center}
.zv-steps b{color:var(--v2-ink)}
.zv-steps span{color:var(--v2-text);font-size:15px}
@media (max-width:860px){
  .zv-inputs,.zv-upsell,.zv-steps{grid-template-columns:1fr}
  .zv-drop{min-height:180px}
  .zv-submit{width:100%;justify-content:center}
}
@media (max-width:480px){
  .zv-tool{padding:16px}
  .zv-field{min-width:0;flex-basis:100%}
  .zv-grid{grid-template-columns:1fr}
}
