/* ============================================================
   Production stylesheet — desk-wide tile icons (the PAINT half).
   Loads from dashboard/index.html with the other shell sheets,
   after themes.css. Owns nothing but the ::before glyph on a
   heading that dashboard/icons.js has stamped with data-icon.

   How it works: one shared ::before block does all the geometry and
   colour; each slug supplies only its silhouette through the --gi
   custom property, which the pseudo-element inherits from its
   originating heading. That is why the block is written once and the
   per-slug rules are a single declaration each.

   Colour comes from `background-color: currentColor` through a mask,
   so the glyph always matches its heading in both themes and needs no
   token of its own. Never put a var() token inside the SVG — the mask
   throws colour away and an unresolved var would kill the whole URL.

   Design law: monoline, 1.5 stroke on a 24x24 grid, stroke-linecap
   SQUARE and stroke-linejoin MITER, always. The desk is hard corners
   and a monospace face; a rounded cap reads as a borrowed icon set.
   themes.css:5 `border-radius:0 !important` cannot reach these shapes
   (the mask defines its own silhouette), so hard corners here are the
   author's job, not the cascade's.

   THE ONE RULE A FUTURE EDITOR MUST NOT BREAK
   A slug lives in TWO files. Adding, renaming or removing a --gi rule
   here means doing the same in the ICON_SLUGS registry in
   dashboard/icons.js. A data-icon slug with no --gi rule paints a
   solid 14px block — that is the deliberate loud failure. Do not add a
   catch-all rule to hide it; fix the missing pair.

   SVGs are percent-encoded, never base64, so the shapes stay auditable
   by eye: %23 is #, %3C is <, %3E is >. Attribute values use single
   quotes so the outer url("...") never needs escaping.
   ============================================================ */

/* ---- the one shared glyph box ------------------------------- */
[data-icon]::before {
  content: "";
  display: inline-block;
  flex: none;
  width: 11px;
  height: 11px;
  margin-inline-end: 7px;
  vertical-align: -1px;
  /* was `background-color: currentColor; opacity: .45;` — a flat opacity
     dims the same 45% in both schemes, which is exactly the scheme-blind
     dimming the desk bans. Mixing currentColor toward transparent instead
     still derives from the heading's own (theme-aware) colour, so the glyph
     tracks whatever ink the heading carries in either scheme. */
  background-color: color-mix(in srgb, currentColor 45%, transparent);
  -webkit-mask: var(--gi) center / contain no-repeat;
  mask: var(--gi) center / contain no-repeat;
}

/* A heading iconify() scanned but did not recognise. The empty value is
   how it stops being re-scanned; it must paint nothing. */
[data-icon=""]::before { display: none; }

