/* Document Viewer
   Scoped to .dvWrap; layout overrides are injected per-page via <style> in <head>.
   Design tokens are CSS custom properties on .dvWrap.
*/

.dvWrap {
  --dv-bg:     #F4F1EA;
  --dv-sur:    #FFFFFF;
  --dv-ink:    #1A1612;
  --dv-ink2:   #4A463E;
  --dv-mut:    #7A7568;
  --dv-line:   #E2DCCF;
  --dv-soft:   #EEE9DD;
  --dv-acc:    #B0263A;
  --dv-accS:   #FBEDEF;
  --dv-pill:   #F0EBDF;
  --dv-dark:   #2A251E;
  --dv-darkA:  #1F1B16;
  --dv-darkL:  #3A332A;
  --dv-darkT:  #D8D2C4;

  background: var(--dv-bg);
  color: var(--dv-ink);
  font-family: 'Inter', system-ui, sans-serif;
  font-size: 14px;
}

/* ---- Breadcrumb ---- */

.dvCrumbs {
  padding: 14px 28px 10px;
  border-bottom: 1px solid var(--dv-soft);
  background: var(--dv-bg);
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--dv-mut);
  flex-wrap: wrap;
}
.dvCrumbs a { color: var(--dv-mut); text-decoration: none; }
.dvCrumbs a:hover { text-decoration: underline; }
.dvCrumbCur { color: var(--dv-ink); font-weight: 500; }

/* ---- Document header ---- */

.dvHdr {
  padding: 20px 28px 16px;
  background: var(--dv-bg);
  border-bottom: 1px solid var(--dv-soft);
  display: flex;
  align-items: flex-start;
  gap: 16px;
}

.dvHdrBadge {
  width: 56px;
  height: 56px;
  flex-shrink: 0;
  border: 2px solid var(--dv-acc);
  color: var(--dv-acc);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: rgba(176,38,58,0.04);
}
.dvHdrBadgeLabel {
  font-size: 9px;
  font-family: 'Courier New', monospace;
  letter-spacing: 0.1em;
  font-weight: 700;
  text-transform: uppercase;
}
.dvHdrBadgeNum {
  font-size: 18px;
  font-weight: 700;
  line-height: 1;
}

.dvHdrMeta { flex: 1; min-width: 0; }
.dvHdrEyebrow {
  font-family: 'Courier New', monospace;
  font-size: 11px;
  color: var(--dv-mut);
  letter-spacing: 0.04em;
  margin: 0 0 4px;
}
.dvHdrTitle {
  margin: 0;
  font-size: 22px;
  font-weight: 600;
  color: var(--dv-ink);
  letter-spacing: -0.01em;
  line-height: 1.2;
}

.dvHdrActions { display: flex; gap: 8px; flex-shrink: 0; align-items: flex-start; }

/* ---- Buttons ---- */

