/* Deal Vision App — app-level styles on top of the design system (design/dv.css v0.1.0).
   dv.css owns tokens, the shell and the components; this file adds the glue (full-height shell, self-hosted
   Inter), the My Loop record layout, Settings and the sign-in page. Nothing here redefines a token. */

/* ---------- Font: Inter (SIL Open Font License), self-hosted (design README open item) ---------- */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;
  src: url("../design/fonts/inter-latin-wght-normal.260c81a4759b.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ---------- Glue ---------- */
html, body { height: 100%; }
body { overscroll-behavior-y: none; }
.dv-app { height: 100%; }
#shell { display: contents; }
.dv-skip { position: absolute; left: -999px; top: 8px; z-index: 100; padding: 8px 12px; border-radius: var(--dv-r-md); background: var(--dv-text); color: var(--dv-bg); }
.dv-skip:focus { left: 8px; }
.no-js .js-only, .js .js-hide { display: none !important; }
.dv-mark-img { width: 28px; height: 28px; border-radius: 7px; display: block; }
.dv-env { max-width: 160px; overflow: hidden; text-overflow: ellipsis; }
@container dvapp (max-width: 599px) { .dv-appbar .dv-env { display: none; } }
.dv-appbar .dv-avatar, .dv-appbar__brand { text-decoration: none; color: inherit; }
.dv-backlink .dv-ico { transform: scaleX(-1); }
.dv-navitem, .dv-tab { text-decoration: none; }
.dv-tabbar { grid-template-columns: repeat(auto-fit, minmax(56px, 1fr)); }
.dv-badge.is-zero { display: none; }
.dv-seg__link { display: inline-flex; align-items: center; justify-content: center; gap: 6px; flex: 1; min-height: 38px; padding: 0 14px; border-radius: 8px; color: var(--dv-text-2); font: 650 var(--dv-fs-sm)/1 var(--dv-font); text-decoration: none; }
.dv-seg__link[aria-pressed="true"] { background: var(--dv-surface); color: var(--dv-text); box-shadow: var(--dv-shadow-1); }
.dv-row__body { min-width: 0; }
.dv-row__cover { position: absolute; inset: 0; z-index: 1; }
.dv-row--module { grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; min-height: 56px; }
.dv-row--module[aria-disabled="true"] { color: var(--dv-text-2); }
.dv-row--ungraded { grid-template-columns: auto minmax(0, 1fr); }
.dv-row--ungraded .grade-buttons { margin-top: 10px; }
.dv-row__title.row-link { color: inherit; text-decoration: none; }
.dv-row__title.row-link:hover { text-decoration: underline; }
.dv-row[aria-selected="true"] .dv-row__title, .dv-row[aria-selected="true"] .dv-faint { color: inherit; }
.dv-fchip--radio { position: relative; }
.dv-fchip--radio input { position: absolute; opacity: 0; pointer-events: none; }
.dv-fchip--radio:has(input:checked) { background: var(--dv-selected); border-color: var(--dv-selected); color: var(--dv-on-selected); }
.dv-fchip--radio:has(input:focus-visible) { outline: 2px solid var(--dv-focus); outline-offset: 2px; }
.dv-outcomes--3 { grid-template-columns: 1fr 1fr 1fr; }
.dv-outcomes a.dv-outcome { text-decoration: none; }
.grade-mix { display: flex; flex-wrap: wrap; gap: var(--dv-s3) var(--dv-s5); margin: var(--dv-s4) 0 0; }
.grade-mix > div { display: flex; align-items: center; gap: var(--dv-s2); }
.grade-mix dt, .grade-mix dd { margin: 0; }
.grade-mix dd { font-variant-numeric: tabular-nums; font-weight: 650; }
.lede { margin-bottom: var(--dv-s3); }
.pager { display: flex; align-items: center; justify-content: space-between; gap: var(--dv-s3); padding-top: var(--dv-s3); }
.search { margin-bottom: var(--dv-s3); }
.dv-table { width: 100%; border-collapse: collapse; font-size: var(--dv-fs-sm); }
.dv-table th, .dv-table td { padding: 8px 6px; border-bottom: 1px solid var(--dv-line); text-align: left; }
.dv-table thead th { color: var(--dv-text-2); font: 700 var(--dv-fs-xs)/1.2 var(--dv-font); letter-spacing: 0.06em; text-transform: uppercase; }
.dv-check { display: inline-grid; place-items: center; min-width: var(--dv-touch-min); min-height: var(--dv-touch-min); cursor: pointer; }
.dv-check input { width: 20px; height: 20px; accent-color: var(--dv-primary); }
.dv-flaggrid { margin-top: var(--dv-s3); overflow-x: auto; }

/* ---------- My Loop: list in the content column, the open contact in the record panel ---------- */
.list-pane .dv-list > li:first-child .dv-row { border-top: 1px solid var(--dv-line); }
.dv-backlink { display: inline-flex; margin: var(--dv-s3) var(--dv-s3) 0; }
/* Under the laptop width the panel replaces the list when a contact is chosen (the Back link brings the list back). */
@container dvapp (max-width: 1023px) {
  #shell.has-selection .dv-main { display: none; }
  #shell.has-selection .dv-panel { display: block; flex: 1; min-height: 0; overflow-y: auto; background: var(--dv-surface); }
}
@container dvapp (min-width: 600px) and (max-width: 1023px) {
  #shell.has-selection .dv-panel { grid-area: main; }
}
@container dvapp (min-width: 1024px) {
  .dv-backlink { display: none; }
}
.dv-record .block { display: grid; gap: var(--dv-s2); }
.dv-record .dv-card + .dv-card { margin-top: var(--dv-s2); }
.dv-record .dv-kv > :last-child { white-space: normal; text-align: right; font-weight: 500; overflow-wrap: anywhere; }
.dv-record .dv-kv > .kv-wrap { line-height: 1.4; }
.cadence-line { font-size: var(--dv-fs-sm); }
.cadence-line.is-overdue strong { color: var(--dv-warn); }
.cadence-basis { display: block; margin-top: 2px; }
.dv-reach { display: flex; align-items: center; flex-wrap: wrap; gap: var(--dv-s2); }
.reach .is-preferred { border-color: var(--dv-primary-edge); color: var(--dv-primary-text); }
.quick-log .dv-outcomes { grid-template-columns: 1fr 1fr; }
.undo-inline { display: flex; align-items: center; gap: var(--dv-s2); }
.tasks { display: grid; gap: var(--dv-s2); }
.task { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--dv-s2); align-items: center; }
.task .check { width: 28px; height: 28px; border: 2px solid var(--dv-line-strong); border-radius: 50%; background: none; cursor: pointer; }
.task .check:hover { border-color: var(--dv-ok); background: var(--dv-ok-soft); }
.task-subject { overflow-wrap: anywhere; }
.task-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--dv-s2); align-items: center; }
.task-form input[type="text"], .task-form input:not([type]) { grid-column: 1 / -1; }
.task-form input, .log-form input, .log-form textarea { width: 100%; min-height: var(--dv-touch-min); padding: 0 14px; border: 1px solid var(--dv-line-strong); border-radius: var(--dv-r-md); background: var(--dv-surface); color: var(--dv-text); font-size: var(--dv-fs-md); }
.log-form textarea { min-height: 72px; padding: 10px 14px; }
.task-form .dv-btn { grid-column: 1 / -1; }
.log-block > summary { list-style: none; }
.log-block > summary::-webkit-details-marker { display: none; }
.log-form { display: grid; gap: var(--dv-s3); margin-top: var(--dv-s3); }
.kinds { display: flex; flex-wrap: wrap; gap: var(--dv-s2); margin: 0; padding: 0; border: 0; }
.kinds legend { padding: 0; margin-bottom: 6px; }
.kinds .kind input { accent-color: var(--dv-primary); }
.form-error { color: var(--dv-bad); }
.description p { white-space: pre-line; }

