/* Workspace layout. */
html:has(#jsonviewer),body:has(#jsonviewer) { height:100dvh; overflow:hidden!important; }
body:has(#jsonviewer) { display:flex; flex-direction:column; }
body:has(#jsonviewer)>#header,body:has(#jsonviewer)>#footer-wrapper { flex-shrink:0; }
#jsonviewer { flex:1 1 0; min-height:0; margin:0!important; }
#jsonviewer .jv-workspace { height:100%; min-height:0; display:flex; flex-direction:column; }
#jsonviewer .jv-panels { flex:1; min-height:0; display:grid; grid-template-columns:minmax(0,var(--jv-split,50%)) 8px minmax(0,1fr); overflow:hidden; }
#jsonviewer .jv-editor-panel,#jsonviewer .jv-tree-panel { min-width:0; min-height:0; display:flex; flex-direction:column; overflow:hidden; }
#jsonviewer .jv-editor-panel { overflow:visible; container-type:inline-size; }
#jsonviewer .jv-panel-heading { min-height:47px; flex-shrink:0; }
#jsonviewer .jv-tree-heading .nav-link { padding:.1rem 1rem; }
#jsonviewer .jv-code-area { position:relative; flex:1; min-height:0; display:flex; background:#1e1e1e; }
#jsonviewer #jv-monaco { flex:1; min-height:0; overflow:hidden; }
#jsonviewer .jv-input { flex:1; min-height:0; width:100%; resize:none; border:0; padding:12px; font:15px/1.6 Consolas,monospace; color:#d4d4d4; background:#1e1e1e; outline:0; }
#jsonviewer .jv-editor-empty { position:absolute; top:12px; left:45px; right:16px; color:#909090; pointer-events:none; font-size:14px; z-index:1; }
#jsonviewer .jv-separator { background:#f1f1f1; cursor:col-resize; }
#jsonviewer .jv-separator:hover,#jsonviewer .jv-separator:focus { background:#ddd; }
#jsonviewer .jv-tree { flex:1; min-height:0; overflow:auto; overflow-wrap:anywhere; font-family:inherit; font-size:13px; line-height:1.8; }
#jsonviewer .jv-string { color:#a31515; }
#jsonviewer .jv-number { color:#098658; }
#jsonviewer .jv-boolean { color:#0000ff; }
#jsonviewer .jv-null { color:#795e26; }
#jsonviewer .jv-hit { background:#fff3cd; color:#332701; }
#jsonviewer .svg-icon { flex-shrink:0; vertical-align:middle; }
#jsonviewer .dropdown-menu { min-width:245px; max-height:calc(100dvh - 170px); overflow-y:auto; z-index:1050; }
#jsonviewer [hidden] { display:none!important; }
#jsonviewer .jv-panels.jv-stacked { grid-template-columns:1fr; grid-template-rows:minmax(0,var(--jv-split,50%)) 8px minmax(0,1fr); }
#jsonviewer .jv-stacked .jv-separator { cursor:row-resize; }
#jsonviewer:fullscreen { height:100dvh; background:#fff; }

/* Tree rows and value types. */
#jsonviewer .jv-tree details { margin-left:0; }
#jsonviewer .jv-node-line { display:flex; align-items:center; gap:6px; position:relative; min-height:26px; padding:1px 5px 1px 20px; width:100%; max-width:100%; border-radius:0; cursor:pointer; isolation:isolate; }
#jsonviewer .jv-node-line:focus-visible { outline:2px solid #7da6c9; outline-offset:1px; }
#jsonviewer summary.jv-node-line { list-style:none; }
#jsonviewer summary.jv-node-line::-webkit-details-marker { display:none; }
#jsonviewer summary.jv-node-line::before { content:'+'; position:absolute; left:1px; top:8px; width:11px; height:11px; border:1px solid #9aabb9; border-radius:2px; color:#5d6b78; background:#fff; font:11px/9px monospace; text-align:center; z-index:1; }
#jsonviewer details[open]>summary.jv-node-line::before { content:'−'; }
#jsonviewer .jv-children { margin-left:6px; padding-left:15px; border-left:1px dotted #c8ced5; }
#jsonviewer .jv-children>.jv-branch,#jsonviewer .jv-children>.jv-leaf { position:relative; margin:0; }
#jsonviewer .jv-children>.jv-branch::before,#jsonviewer .jv-children>.jv-leaf::before { content:''; position:absolute; top:13px; left:-15px; width:16px; border-top:1px dotted #c8ced5; }
#jsonviewer .jv-type-icon { display:inline-flex; flex-shrink:0; justify-content:center; align-items:center; width:18px; height:18px; font:bold 16px/1 Consolas,monospace; color:#52679b; }
#jsonviewer .jv-type-icon:empty::before { content:''; width:6px; height:6px; border-radius:1px; background:currentColor; opacity:.8; }
#jsonviewer .jv-type-number { color:#568c40; }
#jsonviewer .jv-type-boolean { color:#8a62a8; }
#jsonviewer .jv-type-null { color:#a46b42; }
#jsonviewer .jv-key { color:var(--bs-body-color,#24292f); }
#jsonviewer .jv-container { color:#8b929a; font-size:11px; margin-left:2px; }
#jsonviewer .jv-value { white-space:pre-wrap; overflow-wrap:anywhere; min-width:0; }
#jsonviewer .jv-node-line::after { content:""; position:absolute; top:0; bottom:0; left:calc(-1 * var(--jv-row-indent,16px)); right:-16px; z-index:-1; pointer-events:none; }
#jsonviewer .jv-node-line:hover,#jsonviewer .jv-node-line.jv-selected { background:transparent; }
#jsonviewer .jv-node-line:hover::after { background:#f0f3f7; }
#jsonviewer .jv-node-line.jv-selected::after { background:#dfe8fa; }

#jsonviewer .jv-editor-actions .btn { min-height:36px; flex-shrink:0; }


/* Feedback and menus. */
#jsonviewer .jv-tree-heading { flex-wrap:wrap; }
#jsonviewer .jv-feedback { flex-shrink:0; overflow-wrap:anywhere; overflow:auto; min-height:0; white-space:normal; max-height:35%; }

#jsonviewer #jv-status { color:inherit!important; line-height:1.6; min-width:0; }

#jsonviewer .dropdown-menu,#jsonviewer .dropdown-item,#jsonviewer .dropdown-menu label,#jsonviewer .dropdown-menu .form-select { font-size:13px; line-height:1.45; }
#jsonviewer .dropdown-menu .svg-icon { width:18px; height:18px; }
#jsonviewer .dropdown-item { border-radius:var(--bs-border-radius); }
#jsonviewer .dropdown-item:not(:disabled):not(.disabled):is(:hover,:focus-visible) { background:var(--bs-gray-200,#e9ecef); color:var(--bs-dropdown-link-color,#253545); }

#jsonviewer .jv-error-line { background:rgba(244,71,71,.13); }
#jsonviewer .jv-error-line-margin { border-left:2px solid #f44747; }

/* Inline editing, search and repair. */
#jsonviewer .jv-inline-edit { margin:4px 0 8px 20px; max-width:calc(100% - 20px); white-space:normal; font-family:inherit; }
#jsonviewer .jv-inline-edit textarea { min-width:0; font-family:Consolas,monospace; }
#jsonviewer #jv-context { position:fixed; z-index:1080; min-width:170px; max-height:calc(100dvh - 16px); }
#jsonviewer .jv-node-line.jv-active-match::after { background:#ffefb2; }
#jsonviewer #jv-search { min-width:0; }
#jsonviewer #jv-search-prev svg { transform:rotate(-90deg); }
#jsonviewer .jv-repair-dialog { width:min(1000px,calc(100vw - 32px)); max-height:calc(100dvh - 32px); color:var(--bs-body-color); }
#jsonviewer .jv-repair-dialog::backdrop { background:#0006; }
#jsonviewer .jv-repair-columns { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
#jsonviewer .jv-repair-columns textarea { height:45dvh; resize:none; font:13px/1.6 Consolas,monospace; white-space:pre; }
@media(max-width:600px) {
 #jsonviewer .jv-repair-columns { grid-template-columns:1fr; }
 #jsonviewer .jv-repair-columns textarea { height:22dvh; }
}

#jsonviewer .jv-row-actions { opacity:0; pointer-events:none; padding:0 6px; height:22px; min-height:0; line-height:1; font-size:18px; }
#jsonviewer .jv-selected>.jv-row-actions,#jsonviewer .jv-node-line:hover>.jv-row-actions,#jsonviewer .jv-node-line:focus-within>.jv-row-actions { opacity:1; pointer-events:auto; }

/* Responsive workspace. */
@media(max-width:767.98px) {
 #jsonviewer .jv-panels,#jsonviewer .jv-panels.jv-stacked { grid-template-columns:1fr; grid-template-rows:1fr; }
 #jsonviewer .jv-tree-panel,#jsonviewer .jv-separator,#jsonviewer .jv-desktop-control { display:none; }
 #jsonviewer.jv-show-tree .jv-editor-panel { display:none; }
 #jsonviewer.jv-show-tree .jv-tree-panel { display:flex; }
 #jsonviewer .jv-input { font-size:16px; }
 }
@container(max-width:420px) { #jv-format span { display:none!important; } }
