/* ═══════════════════════════════════════════════════════════════════════════
   Log of Borehole — print styles.
   Loaded alongside report-print.css; every selector is prefixed .bh- or scoped
   inside .bh-log so nothing here can reach the concrete or geotech sheets.
   ═══════════════════════════════════════════════════════════════════════════ */

.bh-page { font-family: Manrope, Inter, sans-serif; display: flex; flex-direction: column; }

/* ── header ─────────────────────────────────────────────────────────────── */
.bh-hd { display: flex; justify-content: space-between; align-items: flex-start; }
.bh-ttl { font: 300 21px Manrope, sans-serif; letter-spacing: -.015em; }
.bh-ttl b { font-weight: 800; }
.bh-tagrow { display: flex; gap: 10px; align-items: center; margin-top: 7px; }
.bh-issue { font: 800 6.8px Manrope, sans-serif; letter-spacing: .2em; color: #1E7F4F;
            border: 1px solid #1E7F4F; border-radius: 3px; padding: 2.5px 8px; }
.bh-jn { font: 500 9px 'IBM Plex Mono', monospace; color: #71757E; }
.bh-no { text-align: right; font: 300 44px/1 Manrope, sans-serif; letter-spacing: -.03em; }
.bh-no small { display: block; font: 700 6.5px Manrope, sans-serif; letter-spacing: .22em;
               color: #1E7F4F; margin-top: 6px; }

/* ── identification band ────────────────────────────────────────────────── */
.bh-band { display: grid; grid-template-columns: repeat(4, 1fr); gap: 9px 20px;
           border-top: 2px solid #15171C; margin-top: 14px; padding-top: 10px; }
.bh-band label { display: block; font: 700 6.5px Manrope, sans-serif; letter-spacing: .18em;
                 color: #A9ADB4; text-transform: uppercase; margin-bottom: 1px; }
.bh-band b { font: 600 10px Manrope, sans-serif; }
.bh-band .mono { font: 500 9.5px 'IBM Plex Mono', monospace; }
.bh-band .empty { color: #C9CDD2; font-weight: 400; }

/* ── section label with running rule ────────────────────────────────────── */
.bh-sec { display: flex; align-items: center; gap: 12px; margin: 22px 0 7px; }
.bh-sec b { font: 800 8.5px Manrope, sans-serif; letter-spacing: .26em; color: #1E7F4F; }
.bh-sec::after { content: ""; flex: 1; border-top: 1px solid #ECEDEF; }

/* ── the log grid ───────────────────────────────────────────────────────── */
.bh-ghead, .bh-srow {
    display: grid;
    grid-template-columns: 44px 38px 22px 1fr 52px 46px 78px 44px 108px 37px;   /* 22 px hatch spine · 37 px well */
}
.bh-ghead { border-bottom: 1.5px solid #15171C; padding-bottom: 5px; }
.bh-ghead span { font: 700 6.6px Manrope, sans-serif; letter-spacing: .1em; text-transform: uppercase;
                 color: #71757E; text-align: center; padding: 0 2px; }
.bh-ghead span.l { text-align: left; padding-left: 12px; }

/* Depth-true geometry: rows are positioned, not stacked, so a stratum's height
   IS its thickness. Everything inside the log shares this coordinate space. */
.bh-log { position: relative; border-bottom: 1.5px solid #15171C; }
.bh-srow { position: absolute; left: 0; right: 0; border-bottom: 1px solid #ECEDEF;
           /* the row's ONE explicit track fills the band, so every cell is as tall
              as the row and its own centring has something to centre within.
              Without this the cells sized to their content and sat at the top;
              only the two-line core row looked centred, by accident of height. */
           grid-template-rows: 100%; align-items: stretch; }
.bh-srow:last-of-type { border-bottom: none; }

.bh-srow .c-ft, .bh-srow .c-m { text-align: center; display: flex;
    flex-direction: column; justify-content: center; }
.bh-srow .c-ft b { font: 600 11px 'IBM Plex Mono', monospace; font-variant-numeric: tabular-nums; }
.bh-srow .c-m  b { font: 500 10px 'IBM Plex Mono', monospace; color: #71757E; font-variant-numeric: tabular-nums; }
.bh-srow .c-hz { /* verticals live on .bh-vr now — full height, data or not */ }
.bh-srow .c-desc { font: 400 9.8px/1.6 Manrope, sans-serif; padding: 0 12px; color: #2A2E35;
    display: flex; flex-direction: column; justify-content: center; }
.bh-srow .c-desc::first-line { font-weight: 800; }
.bh-srow .cb { }
.bh-srow .c-rm { font: 400 8.4px/1.55 Manrope, sans-serif;
                 color: #71757E; padding: 0 6px 0 9px; font-style: italic;
    display: flex; flex-direction: column; justify-content: center; }

.c-hz .hzsvg, .wc .hzsvg { width: 100%; height: 100%; display: block; }

/* soil hatches — LEGEND SWATCHES ONLY; the log cells use vector <svg> patterns */
/* legend swatches — ASTM-convention geometry, rock = shale laminae by request */
.hz-topsoil { background: radial-gradient(3.5px 2.5px at 3px 5px,transparent 1.9px,#9AA0A8 2px 2.8px,transparent 2.9px),
              radial-gradient(3.5px 2.5px at 10px 5px,transparent 1.9px,#9AA0A8 2px 2.8px,transparent 2.9px), #fff;
              background-size: 14px 7px; }
.hz-fill    { background: repeating-linear-gradient(45deg,#fff 0 6px,#CFD3D8 6px 6.8px); }
.hz-clay    { background: repeating-linear-gradient(0deg,#fff 0 6.4px,#9AA0A8 6.4px 7.5px); }
.hz-silt    { background: repeating-linear-gradient(90deg,#B9BEC5 0 10px,transparent 10px 14px) 0 2px/24px 1px repeat, #fff; }
.hz-sand    { background: radial-gradient(#C4C8CE .8px,transparent .9px); background-size: 6.5px 6.5px; }
.hz-gravel  { background: radial-gradient(circle at 4px 4px,transparent 1.5px,#9AA0A8 1.6px 2.2px,transparent 2.3px);
              background-size: 12px 12px; }
.hz-rock,
.hz-shale   { background: repeating-linear-gradient(0deg,#fff 0 1.5px,#9AA0A8 1.5px 2.6px,#fff 2.6px 5.5px,#9AA0A8 5.5px 6.6px,#fff 6.6px 8px); }

/* the sample block: an inner grid spanning outer columns 5-8, whose template
   repeats those columns' widths exactly (52/46/78/44) so everything stays on
   the shared vertical rules; align-content centres the whole block in the row */
.bh-srow .c-data { grid-column: 5 / 9; display: grid; grid-template-columns: 52px 46px 78px 44px;
                   align-content: center; row-gap: 3px; height: 100%; }
.bh-srow .c-data .s-tag { font: 800 7.5px Manrope, sans-serif; text-align: center; padding-top: 2px; }
.bh-srow .c-data .s-tag.sub { color: #71757E; }
.bh-srow .c-data .s-rec { font: 500 9px 'IBM Plex Mono', monospace; color: #71757E; text-align: center; }
.bh-srow .c-data .s-rec i { display: block; font: 400 7.5px 'IBM Plex Mono', monospace; color: #A9ADB4; font-style: normal; }
.bh-srow .c-data .s-rec.sub { color: #A9ADB4; }
.bh-srow .c-data .s-bl { font: 500 9px 'IBM Plex Mono', monospace; color: #71757E; text-align: center;
                         padding-top: 2px; font-variant-numeric: tabular-nums; }
.bh-srow .c-data .s-bl.alt { font-size: 7.6px; color: #1E7F4F; }
.bh-srow .c-data .s-n { font: 600 9px 'IBM Plex Mono', monospace; text-align: center; padding-top: 2px;
                        font-variant-numeric: tabular-nums; }
.bh-srow .c-data .s-n i { color: #C9CDD2; font-style: normal; }

/* description cell: stratum text, then sub-notes and the core working as lines */
.bh-srow .c-desc .d-sub { font: 400 8.6px/1.5 Manrope, sans-serif; font-style: italic; color: #71757E; margin-top: 3px; }
.bh-srow .c-desc .d-core { font: 500 8.6px/1.6 'IBM Plex Mono', monospace; color: #1E7F4F;
                           white-space: pre-line; margin-top: 3px; }

/* full-height column rules — see the razor comment: rows must not own them */
.bh-vr { position: absolute; top: 0; bottom: 0; width: 0; border-left: 1px solid #F2F3F4; }
.bh-vr.hz { border-left-color: #DCDFE3; }

/* ── samples, positioned at their own depth ─────────────────────────────── */
/* ── groundwater, drawn across the log at true depth ────────────────────── */
.bh-wline { position: absolute; left: 0; right: 37px; border-top: 1px dashed #B9BEC5; z-index: 2; }
.bh-wline.st { border-top-style: solid; border-top-color: #A9ADB4; }
.bh-wline i { position: absolute; left: 48px; top: -10px; font: 700 9.5px Manrope, sans-serif;
              font-style: normal; background: #fff; padding: 0 2px; }
.bh-wline b { position: absolute; left: 66px; top: -11px; font: 500 7px 'IBM Plex Mono', monospace;
              color: #71757E; background: #fff; padding: 0 5px; }
.bh-cave { position: absolute; left: 130px; width: 64px; border-top: 1px dotted #A9ADB4; z-index: 2; }
.bh-cave b { font: 500 6.5px 'IBM Plex Mono', monospace; color: #A9ADB4; }

/* ── well completion, drawn from WellComponents ─────────────────────────── */
.c-well { position: absolute; right: 0; top: 0; bottom: 0; width: 37px; }
.c-well .wc-bore { position: absolute; left: 6px; width: 24px; background: #F4F5F6;
                   border: 1px solid #DCDFE3; border-top: none; border-bottom: none; box-sizing: border-box; }
.c-well .wc { position: absolute; }
/* Paint order is pinned by z-index, NOT by DOM order: components render in the
   list order the tech entered them, and a bentonite band added after the riser
   would otherwise paint over the pipe (the annulus spans 14-32 px, the casing
   19-27 px). Annulus low, pipe high, always. */
.wc-bent   { left: 6px; width: 24px; background: #3A3F47; opacity: .85; z-index: 1; }
.wc-sand   { left: 6px; width: 24px; z-index: 1; }
.wc-riser  { left: 12px; width: 13px; z-index: 2; background: #fff;
             border-left: 1.2px solid #15171C; border-right: 1.2px solid #15171C; }
.wc-screen { left: 6px; width: 24px; z-index: 2; background: #fff; box-sizing: border-box;
             border-left: 1.2px solid #15171C; border-right: 1.2px solid #15171C;
             }
.c-well .wc-cap { position: absolute; left: 9px; width: 19px; height: 3px; background: #15171C; z-index: 3; }

/* ── closing furniture ──────────────────────────────────────────────────── */
.bh-eob { display: flex; align-items: center; gap: 14px; padding: 8px 0 0; }
.bh-eob b { font: 800 8px Manrope, sans-serif; letter-spacing: .18em; }
.bh-eob::before, .bh-eob::after { content: ""; flex: 1; border-top: 1px solid #ECEDEF; }
.bh-carry { text-align: right; font: 600 8px Manrope, sans-serif; letter-spacing: .12em;
            color: #71757E; padding-top: 8px; }
.bh-rem { font: 400 10px/1.8 Manrope, sans-serif; color: #2A2E35; max-width: 84ch; margin: 2px 0 0; }
.bh-legend { display: flex; gap: 15px; align-items: center; margin-top: 10px; flex-wrap: wrap; }
.bh-legend span { font: 500 7.5px Manrope, sans-serif; color: #71757E; display: flex; gap: 5px; align-items: center; }
.bh-legend i { width: 16px; height: 10px; border: 1px solid #ECEDEF; display: inline-block; }
.bh-legend .lg-bent { background: #3A3F47; border: none; width: 8px; }
.bh-legend .lg-pipe { border: 1px solid #15171C; width: 7px; }
.bh-ftr { display: flex; justify-content: space-between; border-top: 2px solid #15171C;
          margin-top: auto; padding-top: 9px; font: 600 8.5px Manrope, sans-serif;
          color: #71757E; gap: 18px; flex-wrap: wrap; }
.bh-ftr b { color: #15171C; }