/* The server toast inside the loop shell (works without JavaScript); the JS toast layer handles the rest. */
.loop-toast { display: none; }
.loop-toast.is-visible { display: grid; }
.loop-toast form { display: contents; }

/* ---------- Sign-in and other signed-out pages ---------- */
.dv-entrance { height: 100%; overflow-y: auto; display: grid; place-items: center; padding: var(--dv-s6) var(--dv-s4); }
.dv-signin { width: min(420px, 100%); display: grid; gap: var(--dv-s4); justify-items: center; text-align: center; }
.dv-signin__mark { width: 72px; height: 72px; border-radius: 18px; }
.dv-signin__title { font-size: var(--dv-fs-xl); }
.dv-signin__google, .dv-signin__local, .dv-signin__form { width: 100%; display: grid; gap: var(--dv-s3); }
.dv-signin__local > summary { list-style: none; justify-self: center; }
.dv-signin__local > summary::-webkit-details-marker { display: none; }
.dv-signin__form { text-align: left; }
.dv-signin .dv-banner { width: 100%; text-align: left; }

/* ---------- Settings ---------- */
.dv-seg form, form .dv-seg { width: 100%; }

/* ---------- Secrets inventory (names only; admin) ---------- */
.dv-table--secrets code { font-size: var(--dv-fs-xs); word-break: break-all; }
.dv-table--secrets td, .dv-table--secrets th { vertical-align: top; }
@container dvapp (max-width: 599px) {
  .dv-table--secrets thead { display: none; }
  .dv-table--secrets tr { display: grid; grid-template-columns: 1fr auto; gap: 2px 8px; padding: 8px 0; border-bottom: 1px solid var(--dv-line); }
  .dv-table--secrets th, .dv-table--secrets td { display: block; padding: 0; border: 0; }
  .dv-table--secrets th[scope="row"] { grid-column: 1 / -1; }
  .dv-table--secrets td:nth-child(5) { grid-column: 2; grid-row: 2 / span 3; text-align: right; }
  .dv-table--secrets td[data-label]::before { content: attr(data-label) ": "; color: var(--dv-text-3); }
}


