/* Structural index contract — portfolio-wide.
   Blue 12px structural numbering renders the numeric hierarchy only.
   English descriptors belong in the title/content, not beside the structural index.\n   A final runtime layer reasserts the numeric-only presentation after legacy animation scripts inject inline font styles.

   Target output:
   - medium title index: 01.1
   - small/major structural index: 01

   Canonical authoring pattern:
   <span class="hm-subno hm-ds-index-label" data-index="01.1">01.1</span>

   12px blue structural labels store and render the numeric hierarchy only.
   Symbols, spaces, English/Korean descriptors and category names must not be authored
   to the right of the numeric index. The clipping rules below remain only as a legacy fallback.
   Non-numbered 12px blue labels are intentionally untouched. */
html body.himart-page-body #live-main .hm-ds-index-label[data-index]{
  font-size:0!important;
  white-space:nowrap!important;
}
html body.himart-page-body #live-main .hm-ds-index-label[data-index]::before{
  content:attr(data-index);
  font-family:var(--hm-font-en)!important;
  font-size:var(--hm-type-note)!important;
  font-weight:400!important;
  line-height:1.2!important;
  letter-spacing:var(--hm-track-note)!important;
  font-variant-numeric:tabular-nums!important;
}

/* 01.1 / ENGLISH → 01.1
   These are the canonical medium-title numbering positions. */
html body.himart-page-body #live-main .hm-subhead > .hm-subno:not([data-index]),
html body.himart-page-body #live-main .narrative-subno:not([data-index]),
html body.himart-page-body #live-main .data-card-head > .hm-card-no:not([data-index]){
  display:inline-block!important;
  max-inline-size:4.35ch!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  vertical-align:top!important;
}

/* 01 / ENGLISH or 01 · ENGLISH → 01
   Only known structural numbering roles that use the portfolio blue 12px label style
   are included here. Descriptive labels without a leading structural number are excluded. */
html body.himart-page-body #live-main :is(
  .hm-section-head .hm-section-no:not([data-index]),
  .flow-node > .hm-card-no:not([data-index]),
  .hm-ds-flow__node > .hm-card-no:not([data-index]),
  .aimmo-evidence-card figcaption > span:first-child,
  .aimmo-context-insight__label,
  .team-card > span:first-child,
  .ways-kicker,
  .ways-team-problem__no,
  .ax-friction-card > span:first-child,
  .ax-rule-summary > article > span:first-child,
  .ax-composition-step > span:first-child,
  .yanolja-answer-card > span:first-child,
  .yanolja-context-grid > article > span:first-child,
  .yanolja-direction-card > span:first-child,
  .yanolja-goal-card > span:first-child,
  .yanolja-demo-panel > span:first-child,
  .yanolja-glance-grid > article > span:first-child,
  .yanolja-coverage-card > span:first-child,
  .yanolja-lead-step > span:first-child
){
  display:inline-block!important;
  max-inline-size:2.55ch!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  vertical-align:top!important;
}

/* AX maker labels are authored as "STEP 01 · ...". They are structural numbering too,
   so render the sequence as 01 / 02 / 03 while leaving the source copy intact. */
html body.himart-page-body #live-main .ax-maker-flow{
  counter-reset:hm-structural-small-index!important;
}
html body.himart-page-body #live-main .ax-maker-step{
  counter-increment:hm-structural-small-index!important;
}
html body.himart-page-body #live-main .ax-maker-step > span:first-child{
  font-size:0!important;
  white-space:nowrap!important;
}
html body.himart-page-body #live-main .ax-maker-step > span:first-child::before{
  content:counter(hm-structural-small-index, decimal-leading-zero);
  font-family:var(--hm-font-en)!important;
  font-size:var(--hm-type-note)!important;
  font-weight:400!important;
  line-height:1.2!important;
  letter-spacing:var(--hm-track-note)!important;
  font-variant-numeric:tabular-nums!important;
}


/* HIMART narrative runtime fallback.
   The live content layer replaces some authored subsection headers with
   .narrative-block after page load. Keep that generated structure inside the
   same numeric-only contract while the final runtime assigns data-index. */
html body.himart-page-body #live-main .narrative-subno:not([data-index]),
html body.himart-page-body #live-main .synthesis-subno:not([data-index]){
  display:inline-block!important;
  max-inline-size:3.85ch!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  text-overflow:clip!important;
  vertical-align:top!important;
}
