/* OLIT HOOKALIT — shared base only. Each direction styles its own scope. */
.dvx, .dvx * { box-sizing: border-box; }
.dvx { line-height: 1.5; -webkit-font-smoothing: antialiased; }
.dvx h1, .dvx h2, .dvx h3, .dvx h4, .dvx p, .dvx ul, .dvx ol, .dvx figure, .dvx dl, .dvx dd { margin: 0; padding: 0; }
.dvx ul, .dvx ol { list-style: none; }
.dvx a { color: inherit; text-decoration: none; }
.dvx button { font: inherit; cursor: pointer; background: none; border: 0; color: inherit; padding: 0; }
.dvx img { max-width: 100%; display: block; }
.dvx svg { display: block; }
.dvx .mono { font-feature-settings: "zero" 1, "ss01" 1; font-variant-numeric: tabular-nums; }

/* Shared placeholder for product imagery — striped diagonal w/ mono caption */
.oh-ph {
  position: relative;
  background-image: repeating-linear-gradient(135deg, rgba(0,0,0,0.04) 0 1px, transparent 1px 8px);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}
.oh-ph[data-tone="dark"] { background-image: repeating-linear-gradient(135deg, rgba(255,255,255,0.08) 0 1px, transparent 1px 8px); }
.oh-ph[data-tone="cream"] { background-image: repeating-linear-gradient(135deg, rgba(0,0,0,0.05) 0 1px, transparent 1px 10px); }
.oh-ph-cap {
  position: absolute; bottom: 8px; left: 10px;
  font-family: "JetBrains Mono", "IBM Plex Mono", monospace;
  font-size: 10px; letter-spacing: 0.08em; opacity: 0.5; text-transform: uppercase;
}
.oh-ph-cap[data-pos="tr"] { top: 8px; right: 10px; left: auto; bottom: auto; }
.oh-ph-cap[data-pos="bl"] { bottom: 8px; left: 10px; }

/* Olit Hookalit endorsement placeholder — small typographic credit */
.oh-vp { display: inline-flex; align-items: center; gap: 6px; font-size: 10.5px; letter-spacing: 0.1em; text-transform: uppercase; opacity: 0.7; }
.oh-vp::before { content: ""; width: 8px; height: 1px; background: currentColor; }