/* ---------- Deals board and record (1.1.4 v1) ---------- */
.deal-group { margin: var(--dv-s3) 0 4px; }
.dv-row--deal .dv-row__end { align-self: center; }
.dv-list--plain { list-style: none; margin: 0; padding: 0; }
.dv-row--compact { padding: 8px 0; border-bottom: 1px solid var(--dv-line); display: flex; align-items: center; gap: var(--dv-s2); }
.dv-row--compact .dv-row__body { flex: 1; min-width: 0; }
.next-step-form { display: grid; gap: 8px; padding: 12px; }
.next-step-row { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.next-step-row .dv-input { flex: 1; min-width: 150px; }
.dv-timeline { list-style: none; margin: 0; padding: 0 0 0 12px; border-left: 2px solid var(--dv-line); display: grid; gap: 12px; }
.dv-timeline__item { display: grid; gap: 2px; }
.dv-timeline__item p { margin: 0; }
.channels .dv-fchip { cursor: pointer; }
.stage-form .dv-select { max-width: 320px; }

/* ---------- Records: Contacts / Companies / Assets lists, the duplicates review, the system-of-record banner (1.1.4 v2) ---------- */
.sor-banner { margin: var(--dv-s3) var(--dv-s3) 0; }
.dv-record__head:not(.person-head) { display: grid; gap: 2px; }
.dv-record .dv-kv > .dv-num { white-space: nowrap; overflow-wrap: normal; }
.dv-record .dv-kv > :first-child { min-width: 0; }
.book-export { margin-left: auto; }
.book-filters { display: grid; gap: var(--dv-s2); }
.book-more > summary { list-style: none; justify-self: start; cursor: pointer; }
.book-more > summary::-webkit-details-marker { display: none; }
.book-filter-grid { display: grid; gap: var(--dv-s3); margin-top: var(--dv-s2); }
.book-filter-grid .dv-field { display: grid; gap: 4px; }
.book-loop { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; justify-self: start; }
.book-loop input { accent-color: var(--dv-primary); }
.book-views { display: flex; flex-wrap: wrap; gap: var(--dv-s2); padding-top: 0; }
.book-view { display: inline-flex; align-items: center; gap: 2px; }
.book-view form { display: contents; }
.book-save { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--dv-s2); align-items: center; padding-top: 0; }
.dv-row--book .dv-row__end { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; align-self: center; }
.dup-list { display: grid; gap: var(--dv-s4); padding: 0 var(--dv-s4) var(--dv-s4); }
.dup-sides { display: grid; gap: var(--dv-s2); margin: var(--dv-s2) 0; }
.dup-side { display: grid; gap: 4px; }
.dup-side form { margin-top: var(--dv-s2); }
.dup-dismiss { display: flex; justify-content: flex-end; }
.related-deals + .related-assets { margin-top: var(--dv-s2); }
.dv-eyebrow { margin: 0 0 2px; }
@container dvmain (min-width: 600px) {
  .book-filter-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; align-items: end; }
  .dup-sides { grid-template-columns: 1fr 1fr; }
}

