.zv-create-modal .wide-modal{width:min(1280px,96vw);max-width:1280px;max-height:94vh;overflow:auto}
.zv-studio-shell{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(340px,.82fr);gap:18px;margin-top:14px}
.zv-studio-main,.zv-studio-side{display:grid;gap:16px}
.zv-studio-card{border:1px solid var(--line);border-radius:22px;padding:16px;background:rgba(255,255,255,.03);box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}
.zv-studio-card h3{margin:0 0 6px;font-size:15px}
.zv-studio-muted{color:var(--muted);font-size:11px;line-height:1.7}
.zv-studio-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px}
.zv-col-12{grid-column:span 12}.zv-col-8{grid-column:span 8}.zv-col-6{grid-column:span 6}.zv-col-4{grid-column:span 4}.zv-col-3{grid-column:span 3}
.zv-field{display:grid;gap:7px}
.zv-field label,.zv-switch-head strong,.zv-mini-label{font-size:12px;font-weight:700}
.zv-input-wrap{display:flex;gap:8px;align-items:center}
.zv-input-wrap .input{flex:1}
.zv-chip-btn,.zv-mini-btn{border:1px solid var(--line);background:rgba(255,255,255,.045);color:var(--text);border-radius:14px;padding:10px 12px;cursor:pointer;font-weight:700}
.zv-mini-btn{padding:8px 10px;font-size:11px;border-radius:12px}
.zv-chip-btn:hover,.zv-mini-btn:hover{border-color:color-mix(in srgb,var(--accent) 38%,var(--line));background:rgba(255,255,255,.065)}
.zv-suffix{display:flex;align-items:center;justify-content:center;min-width:62px;padding:0 12px;height:44px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.04);color:var(--muted);font-size:12px;font-weight:700}
.zv-switch{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:14px 15px;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.03)}
.zv-switch-head{display:grid;gap:4px}
.zv-toggle{appearance:none;-webkit-appearance:none;cursor:pointer;width:52px;height:30px;border-radius:999px;background:rgba(255,255,255,.16);border:1px solid var(--line);position:relative;transition:.2s}
.zv-toggle::after{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 4px 14px rgba(0,0,0,.28)}
.zv-toggle:checked{background:color-mix(in srgb,var(--accent) 75%,#fff 10%);border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}
.zv-toggle:checked::after{transform:translateX(22px)}
.zv-inline-help{font-size:11px;color:var(--muted)}
.zv-tab-head{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.zv-tab-btn{padding:11px 13px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.025);cursor:pointer;color:var(--text);font-weight:800}
.zv-tab-btn.active{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:color-mix(in srgb,var(--accent) 12%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent) inset}
.zv-tab-panel.hidden{display:none}
.zv-plan-search{margin-bottom:10px}
.zv-plan-list{display:grid;gap:10px;max-height:480px;overflow:auto;padding-right:2px}
.zv-plan-card{border:1px solid var(--line);border-radius:18px;padding:14px;background:rgba(255,255,255,.025);display:grid;gap:10px;cursor:pointer;transition:.18s}
.zv-plan-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 38%,var(--line));background:rgba(255,255,255,.04)}
.zv-plan-card.active{border-color:color-mix(in srgb,var(--accent) 52%,var(--line));background:color-mix(in srgb,var(--accent) 8%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 22%,transparent) inset,0 12px 30px rgba(0,0,0,.18)}
.zv-plan-top{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.zv-plan-top h4{margin:0;font-size:14px}.zv-plan-top code{font-size:10px;color:var(--muted)}
.zv-plan-badge{padding:5px 9px;border-radius:999px;border:1px solid var(--line);font-size:10px;font-weight:800;background:rgba(255,255,255,.035)}
.zv-plan-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.zv-plan-metrics>div{border:1px solid var(--line);border-radius:14px;padding:9px 10px;background:rgba(255,255,255,.02)}.zv-plan-metrics small{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.zv-plan-metrics b{font-size:12px}
.zv-group-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.zv-country-list{display:grid;gap:10px;max-height:500px;overflow:auto;padding-right:2px}
.details-reset{all:unset}
.zv-country{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:rgba(255,255,255,.025)}
.zv-country>summary{list-style:none;display:flex;align-items:center;gap:10px;padding:12px 14px;cursor:pointer;background:rgba(255,255,255,.045)}
.zv-country>summary::-webkit-details-marker{display:none}
.zv-country summary .flag{font-size:18px}.zv-country summary b{font-size:13px}.zv-country summary .meta{margin-inline-start:auto;color:var(--muted);font-size:11px}.zv-country summary .chev{font-size:12px;color:var(--muted)}
.zv-country[open] summary .chev{transform:rotate(180deg)}
.zv-country-body{padding:12px;display:grid;gap:8px}
.zv-country-actions{display:flex;justify-content:flex-end;gap:8px}
.zv-connection-item{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);border-radius:15px;padding:10px;background:rgba(255,255,255,.022)}
.zv-connection-item input{accent-color:var(--accent);margin-top:3px}.zv-connection-item b{display:block;font-size:12px}.zv-connection-item small{display:block;color:var(--muted);font-size:10px;margin-top:4px;line-height:1.5}
.zv-summary-card{display:grid;gap:12px}.zv-summary-hero{border:1px solid color-mix(in srgb,var(--accent) 26%,var(--line));border-radius:20px;padding:16px;background:linear-gradient(180deg,color-mix(in srgb,var(--accent) 10%,transparent),rgba(255,255,255,.015))}.zv-summary-hero h3{margin:0 0 7px}.zv-summary-hero p{margin:0;color:var(--muted);font-size:11px;line-height:1.8}
.zv-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.zv-metric{border:1px solid var(--line);border-radius:16px;padding:11px 12px;background:rgba(255,255,255,.025)}.zv-metric small{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.zv-metric b{font-size:13px;line-height:1.5}
.zv-special{display:flex;align-items:center;gap:12px;padding:13px 14px;border-radius:18px;border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));background:color-mix(in srgb,var(--accent) 6%,transparent)}.zv-special .star{font-size:22px}.zv-special small{display:block;color:var(--muted);font-size:10px}.zv-special b{display:block;margin-top:3px;font-size:12px}
.zv-result{display:grid;gap:10px;font-size:12px}.zv-result.ok{color:var(--good)}.zv-result.bad{color:var(--danger)}.zv-verify-card{border-radius:18px;padding:14px;border:1px solid color-mix(in srgb,var(--good) 30%,var(--line));background:color-mix(in srgb,var(--good) 7%,transparent);color:var(--text)}.zv-verify-card h4{margin:0 0 10px;font-size:14px;color:var(--good)}.zv-verify-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.zv-verify-grid div{border:1px solid var(--line);border-radius:14px;padding:10px;background:rgba(255,255,255,.025)}.zv-verify-grid small{display:block;color:var(--muted);font-size:10px;margin-bottom:5px}.zv-verify-grid b{font-size:12px;word-break:break-word}
.zv-actions{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-top:2px}.zv-actions .right{display:flex;gap:10px;flex-wrap:wrap}
.zv-top-shortcut{order:-1}
.zv-top-shortcut .pill-btn{display:flex;align-items:center;gap:8px}
.zv-empty{padding:16px;border:1px dashed var(--line);border-radius:16px;color:var(--muted);text-align:center;background:rgba(255,255,255,.02)}
.zv-helper-note{border-radius:16px;padding:10px 12px;border:1px dashed color-mix(in srgb,var(--accent) 25%,var(--line));background:rgba(255,255,255,.02);font-size:11px;color:var(--muted);line-height:1.8}
@media (max-width: 1080px){.zv-studio-shell{grid-template-columns:1fr}.zv-top-shortcut{display:none}}
@media (max-width: 760px){.zv-studio-grid{grid-template-columns:1fr}.zv-col-12,.zv-col-8,.zv-col-6,.zv-col-4,.zv-col-3{grid-column:span 1}.zv-plan-metrics,.zv-summary-grid,.zv-verify-grid{grid-template-columns:1fr}.zv-actions{flex-direction:column;align-items:stretch}.zv-actions .right{width:100%}.zv-actions .right .btn,.zv-actions .right .zv-chip-btn{flex:1}}