.dvBtn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 8px 12px;
  font-size: 12.5px;
  font-weight: 500;
  border-radius: 5px;
  cursor: pointer;
  border: 1px solid var(--dv-line);
  background: var(--dv-sur);
  color: var(--dv-ink2);
  font-family: inherit;
  transition: background 120ms;
  text-decoration: none;
  line-height: 1;
  white-space: nowrap;
}
.dvBtn:hover { background: var(--dv-bg); color: var(--dv-ink); text-decoration: none; }
.dvBtn-primary { background: var(--dv-acc); color: #fff; border-color: var(--dv-acc); }
.dvBtn-primary:hover { background: #92192E; color: #fff; }
.dvBtn-ghost { background: transparent; border-style: dashed; }
.dvBtn-ghost:hover { background: var(--dv-bg); }

/* ---- Prev/next strip ---- */

.dvNav {
  display: flex;
  align-items: stretch;
  border-top: 1px solid var(--dv-soft);
  border-bottom: 1px solid var(--dv-line);
  background: var(--dv-bg);
  font-size: 12px;
}

.dvNavBtn {
  flex: 1;
  padding: 10px 28px;
  display: flex;
  align-items: center;
  gap: 10px;
  color: var(--dv-mut);
  background: transparent;
  border: none;
  text-decoration: none;
  font-family: inherit;
  font-size: 12px;
  transition: background 80ms;
}
.dvNavBtn:hover { background: var(--dv-soft); color: var(--dv-ink2); text-decoration: none; }
.dvNavBtn-next { justify-content: flex-end; text-align: right; }
.dvNavBtn.dvDisabled { opacity: 0.4; pointer-events: none; }
.dvNavBtnLabel { font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--dv-mut); display: block; }
.dvNavBtnDesc  { color: var(--dv-ink2); font-weight: 500; display: block; }

.dvNavCenter {
  padding: 10px 20px;
  display: flex;
  align-items: center;
  gap: 5px;
  border-left: 1px solid var(--dv-soft);
  border-right: 1px solid var(--dv-soft);
  font-family: 'Courier New', monospace;
  font-size: 12px;
  color: var(--dv-mut);
  white-space: nowrap;
}
.dvNavCurPos { color: var(--dv-ink); }

/* ---- Two-column body ---- */

.dvBody {
  display: flex;
  align-items: flex-start;
  background: var(--dv-bg);
}

.dvCenter {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}

/* ---- Tab bar ---- */

.dvTabBar {
  display: flex;
  align-items: center;
  padding: 0 28px;
  background: var(--dv-bg);
  border-bottom: 1px solid var(--dv-line);
  flex-shrink: 0;
}

.dvTabBtn {
  padding: 12px 16px;
  font-size: 13px;
  font-weight: 500;
  color: var(--dv-mut);
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  cursor: pointer;
  background: transparent;
  font-family: inherit;
  transition: color 80ms;
}
.dvTabBtn:hover { color: var(--dv-ink); }
.dvTabBtn.dvTabActive { font-weight: 600; color: var(--dv-ink); border-bottom-color: var(--dv-acc); }

.dvTabSpacer { flex: 1; }

/* ---- Find bar ---- */

#dvFindBar {
  display: none;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: var(--dv-darkA);
  color: var(--dv-darkT);
  border-bottom: 1px solid var(--dv-darkL);
  flex-shrink: 0;
}
#dvFindBar.dvOpen { display: flex; }

#dvFindInput {
  flex: 1;
  background: transparent;
  border: none;
  color: var(--dv-darkT);
  font-size: 13px;
  padding: 4px 0;
  outline: none;
  font-family: inherit;
}
#dvFindInput::placeholder { color: #7A7363; }

#dvFindCount {
  font-family: 'Courier New', monospace;
  font-size: 11px;
  color: #7A7363;
  min-width: 70px;
  text-align: right;
}

.dvFindClose {
  background: transparent;
  border: none;
  color: #9E978A;
  cursor: pointer;
  font-size: 18px;
  padding: 0 2px;
  line-height: 1;
}

/* ---- Viewer panels ---- */

.dvPanel { display: none; }
.dvPanel.dvPanelActive { display: block; }

#dvPanelSource {
  background: var(--dv-dark);
  display: none;
}
#dvPanelSource.dvPanelActive { display: block; }
#dvPanelSource iframe { display: block; border: none; width: 100%; }

#dvPanelFormatted {
  background: var(--dv-darkA);
  padding: 32px 24px 48px;
}

.dvFormPage {
  background: #FAF5E8;
  color: var(--dv-ink);
  padding: 40px;
  max-width: 760px;
  margin: 0 auto 24px;
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 15px;
  line-height: 1.6;
  white-space: pre-wrap;
  box-shadow: 0 12px 32px -8px rgba(0,0,0,0.5);
}
.dvFormPageHdr {
  font-family: 'Courier New', monospace;
  font-size: 11px;
  color: var(--dv-mut);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin: 0 0 16px;
  border-bottom: 1px solid var(--dv-line);
  padding-bottom: 8px;
}

#dvPanelRaw {
  background: var(--dv-darkA);
  padding: 24px 24px 48px;
}