/* ---- Board tiles -------------------------------------------- */
/* research — a square lens on a straight handle */
[data-icon="research"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H15 V15 H3 Z M15 15 L21 21'/%3E%3C/svg%3E"); }
/* heatmap — the universe cell by cell, one continuous 3x3 field */
[data-icon="heatmap"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H21 V21 H3 Z M9 3 V21 M15 3 V21 M3 9 H21 M3 15 H21'/%3E%3C/svg%3E"); }
/* marketdata — two candles with wicks */
[data-icon="marketdata"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M7 3 V21 M4 8 H10 V16 H4 Z M17 5 V19 M14 9 H20 V14 H14 Z'/%3E%3C/svg%3E"); }
/* indices — an index board carrying two levels, the second stepped up */
[data-icon="indices"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 4 H22 V20 H2 Z M5 15 H12 V10 H19'/%3E%3C/svg%3E"); }

/* ---- Home / desk cards -------------------------------------- */
/* triggers — a threshold rule and the step that breaks through it */
[data-icon="triggers"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 15 H22 M4 20 H10 V13 H16 V5'/%3E%3C/svg%3E"); }
/* positions — two blocks clamped to a rail */
[data-icon="positions"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 V21 M8 6 H20 V10 H8 Z M8 14 H20 V18 H8 Z'/%3E%3C/svg%3E"); }
/* strategy — an orthogonal rule tree: spine, two branches, two ends */
[data-icon="strategy"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M6 3 V21 M6 8 H14 V4 M6 16 H18 V20'/%3E%3C/svg%3E"); }
/* universe — the whole listed set, and the covered part of it */
[data-icon="universe"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 3 H22 V21 H2 Z M2 13 H10 V21'/%3E%3C/svg%3E"); }
/* predictability — history, the now-line, and the projection past it */
[data-icon="predictability"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 18 L6 11 L12 14 L22 5 M12 3 V21'/%3E%3C/svg%3E"); }
/* news — a wire strung between two posts, carrying one item */
[data-icon="news"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 V21 M21 3 V21 M3 12 H9 M15 12 H21 M9 8 H15 V16 H9 Z'/%3E%3C/svg%3E"); }
/* agents — a node and its two linked workers */
[data-icon="agents"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M9 9 H15 V15 H9 Z M2 3 H6 V7 H2 Z M6 7 L9 9 M18 17 H22 V21 H18 Z M15 15 L18 17'/%3E%3C/svg%3E"); }
/* desk — the terminal on its stand */
[data-icon="desk"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 4 H21 V15 H3 Z M12 15 V19 M7 19 H17'/%3E%3C/svg%3E"); }
/* signalstack — three slabs, stacked */
[data-icon="signalstack"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 4 H21 V8 H3 Z M3 10 H21 V14 H3 Z M3 16 H21 V20 H3 Z'/%3E%3C/svg%3E"); }
/* dailyread — a broadsheet: masthead panel and a second column */
[data-icon="dailyread"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 5 H15 V21 H2 Z M15 9 H22 V21 H15 Z M5 9 H12 M5 13 H12'/%3E%3C/svg%3E"); }

/* ---- Macro, geopolitics, risk ------------------------------- */
/* macro — the institution: pediment, three columns, a base */
[data-icon="macro"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 9 L12 3 L22 9 M5 9 V19 M12 9 V19 M19 9 V19 M2 21 H22'/%3E%3C/svg%3E"); }
/* geo — a globe under a crosshair. A circle, because a globe is one */
[data-icon="geo"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M3 12 H21 M12 3 V21'/%3E%3C/svg%3E"); }
/* risk — a slab with a crack running out of it. A fault, not a triangle */
[data-icon="risk"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H21 V9 H3 Z M10 9 L14 15 L10 21'/%3E%3C/svg%3E"); }
/* riskprofile — a square gauge with the needle swung out */
[data-icon="riskprofile"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 11 V19 H22 V11 M12 19 L19 9'/%3E%3C/svg%3E"); }
/* sectors — the market partitioned into unequal blocks */
[data-icon="sectors"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 3 H22 V21 H2 Z M2 12 H13 M13 3 V21'/%3E%3C/svg%3E"); }
/* drivers — the force, and the thing it pushes against */
[data-icon="drivers"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 12 H12 M8 8 L12 12 L8 16 M18 3 V21'/%3E%3C/svg%3E"); }
/* psx — the index column, pressed from both sides */
[data-icon="psx"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M12 2 V22 M2 8 H9 M6 5 L9 8 L6 11 M22 16 H15 M18 13 L15 16 L18 19'/%3E%3C/svg%3E"); }
/* radar — a beam cone with the sweep line crossing it */
[data-icon="radar"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 21 L12 3 L21 21 M7 13 H17'/%3E%3C/svg%3E"); }

/* ---- Screening and valuation -------------------------------- */
/* scanner — a scan head with probes reaching down at three depths */
[data-icon="scanner"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 5 H21 V9 H3 Z M6 9 V15 M12 9 V18 M18 9 V13'/%3E%3C/svg%3E"); }
/* screener — a funnel with hard shoulders */
[data-icon="screener"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 4 H22 L14 13 V20 L10 17 V13 Z'/%3E%3C/svg%3E"); }
/* valuation — a beam balance: price on one pan, model on the other */
[data-icon="valuation"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M12 4 V20 M6 20 H18 M3 12 V8 H21 V12'/%3E%3C/svg%3E"); }
/* fairvalue — two markers on one axis: where it trades, where it should */
[data-icon="fairvalue"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 12 H22 M8 7 V17 M17 4 V20'/%3E%3C/svg%3E"); }
/* compare — two panels held apart by a divider */
[data-icon="compare"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 4 H10 V20 H2 Z M14 4 H22 V20 H14 Z M12 8 V16'/%3E%3C/svg%3E"); }
/* evidence — three separate lines merging onto one vertical verdict bar (not scenarios' mirror: this ends in a bar, not a point) */
[data-icon="evidence"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 4 L18 10 M2 12 H18 M2 20 L18 14 M18 4 V20'/%3E%3C/svg%3E"); }

/* ---- Single-stock page -------------------------------------- */
/* facts — a fact sheet, three entries */
[data-icon="facts"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 H20 V21 H4 Z M8 8 H16 M8 12 H16 M8 16 H13'/%3E%3C/svg%3E"); }
/* quant — matrix brackets around two rows */
[data-icon="quant"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M7 3 H3 V21 H7 M17 3 H21 V21 H17 M10 10 H14 M10 15 H14'/%3E%3C/svg%3E"); }
/* scorecard — the business scored on three measures */
[data-icon="scorecard"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 3 H22 V21 H2 Z M7 21 V13 M12 21 V8 M17 21 V16'/%3E%3C/svg%3E"); }
/* dataflags — a flag run up a post */
[data-icon="dataflags"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M5 3 V21 M5 4 H19 V12 H5'/%3E%3C/svg%3E"); }
/* dividends — the payer, and cash leaving it at three dates */
[data-icon="dividends"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 H20 V10 H4 Z M8 14 V19 M12 14 V21 M16 14 V17'/%3E%3C/svg%3E"); }
/* developments — dispatches, one landing on top of the last */
[data-icon="developments"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H15 V15 H3 Z M9 9 H21 V21 H9 Z'/%3E%3C/svg%3E"); }
/* insider — flow leaving the company sideways, off the open market */
[data-icon="insider"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 4 H13 V20 H2 Z M13 12 H22 M18 8 L22 12 L18 16'/%3E%3C/svg%3E"); }
/* tradable — two posts and the gap you have to get through */
[data-icon="tradable"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 4 V20 M21 4 V20 M3 12 H9 M15 12 H21'/%3E%3C/svg%3E"); }
/* brokers — squared quotation marks: what they actually said */
[data-icon="brokers"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 6 H9 V12 H4 Z M4 12 L7 17 M15 6 H20 V12 H15 Z M15 12 L18 17'/%3E%3C/svg%3E"); }

/* ---- Dividends and calendar --------------------------------- */
/* bookclose — the register, stamped shut */
[data-icon="bookclose"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H21 V21 H3 Z M13 13 H19 V19 H13 Z M13 19 L19 13'/%3E%3C/svg%3E"); }
/* payouts — a torn receipt of what was actually paid */
[data-icon="payouts"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M5 3 H19 V21 L16 18 L12 21 L8 18 L5 21 Z M9 8 H15 M9 12 H14'/%3E%3C/svg%3E"); }
/* calendar — a ruled grid on two masts. A grid, never a folded page */
[data-icon="calendar"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M7 2 V6 M17 2 V6 M3 4 H21 V21 H3 Z M3 10 H21'/%3E%3C/svg%3E"); }

/* ---- Research library and track records --------------------- */
/* library — one archive frame, three equal-height dividers (compartments, not ascending bars) */
[data-icon="library"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 3 H22 V21 H2 Z M8 3 V21 M14 3 V21 M20 3 V21'/%3E%3C/svg%3E"); }
/* filings — two drawers of the filing cabinet */
[data-icon="filings"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 4 H21 V11 H3 Z M3 13 H21 V20 H3 Z M10 7 H14 M10 16 H14'/%3E%3C/svg%3E"); }
/* trackrecord — the distance run, and the marker at the end of it */
[data-icon="trackrecord"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 20 H15 M15 20 V4 M15 4 H22 V9 H15'/%3E%3C/svg%3E"); }
/* analysts — a squared-off bust */
[data-icon="analysts"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M8 3 H16 V11 H8 Z M3 21 V17 L8 13 H16 L21 17 V21'/%3E%3C/svg%3E"); }
/* brokerrank — a ranking ladder: spine, three rungs of increasing length, a cap flag on the #1 rung */
[data-icon="brokerrank"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 21 V3 M4 6 H18 M18 3 V6 M4 12 H14 M4 18 H9'/%3E%3C/svg%3E"); }
/* brokerpending — a squared clock face, hands still turning. No circle: the desk has none */
[data-icon="brokerpending"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 4 H20 V20 H4 Z M12 8 V12 H16'/%3E%3C/svg%3E"); }

/* ---- Learn -------------------------------------------------- */
/* learn — an open book, both leaves straight-edged */
[data-icon="learn"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M12 6 V21 M12 6 L3 3 V18 L12 21 M12 6 L21 3 V18 L12 21'/%3E%3C/svg%3E"); }
/* deepdives — down through the strata */
[data-icon="deepdives"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 8 H22 M2 16 H22 M12 2 V21 M8 17 L12 21 L16 17'/%3E%3C/svg%3E"); }
/* checklist — one box, one mark */
[data-icon="checklist"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H21 V21 H3 Z M7 12 L11 16 L18 8'/%3E%3C/svg%3E"); }
/* glossary — a page with the index tabs cut into its edge */
[data-icon="glossary"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 3 H21 V21 H3 Z M16 3 V21 M16 8 H21 M16 12 H21 M16 16 H21'/%3E%3C/svg%3E"); }
/* practice — a paper portfolio: clipped corner, a drawn trade */
[data-icon="practice"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 H15 L20 8 V21 H4 Z M15 3 V8 H20 M8 17 L11 13 L15 15'/%3E%3C/svg%3E"); }

/* ---- Portfolio, watchlist, holdings ------------------------- */
/* portfolio — a wallet with one card showing */
[data-icon="portfolio"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 7 H22 V20 H2 Z M2 7 V4 H17 V7 M15 12 H22 V16 H15 Z'/%3E%3C/svg%3E"); }
/* xray — one beam in, two out the far side */
[data-icon="xray"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M9 3 H15 V21 H9 Z M2 12 H9 M15 8 H22 M15 16 H22'/%3E%3C/svg%3E"); }
/* concentration — a square bullseye closing on one point */
[data-icon="concentration"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 2 H22 V22 H2 Z M7 7 H17 V17 H7 Z M11 11 H13 V13 H11 Z'/%3E%3C/svg%3E"); }
/* sectorconc — one bar of exposure, split unevenly */
[data-icon="sectorconc"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 9 H22 V15 H2 Z M9 9 V15 M14 9 V15'/%3E%3C/svg%3E"); }
/* watchlist — a viewfinder held on one name */
[data-icon="watchlist"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 8 V2 H8 M16 2 H22 V8 M22 16 V22 H16 M8 22 H2 V16 M9 12 H15'/%3E%3C/svg%3E"); }
/* changed — the old level, the new one, and the move between */
[data-icon="changed"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 6 H22 M2 18 H22 M12 6 V18 M8 14 L12 18 L16 14'/%3E%3C/svg%3E"); }
/* holdings — what the account is actually carrying */
[data-icon="holdings"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 V21 H20 V3 M8 11 H16 M8 16 H16'/%3E%3C/svg%3E"); }
/* divreceived — a payout landing in the tray */
[data-icon="divreceived"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 16 H22 V20 H2 Z M12 3 V13 M8 9 L12 13 L16 9'/%3E%3C/svg%3E"); }
/* tradelog — the tape: one side bought, one side sold */
[data-icon="tradelog"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 8 H21 M17 4 L21 8 L17 12 M21 16 H3 M7 12 L3 16 L7 20'/%3E%3C/svg%3E"); }

/* ---- Tools -------------------------------------------------- */
/* tools — the toolbox */
[data-icon="tools"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 8 H22 V20 H2 Z M9 8 V4 H15 V8 M2 14 H22'/%3E%3C/svg%3E"); }
/* sizer — a candle with a measuring bracket run alongside its range, not a growing bar */
[data-icon="sizer"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M6 4 V20 M4 8 H8 V16 H4 Z M16 6 V18 M14 6 H18 M14 18 H18'/%3E%3C/svg%3E"); }
/* scenarios — one trunk forking into two branches, each capped with a flagged endpoint (not evidence's mirror: these end in flags, not a bar) */
[data-icon="scenarios"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 12 H10 M10 12 L20 5 M20 5 H16 M10 12 L20 19 M20 19 H16'/%3E%3C/svg%3E"); }
/* ask — a terminal prompt: the query chevron and the cursor line waiting for an answer */
[data-icon="ask"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 6 L11 12 L4 18 M14 18 H20'/%3E%3C/svg%3E"); }

/* ---- Community and marketplace ------------------------------ */
/* members — the roster */
[data-icon="members"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 4 H7 V9 H2 Z M10 6 H22 M2 15 H7 V20 H2 Z M10 17 H22'/%3E%3C/svg%3E"); }
/* marketplace — a price tag */
[data-icon="marketplace"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M11 2 H21 V12 L11 22 L2 13 Z M16 6 H19 V9 H16 Z'/%3E%3C/svg%3E"); }
/* request — an empty slot with an I-beam cursor waiting inside it (not a plus-square) */
[data-icon="request"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 4 H21 V20 H3 Z M12 9 V15 M10 9 H14 M10 15 H14'/%3E%3C/svg%3E"); }
/* yourboard — tiles you arranged yourself, deliberately unequal */
[data-icon="yourboard"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 3 H10 V13 H2 Z M12 3 H22 V9 H12 Z M12 11 H22 V21 H12 Z M2 15 H10 V21 H2 Z'/%3E%3C/svg%3E"); }
/* shipped — a crate that has already gone out */
[data-icon="shipped"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 8 H21 V21 H3 Z M3 8 L6 3 H18 L21 8 M9 12 H15'/%3E%3C/svg%3E"); }

/* ---- Account and settings ----------------------------------- */
/* settings — two rails, two handles. No gear: gears are round and fussy */
[data-icon="settings"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 7 H22 M2 17 H22 M8 4 V10 M16 14 V20'/%3E%3C/svg%3E"); }
/* plan — a pass with a stub and what it entitles you to */
[data-icon="plan"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 6 H22 V18 H2 Z M8 6 V18 M13 10 H19 M13 14 H17'/%3E%3C/svg%3E"); }
/* birth — the North Indian chart square. The subject's own diagram */
[data-icon="birth"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 2 H22 V22 H2 Z M2 2 L22 22 M22 2 L2 22'/%3E%3C/svg%3E"); }
/* digest — a dispatch folded down to size: two creases and a dog-ear (not the Feather envelope) */
[data-icon="digest"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 H20 V21 H4 Z M4 9 H20 M4 15 H20 M16 21 L20 17'/%3E%3C/svg%3E"); }
/* emailprefs — two switches, one on and one off */
[data-icon="emailprefs"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M3 6 H21 V10 H3 Z M17 6 V10 M3 14 H21 V18 H3 Z M7 14 V18'/%3E%3C/svg%3E"); }
/* followed — a bracket clamped around one segment of the rail (not the Feather bookmark) */
[data-icon="followed"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 12 H22 M7 6 V18 M7 6 H12 M7 18 H12'/%3E%3C/svg%3E"); }
/* legal — a shield with hard shoulders */
[data-icon="legal"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M4 3 H20 V13 L12 21 L4 13 Z'/%3E%3C/svg%3E"); }
/* note — a pencil, for the one thing on the desk you wrote yourself */
[data-icon="note"] { --gi: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='square' stroke-linejoin='miter'%3E%3Cpath d='M2 22 L3 17 L17 3 L21 7 L7 21 Z M14 6 L18 10'/%3E%3C/svg%3E"); }