/* Stage 2.2.1 connection identity + package UX */
.zv-plan-metrics-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.zv-package-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:10px}
.zv-apply-plan{white-space:nowrap;padding:9px 13px}
.zv-country-title{display:grid;gap:2px}.zv-country-title small{font-size:9px;color:var(--muted);font-weight:500}
.zv-connection-item{align-items:center;transition:.16s}
.zv-connection-item:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--line));background:rgba(255,255,255,.04)}
.zv-connection-item.selected{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:color-mix(in srgb,var(--accent) 7%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 14%,transparent)}
.zv-connection-copy{display:grid;gap:7px;min-width:0}
.zv-connection-copy>b{font-size:13px;white-space:normal;word-break:break-word}
.zv-connection-meta{display:flex;gap:6px;flex-wrap:wrap}
.zv-meta-badge{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:999px;padding:4px 8px;font-size:9px;color:var(--muted);background:rgba(255,255,255,.035)}
.zv-meta-badge i{font-style:normal;color:var(--accent);font-weight:900}
.zv-meta-badge.danger{border-color:color-mix(in srgb,var(--danger) 40%,var(--line));color:var(--danger)}
.zv-selected-connection-list{display:grid;gap:7px;margin-top:8px;max-height:205px;overflow:auto}
.zv-selected-connection{display:flex;gap:9px;align-items:flex-start;border:1px solid var(--line);border-radius:14px;padding:9px 10px;background:rgba(255,255,255,.022)}
.zv-selected-connection>span{font-size:17px}.zv-selected-connection b{display:block;font-size:11px}.zv-selected-connection small{display:block;font-size:9px;color:var(--muted);margin-top:3px}
@media(max-width:760px){.zv-plan-metrics-4{grid-template-columns:repeat(2,minmax(0,1fr))}.zv-package-foot{align-items:stretch;flex-direction:column}.zv-apply-plan{width:100%}}
/* Stage 2.2.2 connection bootstrap */
.zv-mini-btn.primaryish{border-color:color-mix(in srgb,var(--accent) 38%,var(--line));background:color-mix(in srgb,var(--accent) 10%,transparent)}
.zv-warning-note{margin:0 0 10px;padding:11px 13px;border:1px solid color-mix(in srgb,#ffb454 32%,var(--line));background:rgba(255,180,84,.06);border-radius:15px;color:#ffd59b;font-size:11px;line-height:1.7}
.zv-country.unconfigured{opacity:.9}.zv-country.unconfigured summary{background:rgba(255,255,255,.025)}
.zv-unconfigured-box{display:flex;align-items:center;gap:12px;padding:12px;border:1px dashed var(--line);border-radius:15px;background:rgba(255,255,255,.018)}
.zv-unconfigured-box>span{font-size:18px}.zv-unconfigured-box>div{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:1;flex-wrap:wrap}.zv-unconfigured-box b{font-size:11px;color:var(--muted)}
.zv-mapper{margin-top:14px;border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:20px;padding:14px;background:color-mix(in srgb,var(--accent) 4%,rgba(255,255,255,.02))}
.zv-mapper-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.zv-mapper-head h3{margin:0 0 5px}.zv-mapper-rows{display:grid;gap:8px;max-height:430px;overflow:auto}
.zv-mapper-row{display:grid;grid-template-columns:90px minmax(170px,1.15fr) minmax(150px,.9fr) minmax(180px,1.1fr);gap:9px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.025)}
.zv-mapper-row small{display:block;color:var(--muted);font-size:9px;margin-bottom:5px}.zv-map-group{align-self:center}.zv-map-group b{font-size:11px;word-break:break-word}.zv-map-use{display:flex;align-items:center;gap:8px;height:44px}.zv-map-use input{accent-color:var(--accent)}.zv-map-use span{font-size:10px;font-weight:700}
.zv-mapper-actions{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}.zv-copy-all{font-size:11px;color:var(--muted)}.zv-copy-all input{accent-color:var(--accent)}
.zv-empty-action{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
@media(max-width:900px){.zv-mapper-row{grid-template-columns:1fr 1fr}.zv-map-use{height:auto}.zv-map-group{align-self:auto}}
@media(max-width:620px){.zv-mapper-row{grid-template-columns:1fr}}

/* Stage 2.2.3 protocol-first connection matrix */
.zv-protocol-panel{border:1px solid color-mix(in srgb,var(--accent) 24%,var(--line));border-radius:18px;padding:12px 13px;margin-bottom:11px;background:color-mix(in srgb,var(--accent) 4%,rgba(255,255,255,.02))}
.zv-protocol-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:10px}.zv-protocol-head b{display:block;font-size:12px}.zv-protocol-head small{display:block;color:var(--muted);font-size:10px;margin-top:4px;line-height:1.55}.zv-protocol-availability{font-size:10px;color:var(--muted);white-space:nowrap}
.zv-protocol-chips{display:flex;gap:8px;flex-wrap:wrap}.zv-protocol-chip{border:1px solid var(--line);background:rgba(255,255,255,.025);color:var(--text);border-radius:999px;padding:8px 11px;cursor:pointer;display:flex;align-items:center;gap:8px;transition:.16s}.zv-protocol-chip b{font-size:10px}.zv-protocol-chip span{min-width:20px;text-align:center;padding:2px 6px;border-radius:999px;background:rgba(255,255,255,.07);font-size:9px;color:var(--muted)}.zv-protocol-chip:hover{border-color:color-mix(in srgb,var(--accent) 36%,var(--line))}.zv-protocol-chip.active{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));background:color-mix(in srgb,var(--accent) 13%,transparent);box-shadow:0 0 22px color-mix(in srgb,var(--accent) 10%,transparent)}.zv-protocol-chip.active span{color:var(--text);background:color-mix(in srgb,var(--accent) 16%,rgba(255,255,255,.06))}
.zv-connection-titleline{display:flex;align-items:center;justify-content:space-between;gap:9px;flex-wrap:wrap}.zv-protocol-tag{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:9px;font-weight:900;letter-spacing:.2px;border:1px solid color-mix(in srgb,var(--accent) 34%,var(--line));background:color-mix(in srgb,var(--accent) 8%,transparent);color:var(--accent3)}.zv-protocol-tag.cdn{border-color:rgba(99,213,255,.35)}.zv-protocol-tag.reality{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
.zv-meta-badge.linked{border-color:color-mix(in srgb,var(--good) 35%,var(--line));color:var(--good)}
.zv-link-state{display:inline-flex;margin-top:6px;border-radius:999px;padding:3px 7px;font-size:8px;color:var(--muted);border:1px solid var(--line)}.zv-link-state.ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 32%,var(--line));background:color-mix(in srgb,var(--good) 5%,transparent)}
.zv-mapper-row{grid-template-columns:80px minmax(180px,1.1fr) minmax(140px,.85fr) minmax(120px,.7fr) minmax(170px,1fr)}
@media(max-width:1100px){.zv-mapper-row{grid-template-columns:1fr 1fr}.zv-protocol-head{flex-direction:column}.zv-protocol-availability{white-space:normal}}
@media(max-width:620px){.zv-mapper-row{grid-template-columns:1fr}.zv-protocol-chip{flex:1;justify-content:center}}

