/* OLIT HOOKALIT — shared base only. Body root scope is `.oh`. */
.oh, .oh * { box-sizing: border-box; }
.oh { line-height: 1.6; -webkit-font-smoothing: antialiased; }
.oh h1, .oh h2, .oh h3, .oh h4, .oh p, .oh ul, .oh ol, .oh figure, .oh dl, .oh dd { margin: 0; padding: 0; }
.oh ul, .oh ol { list-style: none; }
.oh a { color: inherit; text-decoration: none; }
/* visible woven internal anchors — specificity (0,2,1) beats the reset above */
.oh a.oh-ilink { color: #8B2252; }
.oh a.oh-ilink:hover { color: #C4547A; }
.oh button { font: inherit; cursor: pointer; background: none; border: 0; color: inherit; padding: 0; }
.oh img { max-width: 100%; display: block; }
.oh svg { display: block; }
.oh .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: "IBM Plex Mono", "Source Code Pro", 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; }