.dvRawPage {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 16px;
  padding: 20px 0;
  border-bottom: 1px solid #2C2620;
  max-width: 900px;
  margin: 0 auto;
}
.dvRawPageNum {
  text-align: center;
  color: #9E978A;
  font-size: 10px;
  font-family: 'Courier New', monospace;
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.dvRawPageNum b {
  display: block;
  font-size: 22px;
  color: var(--dv-darkT);
  font-family: Georgia, serif;
  font-weight: 600;
  font-style: normal;
}
.dvRawPageText {
  font-family: 'Courier New', monospace;
  font-size: 12.5px;
  color: var(--dv-darkT);
  line-height: 1.55;
  white-space: pre-wrap;
  word-break: break-word;
}

mark.dvMark { background: #F3D74E; color: var(--dv-ink); border-radius: 2px; }

/* ---- Sidebar ---- */

.dvSidebar {
  width: 380px;
  flex-shrink: 0;
  background: var(--dv-sur);
  border-left: 1px solid var(--dv-line);
  position: sticky;
  top: 96px;
  max-height: calc(100vh - 96px);
  overflow-y: auto;
}

/* ---- Sidebar collapsible sections ---- */

.dvSec {
  border-bottom: 1px solid var(--dv-soft);
}
.dvSec:last-child { border-bottom: none; }

.dvSec > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  gap: 8px;
}
.dvSec > summary::-webkit-details-marker { display: none; }
.dvSec > summary::marker { display: none; }

.dvSecTitle {
  font-family: 'Courier New', monospace;
  font-size: 11px;
  color: var(--dv-mut);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 600;
}
.dvSecAction {
  font-size: 11px;
  color: var(--dv-acc);
  background: none;
  border: none;
  cursor: pointer;
  font-family: inherit;
  padding: 2px 4px;
  flex-shrink: 0;
}
.dvSecBadge {
  font-family: 'Courier New', monospace;
  font-size: 10.5px;
  color: var(--dv-mut);
}

.dvSecBody { padding: 0 18px 14px; }

/* ---- Flag banner ---- */

.dvFlagBanner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 18px;
  border-bottom: 1px solid var(--dv-soft);
  border-left-width: 3px;
  border-left-style: solid;
}
.dvFlagBanner-red    { background: rgba(176,38,58,0.06);   border-left-color: #B0263A; }
.dvFlagBanner-orange { background: rgba(217,119,6,0.06);   border-left-color: #D97706; }
.dvFlagBanner-yellow { background: rgba(202,138,4,0.06);   border-left-color: #CA8A04; }
.dvFlagBanner-green  { background: rgba(21,128,61,0.06);   border-left-color: #15803D; }
.dvFlagBanner-blue   { background: rgba(29,78,216,0.06);   border-left-color: #1D4ED8; }
.dvFlagBanner-indigo { background: rgba(67,56,202,0.06);   border-left-color: #4338CA; }
.dvFlagBanner-violet { background: rgba(124,58,237,0.06);  border-left-color: #7C3AED; }

.dvFlagText { flex: 1; font-family: Georgia, serif; font-size: 12.5px; color: var(--dv-ink); }
.dvFlagEditBtn {
  background: none; border: none; cursor: pointer;
  color: var(--dv-mut); padding: 2px; line-height: 1;
  font-size: 14px;
}

/* ---- Flag editor ---- */

#dvFlagEditor {
  display: none;
  padding: 14px 18px;
  background: #FBF8F1;
  border-bottom: 1px solid var(--dv-soft);
}
#dvFlagEditor.dvOpen { display: block; }

.dvFlagEdHdr {
  font-family: 'Courier New', monospace;
  font-size: 11px;
  color: var(--dv-mut);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin: 0 0 10px;
}

.dvFlagColors { display: flex; gap: 6px; margin-bottom: 10px; }
.dvFlagColorBtn {
  width: 24px; height: 24px; border-radius: 4px; cursor: pointer;
  border: 2px solid transparent; padding: 0; flex-shrink: 0;
}
.dvFlagColorBtn.dvSelected { border-color: var(--dv-ink); outline: 2px solid rgba(0,0,0,0.15); outline-offset: 1px; }

#dvFlagEditor textarea {
  width: 100%; box-sizing: border-box;
  padding: 8px 10px; font-size: 12.5px;
  border: 1px solid var(--dv-line); border-radius: 4px;
  background: var(--dv-sur); color: var(--dv-ink);
  resize: vertical; font-family: inherit;
}
.dvFlagEdActions { display: flex; gap: 6px; justify-content: flex-end; margin-top: 10px; align-items: center; }

/* ---- Sidebar field rows ---- */

.dvField {
  display: grid;
  grid-template-columns: 92px 1fr;
  gap: 8px;
  padding: 7px 0;
  font-size: 12.5px;
  align-items: baseline;
  border-bottom: 1px solid var(--dv-soft);
}
.dvField:last-of-type { border-bottom: none; }
.dvFieldLbl {
  color: var(--dv-mut); font-size: 11px;
  text-transform: uppercase; letter-spacing: 0.04em;
}
.dvFieldVal { color: var(--dv-ink); font-weight: 500; }
.dvFieldVal a { color: var(--dv-acc); text-decoration: none; }
.dvFieldVal a:hover { text-decoration: underline; }
.dvFieldVal input[type="text"], .dvFieldVal input[type="date"] {
  width: 100%; box-sizing: border-box;
  padding: 4px 6px; font-size: 12.5px;
  border: 1px solid var(--dv-line); border-radius: 3px;
  background: var(--dv-sur); color: var(--dv-ink);
  font-family: inherit;
}

.dvEditActions { display: flex; gap: 6px; justify-content: flex-end; padding-top: 8px; }

/* ---- Summary ---- */

.dvSummary {
  font-family: Georgia, 'Times New Roman', serif;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--dv-ink2);
  margin: 0;
}

/* ---- Entities list ---- */

.dvEntityList { list-style: none; padding: 0; margin: 0; }
.dvEntityItem {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 0;
  border-bottom: 1px solid var(--dv-soft);
  font-size: 13px;
}
.dvEntityItem:last-child { border-bottom: none; }
.dvEntityItem a { color: var(--dv-ink); text-decoration: none; }
.dvEntityItem a:hover { color: var(--dv-acc); }

/* ---- News ---- */

.dvNewsItem {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 6px 0;
  border-bottom: 1px solid var(--dv-soft);
  font-size: 12.5px;
}
.dvNewsItem:last-child { border-bottom: none; }
.dvNewsLogo { width: 48px; flex-shrink: 0; }
.dvNewsTitle a { color: var(--dv-ink); text-decoration: none; font-family: Georgia, serif; line-height: 1.35; display: block; }
.dvNewsTitle a:hover { color: var(--dv-acc); }
.dvNewsMeta { font-size: 11px; color: var(--dv-mut); margin-top: 2px; }

/* ---- Comments wrapper ---- */

.dvComments table { width: 100%; border-collapse: collapse; }

/* ---- Stats ---- */

.dvStats { display: flex; gap: 24px; padding-top: 4px; }
.dvStatNum { font-family: Georgia, serif; font-size: 22px; color: var(--dv-ink); font-weight: 600; line-height: 1; }
.dvStatLbl { font-size: 11px; color: var(--dv-mut); margin-top: 2px; }

/* ---- Toast ---- */

#dvToast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%) translateY(10px);
  background: var(--dv-ink);
  color: #FAF5E8;
  padding: 10px 18px;
  border-radius: 6px;
  font-size: 13px;
  font-family: 'Inter', system-ui, sans-serif;
  box-shadow: 0 12px 32px -8px rgba(0,0,0,0.4);
  z-index: 9999;
  opacity: 0;
  transition: opacity 200ms, transform 200ms;
  pointer-events: none;
  white-space: nowrap;
}
#dvToast.dvToastShow { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ---- Responsive ---- */

@media (max-width: 900px) {
  .dvBody { flex-direction: column; }
  .dvSidebar { width: 100%; position: static; max-height: none; border-left: none; border-top: 1px solid var(--dv-line); }
  .dvHdrActions { flex-wrap: wrap; }
}
