/*
 * RSM Project Vault v1.2.0 - tool-only styles.
 * Built on YH UI v1.3.0 tokens only (no raw colours or sizes outside --yh- tokens,
 * except layout widths that are specific to this tool's preview / editor panes).
 */

.pv-inline { display: inline-flex; margin: 0; }
.pv-wide { max-width: none; }
.pv-flashes { margin-bottom: var(--yh-space-5); }
.pv-navtoggle { display: none; }
.pv-dim td { opacity: .55; }
.pv-notes { max-width: 320px; }
.pv-nowrap-cluster { flex-wrap: nowrap; gap: var(--yh-space-1); justify-content: flex-end; }
.pv-link { font-size: var(--yh-text-xs); }
.pv-clamp { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; min-height: 2.8em; }
.pv-steps { margin: var(--yh-space-3) 0 0; padding-left: var(--yh-space-6); font-size: var(--yh-text-sm); }
.pv-steps li { margin-bottom: var(--yh-space-2); }
.pv-kv-wide { grid-template-columns: 1fr; }
.pv-kv-wide dt { margin-top: var(--yh-space-3); }
.pv-choices { display: grid; gap: var(--yh-space-3); }
.pv-key { word-break: break-all; }
.pv-qr { display: flex; justify-content: center; margin: var(--yh-space-4) 0; }
.pv-qr img { width: 184px; height: 184px; image-rendering: pixelated; background: var(--yh-gray-0, #fff); padding: var(--yh-space-3); border-radius: var(--yh-radius-md); }

/* Project cards */
.pv-pcard__main { display: flex; flex-direction: column; gap: var(--yh-space-3); color: inherit; }
.pv-pcard__main:hover { text-decoration: none; }
.pv-pcard__main:hover .yh-card__title { color: var(--yh-color-primary-text); }
.pv-pcard .yh-btn-group { margin-top: auto; }

/* Two-pane layout (files | preview), (changes | diff) */
.pv-split { display: grid; grid-template-columns: 360px minmax(0, 1fr); gap: var(--yh-space-5); align-items: start; }
.pv-files { position: sticky; top: calc(64px + var(--yh-space-4)); max-height: calc(100vh - 64px - var(--yh-space-8)); display: flex; flex-direction: column; }
.pv-files__notes { border-top: 1px solid var(--yh-border); padding: var(--yh-space-4); }

/* File tree */
.pv-tree { overflow: auto; padding: var(--yh-space-2) var(--yh-space-2) var(--yh-space-4); flex: 1; min-height: 120px; }
.pv-tree__row { display: flex; align-items: center; gap: var(--yh-space-2); padding: 0 var(--yh-space-2); border-radius: var(--yh-radius-sm); min-height: var(--yh-control-h-sm); cursor: pointer; list-style: none; }
.pv-tree__row::-webkit-details-marker { display: none; }
.pv-tree__row:hover { background: var(--yh-surface-hover); }
.pv-tree__row.is-selected { background: var(--yh-option-selected); }
.pv-tree__name { display: flex; align-items: center; gap: var(--yh-space-3); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--yh-text); font-size: var(--yh-text-sm); }
.pv-tree__name:hover { text-decoration: none; }
.pv-tree__name .yh-icon { color: var(--yh-text-muted); }
.pv-tree__dir > summary .pv-tree__name .yh-icon { color: var(--yh-color-warning); }
.pv-tree__dir[open] > summary .pv-tree__name { font-weight: var(--yh-weight-semibold); }
.pv-tree__kids { padding-left: var(--yh-space-4); margin-left: var(--yh-space-4); border-left: 1px dashed var(--yh-border-strong); }
.pv-tree__size { font-size: var(--yh-text-xs); color: var(--yh-text-muted); white-space: nowrap; }
.pv-tree__act { display: none; align-items: center; }
.pv-tree__row:hover .pv-tree__act, .pv-tree__row:focus-within .pv-tree__act { display: inline-flex; }
.pv-tree__row:hover .pv-tree__size { display: none; }

/* Preview */
.pv-preview { display: flex; flex-direction: column; overflow: hidden; height: calc(100vh - 64px - 160px); min-height: 480px; }
.pv-preview__bar { display: flex; align-items: center; gap: var(--yh-space-3); padding: var(--yh-space-3); border-bottom: 1px solid var(--yh-border); background: var(--yh-surface-sunken); }
.pv-preview__stage { flex: 1; display: flex; justify-content: center; overflow: auto; background: var(--yh-surface-sunken); }
.pv-frame { width: 100%; height: 100%; border: 0; background: var(--yh-gray-0, #fff); transition: width var(--yh-dur-slow) var(--yh-ease); }
.pv-frame.is-tablet { width: 820px; box-shadow: var(--yh-shadow-md); }
.pv-frame.is-mobile { width: 390px; box-shadow: var(--yh-shadow-md); }

/* Editor */
.pv-editor { display: flex; flex-direction: column; height: calc(100vh - 64px - 110px); min-height: 420px; overflow: hidden; }
.pv-editor__bar { display: flex; align-items: center; gap: var(--yh-space-4); padding: var(--yh-space-3) var(--yh-space-4); border-bottom: 1px solid var(--yh-border); background: var(--yh-surface-sunken); flex-wrap: wrap; }
.pv-editor__body { flex: 1; display: flex; min-height: 0; }
.pv-editor__code { flex: 1; display: flex; min-width: 0; background: var(--yh-surface-sunken); }
.pv-editor__gutter { margin: 0; padding: var(--yh-space-4) var(--yh-space-3); min-width: 52px; text-align: right; color: var(--yh-text-muted); background: var(--yh-surface); border-right: 1px solid var(--yh-border); font: var(--yh-text-sm)/1.6 var(--yh-font-mono, ui-monospace, monospace); overflow: hidden; user-select: none; opacity: .75; }
.pv-editor__text { flex: 1; border: 0; resize: none; background: transparent; color: var(--yh-text); font: var(--yh-text-sm)/1.6 var(--yh-font-mono, ui-monospace, monospace); padding: var(--yh-space-4); tab-size: 2; white-space: pre; overflow: auto; outline: none; }
.pv-editor__text:focus-visible { box-shadow: inset var(--yh-focus-ring); }
.pv-editor__preview { flex: 1; border-left: 1px solid var(--yh-border); display: flex; }
.pv-editor__preview .pv-frame { flex: 1; }
.pv-editor:not(.pv-editor--split) .pv-editor__preview, .pv-editor.is-code-only .pv-editor__preview { display: none; }
#pv-ed-status.is-dirty { color: var(--yh-warning-fg); }
#pv-ed-status.is-saved { color: var(--yh-success-fg); }
#pv-ed-status.is-error { color: var(--yh-text-danger); }

/* Compare */
.pv-clist { overflow: auto; padding: var(--yh-space-2); }
.pv-cfile { display: flex; align-items: center; gap: var(--yh-space-3); padding: var(--yh-space-2) var(--yh-space-3); border-radius: var(--yh-radius-sm); color: var(--yh-text); font-size: var(--yh-text-sm); word-break: break-all; }
.pv-cfile:hover { background: var(--yh-surface-hover); text-decoration: none; }
.pv-cfile.is-selected { background: var(--yh-option-selected); }
.pv-diff { overflow: hidden; }
.pv-diff__sum { padding: var(--yh-space-3) var(--yh-space-5); }
.pv-diff__lines { font: var(--yh-text-xs)/1.6 var(--yh-font-mono, ui-monospace, monospace); overflow: auto; max-height: calc(100vh - 64px - 260px); border-top: 1px solid var(--yh-border); }
.pv-diff__hunk { background: var(--yh-info-bg); color: var(--yh-info-fg); padding: var(--yh-space-1) var(--yh-space-4); }
.pv-diff__line { display: flex; white-space: pre; }
.pv-diff__ln { width: 48px; flex: none; text-align: right; padding-right: var(--yh-space-3); color: var(--yh-text-muted); background: var(--yh-surface-sunken); user-select: none; }
.pv-diff__txt { padding-left: var(--yh-space-3); flex: 1; }
.pv-diff__line--add { background: var(--yh-success-bg); }
.pv-diff__line--add .pv-diff__txt { color: var(--yh-success-fg); }
.pv-diff__line--del { background: var(--yh-danger-bg); }
.pv-diff__line--del .pv-diff__txt { color: var(--yh-danger-fg); }

/* Login / setup / consent */
body.pv-bare { min-height: 100vh; display: grid; place-items: center; padding: var(--yh-space-6); background: var(--yh-surface); }
.pv-bare__wrap { width: min(460px, 100%); display: flex; flex-direction: column; gap: var(--yh-space-5); }
.pv-bare__brand { display: flex; align-items: center; justify-content: center; gap: var(--yh-space-4); font-weight: var(--yh-weight-bold); font-size: var(--yh-text-xl); }

@media (max-width: 1100px) {
  .pv-split { grid-template-columns: 1fr; }
  .pv-files { position: static; max-height: none; }
  .pv-preview { height: 70vh; }
}
@media (max-width: 900px) {
  .pv-navtoggle { display: inline-flex; }
  .pv-editor__preview { display: none; }
  .pv-tree__act { display: inline-flex; }
  .pv-tree__size { display: none; }
}

/* Grid children must be allowed to shrink so wide tables scroll inside their card */
.yh-layout__columns > *, .pv-split > *, .yh-app__main, .yh-app__content { min-width: 0; }
.pv-compare-bar { display: flex; align-items: center; gap: var(--yh-space-3); flex-wrap: wrap; }
.pv-compare-bar .yh-select { width: auto; min-width: 140px; }
@media (max-width: 760px) {
  .yh-detail-hero > .yh-btn-group { grid-column: 1 / -1; }
  .yh-app__version { display: none; }
  .pv-user-name { display: none; }
  .yh-app__content { padding: var(--yh-space-5) var(--yh-space-4); }
}
@media (max-width: 420px) {
  .yh-app__brand > span:not(.yh-app__mark) { display: none; }
}
.pv-access { min-width: 170px; }
.pv-kv-wide dd { font-weight: var(--yh-weight-regular); }

/* Full screen (v1.1.0) */
.pv-preview:fullscreen, .pv-editor:fullscreen { height: 100vh; width: 100vw; border-radius: 0; border: 0; background: var(--yh-surface); }
.pv-preview:-webkit-full-screen, .pv-editor:-webkit-full-screen { height: 100vh; width: 100vw; }

/* Working together (v1.2.0) */
.pv-handoffs .yh-list__body { min-width: 0; }
.pv-handoff__summary { font-size: var(--yh-text-sm); margin: var(--yh-space-1) 0; white-space: pre-line; }
.pv-handoff__more summary { cursor: pointer; color: var(--yh-text-link); }
.pv-handoff__more .yh-kv { margin-top: var(--yh-space-2); }
.pv-task-add { display: flex; gap: var(--yh-space-3); align-items: center; }
.pv-task-add .yh-select { flex: 1; }
.pv-updates .yh-table td { vertical-align: middle; }
.pv-notes { min-width: 100px; max-width: 240px; }
.pv-list { padding: 0 var(--yh-space-3) var(--yh-space-2); }
.pv-vcell { min-width: 150px; }
.pv-vcell .yh-badge { margin: 2px 2px 0 0; }
