/* GENERATED by marketing/build-tool-partials.py — DO NOT EDIT.
   Source of truth: marketing/tools/investment-charter.html */
/* Wizard-only components. Brand tokens ONLY — no colour literal, no rgb triplet
     (UI-STANDARDS §5.1); translucency is color-mix. The design-system primitives
     (.card/.field/.rail/.eyebrow/.kv/.pill/select/button) come from tools-core.css. */

  /* value chips */
  .ist-tool.ist-tool.ist-tool.ist-tool .chips { display: flex; flex-wrap: wrap; gap: var(--sp-2); }
  .ist-tool.ist-tool.ist-tool.ist-tool .chip {
    font: 500 12px/1.4 var(--font-mono); padding: 6px 11px; border-radius: 999px;
    border: 1px solid var(--line); background: transparent; color: var(--muted);
    cursor: pointer; transition: color .15s, border-color .15s, background .15s;
  }
  /* T-183: hover's border was --accent-deep at 2.88:1 on --surface, under the 3:1
     non-text floor. --accent is 4.57 and is already the pressed-state border, so
     hover and pressed now share an edge colour — they stay distinct by the fill
     and the --accent-active ink that only `pressed` carries.
     NOT fixed here, and deliberately: the RESTING border is --line at 1.50:1,
     worse than the hover it replaces. That is the repo-wide hairline token, so
     moving it is a design-system decision, not this row's. Logged, not silent. */
  .ist-tool.ist-tool.ist-tool.ist-tool .chip:hover { border-color: var(--accent); color: var(--text); }
  .ist-tool.ist-tool.ist-tool.ist-tool .chip[aria-pressed="true"] {
    border-color: var(--accent); color: var(--accent-active);
    background: color-mix(in srgb, var(--accent) 16%, transparent);
  }

  /* layer allocation grid */
  .ist-tool.ist-tool.ist-tool.ist-tool .lhead,
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow {
    display: grid; grid-template-columns: 1fr 78px 68px 68px; gap: var(--sp-2);
    align-items: center;
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .lhead {
    font: 600 10px/1.2 var(--font-ui); letter-spacing: .1em; text-transform: uppercase;
    color: var(--muted); padding-bottom: var(--seam-y); border-bottom: 1px solid var(--line);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .lhead span:not(:first-child) { text-align: right; }
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow { padding: var(--seam-y) 0; border-bottom: 1px solid var(--line); }
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow:last-of-type { border-bottom: none; }
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow .nm { font-size: 14px; }
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow .nm small {
    display: block; color: var(--muted); font-size: 11px; line-height: 1.35;
  }
  /* T-188(b) — see the note on .bv-row below: 13px is under the iOS auto-zoom floor,
     so it is scoped above the breakpoint and phones inherit the kit's 16px. */
  @media (min-width: 481px) {
    .ist-tool.ist-tool.ist-tool.ist-tool .lrow input,
    .ist-tool.ist-tool.ist-tool.ist-tool .bv-row input { font-size: 13px; }
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow input {
    padding: 6px var(--sp-2); text-align: right; border-radius: 6px;
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .lrow input.bad { border-color: color-mix(in srgb, var(--alarm) 70%, transparent); }

  /* one-number band-fill for the whole Layer table (owner ask: don't hand-type
     every lower/upper — set one % and band them all, then fine-tune) */
  .ist-tool.ist-tool.ist-tool.ist-tool .bandvar { margin: var(--sp-2) 0 var(--card-gap); }
  .ist-tool.ist-tool.ist-tool.ist-tool .bandvar > label {
    display: block; font: 600 10px/1.2 var(--font-ui); letter-spacing: .1em;
    text-transform: uppercase; color: var(--muted); margin-bottom: var(--sp-2);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .bv-row { display: flex; align-items: center; gap: var(--sp-2); flex-wrap: wrap; }
  /* T-188(b) — 13px is BELOW the iOS auto-zoom floor. Safari zooms whenever a focused
     control computes under 16px and does not restore, leaving the reader zoomed with
     no way back; the kit has shipped 16px since DS-35 and this override undid it.
     Scoped above the breakpoint (see the @media near .lrow) rather than deleted, so
     the wide-screen density survives and phones inherit 16px.
     ⚠ Do NOT reach for `maximum-scale=1` — that kills pinch-zoom, an a11y regression
     traded for a cosmetic one. */
  .ist-tool.ist-tool.ist-tool.ist-tool .bv-row input { width: 84px; padding: 6px var(--sp-2); text-align: right; border-radius: var(--r-control); } /* DS-74(b): was 6px, owner-approved fold into --r-control */
  .ist-tool.ist-tool.ist-tool.ist-tool .bv-row input.bad { border-color: color-mix(in srgb, var(--alarm) 70%, transparent); }
  .ist-tool.ist-tool.ist-tool.ist-tool .bv-unit { font: 500 12px/1.4 var(--font-mono); color: var(--muted); }
  .ist-tool.ist-tool.ist-tool.ist-tool #bandApply { margin-left: auto; }

  /* objective cards + toggle */
  .ist-tool.ist-tool.ist-tool.ist-tool .obj {
    border: 1px solid var(--line); border-radius: var(--r);
    padding: var(--row-y) var(--pad-x); margin-bottom: var(--card-gap);
    background: color-mix(in srgb, var(--raised) 55%, transparent);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .obj .otop {
    display: flex; justify-content: space-between; align-items: flex-start;
    gap: var(--sp-3); margin-bottom: var(--sp-3);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .obj h3 { margin: 0; font: 600 15px/1.3 var(--font-ui); }
  .ist-tool.ist-tool.ist-tool.ist-tool .obj .why { color: var(--muted); font-size: 12px; margin: 3px 0 0; max-width: 52ch; }
  .ist-tool.ist-tool.ist-tool.ist-tool .obj .ogrid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: var(--sp-3); }
  .ist-tool.ist-tool.ist-tool.ist-tool .obj .ogrid .field { margin-bottom: 0; }
  .ist-tool.ist-tool.ist-tool.ist-tool .obj.off .ogrid { opacity: .35; pointer-events: none; }
  /* T-183: --accent-deep measured 2.62:1 here, BOTH as the ink and as the 2px rule
     (which misses even the 3:1 non-text floor). The ground is NOT --surface: .obj
     above paints color-mix(--raised 55%, transparent) over it — a composited
     ground that exists only at runtime, which no membership-only colour check
     can resolve, and why this sat unflagged. --muted is 5.52 there. The
     bronze identity survives as the rule, where --accent's 4.17 clears 3:1.
     Rejected: --accent as the INK is 4.17 and fails; --accent-active passes at
     6.31 but spends Lit Bronze against BRAND RULE 2 / CA7 scarcity. */
  .ist-tool.ist-tool.ist-tool.ist-tool .measure {
    font: 500 11px/1.5 var(--font-mono); color: var(--muted);
    border-left: 2px solid var(--accent); padding-left: var(--sp-2); margin: var(--sp-3) 0 0;
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .tog {
    position: relative; width: 42px; height: 23px; flex: none; border-radius: 999px;
    background: var(--line); border: none; cursor: pointer; transition: background .18s;
    padding: 0;
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .tog::after {
    content: ""; position: absolute; top: 3px; left: 3px; width: 17px; height: 17px;
    border-radius: 50%; background: var(--muted); transition: left .18s, background .18s;
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .tog[aria-pressed="true"] { background: color-mix(in srgb, var(--accent) 45%, transparent); }
  .ist-tool.ist-tool.ist-tool.ist-tool .tog[aria-pressed="true"]::after { left: 22px; background: var(--accent-active); }

  /* leverage zone legend — a swatch row, words + numbers from vP */
  /* 3:1:1:1 — the deliberate homepage zoom used everywhere else (Clear owns half
     the bar, each action zone a sixth). Same proportion as the app's level bar. */
  .ist-tool.ist-tool.ist-tool.ist-tool .zones {
    display: grid; grid-template-columns: 3fr 1fr 1fr 1fr; gap: 2px;
    border: 1px solid var(--line); border-radius: 8px; overflow: hidden; margin: var(--sp-2) 0 var(--card-gap);
  }
  /* T-183b — this legend IS the zone bar without a marker (brand spec §2.1b, Q10b).
     It was four 16–18% tints carrying zone-coloured WORDS, and it failed four ways
     on --surface: the Clear word 4.42, Harvest 3.54, Forced 3.09, and the .zn range
     on Freeze 4.46. Re-inking those four was the wrong fix — the legend and the bar
     were two drawings of ONE instrument, so the legend becomes the bar and the
     failures disappear instead of being tuned around. Its geometry already matched
     the standard exactly (3fr 1fr 1fr 1fr, gap: 2px); only the colour was forked.
     The `gap` shows --bg through, which is the mandated separator. */
  .ist-tool.ist-tool.ist-tool.ist-tool .zones div {
    padding: var(--sp-3) var(--sp-2); text-align: center;
    font: 600 11px/1.4 var(--font-mono);
    color: var(--zone-ink);
  }
  /* The range line takes --zone-ink at FULL strength — 5.52 / 4.95 / 7.50 / 4.54,
     the same four figures as the labels. It was var(--muted), which composited to
     4.46 on the Freeze tint.
     ⚠ Do NOT reach for `opacity` to make it recede: opacity composites the ink
     against the fill, which puts the ratio back under the ground's control — the
     exact defect §2.1b's opaque fills exist to end. Measured: at .78 this line
     reads 3.97 / 3.63 / 4.92 / 3.43, failing AA on three of four steps. The
     hierarchy here is the 10px size, not a contrast reduction. */
  .ist-tool.ist-tool.ist-tool.ist-tool .zones .zn { display: block; font-size: 10px; color: var(--zone-ink); margin-top: 2px; letter-spacing: .04em; }
  .ist-tool.ist-tool.ist-tool.ist-tool .zones .z1 { background: var(--zone-clear-fill); }
  .ist-tool.ist-tool.ist-tool.ist-tool .zones .z2 { background: var(--zone-harvest-fill); }
  .ist-tool.ist-tool.ist-tool.ist-tool .zones .z3 { background: var(--zone-freeze-fill); }
  .ist-tool.ist-tool.ist-tool.ist-tool .zones .z4 { background: var(--zone-forced-fill); }

  /* nav row */
  .ist-tool.ist-tool.ist-tool.ist-tool .wiznav {
    display: flex; justify-content: space-between; align-items: center; gap: var(--sp-3);
    margin-top: var(--card-gap);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .blocker {
    font: 500 11px/1.5 var(--font-mono); color: var(--accent-active);
    text-align: right; max-width: 40ch; margin: 0;
  }
  /* DS-27: `.btn-back[hidden]{visibility:hidden}` was deleted here. It could never paint —
     tools-core.css declares `[hidden]:not([hidden="until-found"]){display:none !important}`
     at higher specificity, and `display:none` removes the box, so there is nothing left for
     `visibility` to hide. Its intent (reserve the Back button's space) is already met
     structurally: `.wiznav` is `space-between` with a `.blocker` spacer sibling, so
     revealing Back moves Next 0.00px — measured. Do not re-add it. */

  .ist-tool.ist-tool.ist-tool.ist-tool .step { display: none; }
  .ist-tool.ist-tool.ist-tool.ist-tool .step.on { display: block; }

  /* the rendered charter document (on screen — dark) */
  .ist-tool.ist-tool.ist-tool.ist-tool .doc h3 {
    font: 400 20px/1.3 var(--font-display); margin: var(--card-gap) 0 var(--sp-2);
    padding-bottom: var(--sp-2); border-bottom: 1px solid var(--line);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc h3:first-child { margin-top: 0; }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc .q {
    font: 400 16px/1.5 var(--font-display); font-style: italic; color: var(--text);
    border-left: 2px solid var(--accent); padding-left: var(--sp-4); margin: 0 0 var(--sp-3);
    white-space: pre-wrap;
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc table { width: 100%; border-collapse: collapse; font-size: 13px; }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc th {
    font: 600 10px/1.2 var(--font-ui); letter-spacing: .1em; text-transform: uppercase;
    color: var(--muted); text-align: left; padding: 0 var(--sp-2) var(--sp-2); border-bottom: 1px solid var(--line);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc td { padding: var(--seam-y) var(--sp-2); border-bottom: 1px solid var(--line); }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc td.n { font-family: var(--font-mono); font-variant-numeric: tabular-nums; text-align: right; }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc tr:last-child td { border-bottom: none; }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc .adopt { font: 500 12px/1.6 var(--font-mono); color: var(--muted); margin: 0; }
  .ist-tool.ist-tool.ist-tool.ist-tool .doc .measure-sub { font: 500 10px/1.3 var(--font-mono); color: var(--muted); display: block; }

  .ist-tool.ist-tool.ist-tool.ist-tool .disclaimer {
    font-size: 12px; line-height: 1.6; color: color-mix(in srgb, var(--text) 78%, transparent);
    border: 1px solid var(--line); border-radius: var(--r); padding: var(--row-y) var(--pad-x);
    margin: var(--card-gap) 0 0; background: color-mix(in srgb, var(--raised) 42%, transparent);
  }

  .ist-tool.ist-tool.ist-tool.ist-tool .yamlhead {
    display: flex; justify-content: space-between; align-items: baseline;
    margin: var(--card-gap) 0 var(--sp-2);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .yamlhead .t {
    font: 600 11px/1.2 var(--font-mono); letter-spacing: .1em; text-transform: uppercase; color: var(--accent);
  }
  .ist-tool.ist-tool.ist-tool.ist-tool .yamlhead .s { font: 500 11px/1.2 var(--font-mono); color: var(--muted); }
  .ist-tool.ist-tool.ist-tool.ist-tool pre.yaml {
    background: var(--bg); border: 1px solid var(--line); border-radius: var(--r); /* DS-74(b): was 8px, owner-approved fold into --r */
    padding: var(--pad-x); overflow-x: auto; margin: 0;
    font: 12px/1.65 var(--font-mono); color: color-mix(in srgb, var(--text) 82%, transparent);
  }

  .ist-tool.ist-tool.ist-tool.ist-tool .export-actions { display: flex; flex-wrap: wrap; gap: var(--sp-2); margin-top: var(--sp-3); }

  /* the print / PDF face — paper white, black ink. `white`/`black` are paper, not
     brand colours (and are keywords, so the brand-literal guard has nothing to
     catch). Everything but the printable document is hidden. */
  .ist-tool.ist-tool.ist-tool.ist-tool #print-doc { display: none; }
  @media print {
    body { background: white; }
    .ist-tool.ist-tool.ist-tool.ist-tool { max-width: none; padding: 0; color: black; background: white; }
    .ist-tool.ist-tool.ist-tool.ist-tool > *:not(#print-doc) { display: none !important; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc { display: block; color: black; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc h1 { font: 400 26px/1.2 var(--font-display); margin: 0 0 4px; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc h3 {
      font: 600 12px/1.3 var(--font-ui); letter-spacing: .06em; text-transform: uppercase;
      margin: 20px 0 6px; padding-bottom: 4px; border-bottom: 1px solid black;
    }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc .q { font: italic 400 15px/1.5 var(--font-display); margin: 0 0 10px; white-space: pre-wrap; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc table { width: 100%; border-collapse: collapse; font-size: 12px; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc th, .ist-tool.ist-tool.ist-tool.ist-tool #print-doc td { text-align: left; padding: 4px 6px; border-bottom: 1px solid black; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc td.n { text-align: right; font-family: var(--font-mono); }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc .disclaimer { margin-top: 20px; font-size: 10px; line-height: 1.5; border: 1px solid black; padding: 10px; }
    .ist-tool.ist-tool.ist-tool.ist-tool #print-doc .adopt { font: 500 11px/1.6 var(--font-mono); }
  }

  @media (max-width: 480px) {
    .ist-tool.ist-tool.ist-tool.ist-tool .lhead, .ist-tool.ist-tool.ist-tool.ist-tool .lrow { grid-template-columns: 1fr 58px 52px 52px; gap: var(--sp-1); }
    .ist-tool.ist-tool.ist-tool.ist-tool .obj .ogrid { grid-template-columns: 1fr; gap: var(--sp-2); }
    .ist-tool.ist-tool.ist-tool.ist-tool .zones { grid-template-columns: 1fr 1fr; }
  }