.tv-wrap{font-family:ui-sans-serif,system-ui,Segoe UI,Roboto;max-width:1100px;margin:24px auto;padding:8px 12px}
.tv-steps{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.tv-steps button{padding:8px 12px;border:1px solid #ddd;border-radius:999px;background:#f7f7f7;cursor:pointer}
.tv-steps button.active{background:#111;color:#fff;border-color:#111}
.tv-card{background:#fff;border:1px solid #ececec;border-radius:14px;padding:16px;margin-bottom:12px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.tv-actions{display:flex;justify-content:space-between;gap:8px;margin-top:8px}
.tv-btn,.tv-next,.tv-prev{padding:10px 14px;border-radius:10px;border:1px solid #ddd;background:#f9f9f9;cursor:pointer}
.tv-btn{background:#111;color:#fff;border-color:#111}
.tv-grid,.tv-two{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tv-fields{display:grid;gap:10px}
.tv-fields.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.tv-fields label{display:flex;flex-direction:column;font-size:14px;gap:6px}
.tv-fields input,.tv-fields select{padding:10px 12px;border:1px solid #ddd;border-radius:10px;font-size:14px}
.tv-model-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.tv-model{display:flex;flex-direction:column;align-items:center;gap:8px;padding:16px;border:1px solid #ddd;border-radius:12px;background:#fafafa;cursor:pointer}
.tv-model span{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;background:#111;color:#fff;font-weight:600}
.tv-model em{font-style:normal;font-size:13px;color:#333;text-align:center}
.tv-model.selected{outline:2px solid #111;background:#fff}
.tv-summary{display:grid;gap:6px}
.tv-summary>div{display:flex;justify-content:space-between}
.tv-total{font-size:18px}

.tv-viewport{width:100%;aspect-ratio:1000/700;background:#fafafa;border:1px dashed #ddd;border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden}
#tv_svg{width:100%;height:100%}
.tv-svg-frame{fill:#e6e6e6;stroke:#a9a9a9;stroke-width:2}
.tv-svg-sash{fill:#ffffff;stroke:#6b6b6b;stroke-width:2}
.tv-svg-divider{stroke:#6b6b6b;stroke-width:4;fill:none}
.tv-svg-handle{fill:#cfcfcf;stroke:#8b8b8b;stroke-width:1}
.tv-dim{font-size:18px;fill:#333}

@media (max-width:900px){
  .tv-grid,.tv-two{grid-template-columns:1fr}
  .tv-model-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