/* Stage 2.2.4 — squad route discovery */
.zv-mapper-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) auto auto;gap:10px;align-items:center;margin:12px 0}
.zv-mapper-toolbar label{display:flex;align-items:center;gap:7px;padding:9px 11px;border:1px solid var(--line);border-radius:13px;background:rgba(255,255,255,.025);font-size:11px;color:var(--muted);white-space:nowrap}
.zv-mapper-toolbar input[type="checkbox"],.zv-copy-all input{accent-color:var(--accent)}
.zv-squad-route-card{border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.025);overflow:hidden}
.zv-squad-route-head{display:grid;grid-template-columns:minmax(220px,1fr) minmax(200px,.9fr) auto;gap:12px;align-items:center;padding:13px 14px;background:rgba(255,255,255,.04)}
.zv-squad-route-head>div:first-child{display:grid;gap:4px}.zv-squad-route-head small{color:var(--muted);font-size:9px}.zv-squad-route-head b{font-size:12px;word-break:break-word}
.zv-link-state{display:inline-flex;width:max-content;max-width:100%;align-items:center;gap:5px;padding:4px 8px;border-radius:999px;border:1px solid var(--line);font-size:9px;color:var(--muted);background:rgba(255,255,255,.025)}
.zv-link-state.ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 28%,var(--line));background:color-mix(in srgb,var(--good) 6%,transparent)}
.zv-link-state.infra{color:var(--muted);opacity:.75}
.zv-detected{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.zv-detected>small{width:100%}
.zv-detect-tag{display:inline-flex;padding:4px 7px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.03);font-size:9px;font-weight:800}.zv-detect-tag.proto{border-color:color-mix(in srgb,var(--accent) 25%,var(--line));color:var(--accent)}.zv-detect-tag.muted{color:var(--muted)}
.zv-route-list{display:grid;gap:8px;padding:10px}
.zv-route-row{display:grid;grid-template-columns:32px minmax(145px,.8fr) minmax(135px,.7fr) minmax(200px,1.3fr) 34px;gap:8px;align-items:end;padding:9px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02)}
.zv-route-row label{display:grid;gap:5px}.zv-route-row small{font-size:9px;color:var(--muted)}.zv-route-use{align-self:center;justify-items:center}.zv-route-use input{width:17px;height:17px;accent-color:var(--accent)}
.zv-route-remove{width:34px;height:42px;border:1px solid color-mix(in srgb,var(--danger) 25%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--danger) 5%,transparent);color:var(--danger);cursor:pointer;font-size:18px}.zv-route-remove:hover{background:color-mix(in srgb,var(--danger) 10%,transparent)}
.zv-mapper-options{display:grid;gap:8px}.zv-mapper-options .zv-copy-all{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}
@media(max-width:950px){.zv-mapper-toolbar{grid-template-columns:1fr}.zv-squad-route-head{grid-template-columns:1fr}.zv-route-row{grid-template-columns:30px 1fr 1fr}.zv-route-label{grid-column:2/span 2}.zv-route-remove{grid-column:1;grid-row:2;align-self:end}}
@media(max-width:620px){.zv-route-row{grid-template-columns:30px 1fr}.zv-route-label{grid-column:2}.zv-route-remove{grid-column:1;grid-row:auto}.zv-squad-route-head{padding:11px}.zv-route-list{padding:8px}}