/* ---------- Deal sharing (1.1.5) ---------- */
.sharing-banner { margin: 0 0 var(--dv-s2); }
.share-row form { display: inline; }
.share-form { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--dv-s2); margin-top: var(--dv-s3); align-items: center; }
.share-form .dv-select:first-of-type { grid-column: 1 / -1; }
@container dvmain (min-width: 600px) { .share-form { grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) minmax(0, 1fr) auto; } .share-form .dv-select:first-of-type { grid-column: auto; } }

/* ---------- Cash Flow Outlook: import, preflight review, versions (1.3.3) ---------- */
.cfo-import { padding-top: 0; }
.cfo-import__form, .cfo-start__form { display: grid; gap: var(--dv-s3); }
.cfo-import__more > summary { list-style: none; justify-self: start; cursor: pointer; }
.cfo-import__more > summary::-webkit-details-marker { display: none; }
.cfo-import__grid { display: grid; gap: var(--dv-s3); margin-top: var(--dv-s2); }
.cfo-file { padding-top: 10px; padding-bottom: 10px; height: auto; min-height: var(--dv-touch-min); }
.cfo-bad { color: var(--dv-bad); }
.cfo-warn { color: var(--dv-warn); }
.cfo-ready__note { margin: var(--dv-s2) 0 0; }
.cfo-findings__list { display: grid; gap: var(--dv-s2); margin: 0; padding: 0; list-style: none; }
.cfo-finding { display: grid; gap: 6px; padding: var(--dv-s3); }
.cfo-findings--blocker .cfo-finding { border-left: 3px solid var(--dv-bad); }
.cfo-findings--confirm .cfo-finding { border-left: 3px solid var(--dv-warn); }
.cfo-findings--confirm .cfo-finding.is-confirmed { border-left-color: var(--dv-ok); }
.cfo-finding__top { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.cfo-rule { font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
.cfo-finding__where { color: var(--dv-text-2); font-size: var(--dv-fs-xs); overflow-wrap: anywhere; }
.cfo-finding__msg { margin: 0; font-size: var(--dv-fs-sm); line-height: 1.45; overflow-wrap: anywhere; }
.cfo-finding.is-confirmed .cfo-finding__msg { color: var(--dv-text-2); }
.cfo-finding__act { display: flex; align-items: center; gap: var(--dv-s2); }
.cfo-rr > summary { cursor: pointer; }
.cfo-rr__list { display: grid; gap: var(--dv-s2); margin: var(--dv-s3) 0 0; padding: 0; list-style: none; }
.cfo-rr__row + .cfo-rr__row { border-top: 1px solid var(--dv-line); padding-top: var(--dv-s2); }
.cfo-rr__name { margin: 0; font-weight: 600; overflow-wrap: anywhere; }
.cfo-rr__row .dv-help { margin: 2px 0 0; }
.cfo-versions { margin: var(--dv-s2) 0 0; padding-left: 1.2em; display: grid; gap: 4px; font-size: var(--dv-fs-sm); }
.cfo-version-form { display: grid; gap: var(--dv-s3); }
.cfo-sha { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-weight: 500; }
@container dvmain (min-width: 600px) { .cfo-import__grid { grid-template-columns: 1fr 1fr; } }
/* check sheet and editor (1.3.4) */
.cfo-actions { display: flex; flex-wrap: wrap; gap: var(--dv-s2); }
.cfo-progress { height: 6px; border-radius: 3px; background: var(--dv-surface-2); overflow: hidden; }
.cfo-progress > span { display: block; height: 100%; background: var(--dv-ok); }
.cfo-legend > summary, .cfo-sec > summary, .cfo-crow summary { cursor: pointer; list-style: none; }
.cfo-legend > summary::-webkit-details-marker, .cfo-sec > summary::-webkit-details-marker, .cfo-crow summary::-webkit-details-marker { display: none; }
.cfo-legend__list { display: grid; gap: 6px; margin: var(--dv-s3) 0 var(--dv-s2); }
.cfo-legend__list > div { display: grid; grid-template-columns: 9.5em minmax(0, 1fr); gap: var(--dv-s2); align-items: start; }
.cfo-legend__list dd { margin: 0; font-size: var(--dv-fs-sm); }
.cfo-basis { font-variant-numeric: tabular-nums; letter-spacing: 0.02em; }
.cfo-sec { border-top: 1px solid var(--dv-line); padding-top: var(--dv-s3); display: grid; gap: var(--dv-s2); }
.cfo-sec__head { display: flex; align-items: center; justify-content: space-between; gap: var(--dv-s2); min-height: var(--dv-touch-min); }
.cfo-sec__title { font-weight: 650; overflow-wrap: anywhere; }
.cfo-tagform { display: grid; gap: var(--dv-s3); }
.cfo-basis-fields { display: grid; gap: var(--dv-s2); }
.cfo-tagform__btns { display: flex; flex-wrap: wrap; gap: var(--dv-s2); }
.cfo-rows { margin: 0; padding: 0; list-style: none; display: grid; }
.cfo-crow { border-bottom: 1px solid var(--dv-line); }
.cfo-crow__head { display: flex; align-items: center; justify-content: space-between; gap: var(--dv-s2); min-height: var(--dv-touch-min); padding: 4px 0; }
.cfo-crow__label { min-width: 0; overflow-wrap: anywhere; font-size: var(--dv-fs-sm); }
.cfo-crow.is-done .cfo-crow__label { color: var(--dv-text-2); }
.cfo-crow details[open] { padding-bottom: var(--dv-s3); }
.cfo-vals { margin: 0 0 var(--dv-s3); padding: 0; list-style: none; display: grid; gap: 4px; font-size: var(--dv-fs-sm); }
.cfo-vals li { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.cfo-vals__name { color: var(--dv-text-2); }
.cfo-vals__val { font-weight: 600; overflow-wrap: anywhere; }
.cfo-vals__src { font-size: var(--dv-fs-xs); }
.cfo-editform { display: grid; gap: var(--dv-s3); }
.cfo-fields { display: grid; gap: var(--dv-s3); }
.cfo-field.is-changed .dv-input, .cfo-field.is-changed .dv-select { border-color: var(--dv-primary-edge); }
.cfo-field.has-finding .dv-input, .cfo-field.has-finding .dv-select { border-color: var(--dv-warn); }
.cfo-field__finding { display: block; font-size: var(--dv-fs-xs); line-height: 1.4; color: var(--dv-warn); overflow-wrap: anywhere; }
.cfo-field__finding--blocker { color: var(--dv-bad); }
.cfo-field__finding--info { color: var(--dv-text-2); }
.cfo-changes ul { margin: var(--dv-s2) 0; padding-left: 1.1em; display: grid; gap: 4px; font-size: var(--dv-fs-sm); overflow-wrap: anywhere; }
.cfo-check-result { margin: 0; font-size: var(--dv-fs-sm); }
.cfo-savebar { display: grid; gap: var(--dv-s3); }
@container dvmain (min-width: 600px) { .cfo-basis-fields { grid-template-columns: 12em minmax(0, 1fr); } .cfo-fields { grid-template-columns: 1fr 1fr; } }
.cfo-table { display: grid; gap: var(--dv-s2); }
.cfo-table__title { margin-top: var(--dv-s3); font-size: var(--dv-fs-sm); }
.cfo-sec--new .cfo-sec__title { color: var(--dv-link); }
/* CFO 1.3.4: template start, standing assumptions */
.cfo-start { padding-bottom: 0; }
.cfo-links { margin: var(--dv-s2) 0 0; font-size: var(--dv-fs-sm); }
.cfo-offers { display: grid; gap: var(--dv-s2); margin-bottom: var(--dv-s3); }
.cfo-offers__list { display: grid; gap: 2px; margin: 0 0 var(--dv-s2); }
.cfo-offer { display: grid; grid-template-columns: var(--dv-touch-min) 1fr; align-items: center; min-height: var(--dv-touch-min); border-bottom: 1px solid var(--dv-line); }
.cfo-offer label { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; cursor: pointer; padding: 6px 0; }
.cfo-offer__box { width: 20px; height: 20px; justify-self: center; accent-color: var(--dv-primary); text-align: center; }
.cfo-offer--done { color: var(--dv-text-2); }
.cfo-idle { margin: var(--dv-s2) 0 0; }
.cfo-page .dv-pad + .dv-pad { padding-top: 0; }
.cfo-saform { display: grid; gap: var(--dv-s3); }
.cfo-salist__row { display: flex; justify-content: space-between; gap: var(--dv-s2); align-items: center; padding: 8px 0; border-bottom: 1px solid var(--dv-line); }
.cfo-salist__row p { margin: 2px 0 0; }
.cfo-salist__row.is-overridden { opacity: 0.6; }
.cfo-checkline { display: flex; gap: 8px; align-items: center; min-height: var(--dv-touch-min); }
