/**
 * InveShares - site design system.
 *
 * A ground-up rewrite. The previous stylesheet was a light, generic,
 * blog-shaped theme; a market platform is read for long stretches, mostly at
 * night, and is almost entirely dense numeric tables. Those are different
 * design problems.
 *
 * DECISIONS AND WHY
 *
 *   Dark by default. These screens are read at the close and after it. The
 *   background is a warm near-black rather than pure #000, because pure black
 *   under light text maximises halation and is harder to read for long periods.
 *
 *   One accent, used sparingly. An accent that appears everywhere stops meaning
 *   anything. Here it marks one thing: the pivot, and the actions leading to it.
 *
 *   Up and down are never colour alone. Roughly one man in twelve has some form
 *   of red-green colour deficiency, and a screen where profit and loss differ
 *   only by hue is unusable for them. Direction always carries an arrow too.
 *
 *   Numbers are tabular-figure monospace. With proportional digits the decimal
 *   points wander and the eye cannot scan down a column of prices.
 *
 *   Light mode is supported rather than tolerated: every token is redefined,
 *   and the system preference is followed until the reader chooses otherwise.
 *
 * @package InveShares
 */

/* =====================================================================
   0. Isolation layer
   =====================================================================

   WHY THIS SECTION IS WRITTEN THE WAY IT IS

   Twice now a primary button rendered as a filled rectangle with unreadable
   text. Both times the cause was the same shape of mistake, not the same rule:
   this stylesheet styled a BARE ELEMENT under a wrapper class, and that
   selector outranked the component class sitting on the element itself.

       .inveshares-app a          (0,2,0)   <- wins
       .inveshares-btn--primary    (0,1,0)   <- loses

   Patching each occurrence has failed twice, so the rule is now structural:

     1. NOTHING in this file styles a bare element for colour or background
        except inside the neutralisation block below, which exists purely to
        undo the theme and deliberately claims nothing a component wants.
     2. Every component declares its own background, colour and border. None
        inherits a visual property that matters.
     3. The two properties a theme can break most destructively - a button's
        background and its text colour - are additionally protected at a
        specificity no reasonable theme reaches, and marked !important. That
        is the ONLY use of !important for colour in this file. A button whose
        label cannot be read is not a styling preference; it is a broken
        control.

   The plugin owns its appearance. It does not negotiate with the theme.
   ===================================================================== */

/* --- Overflow containment ---------------------------------------------
   A single element wider than the viewport pans the WHOLE page sideways on a
   phone. Rather than hunt for the offender, the page is clamped. */

html:has( .inveshares-app ),
body.inveshares-app {
	max-width: 100%;
	overflow-x: hidden;
}

@supports not selector( html:has( body ) ) {
	body.inveshares-app {
		overflow-x: hidden;
	}
}

.inveshares-app {
	/* Stops iOS inflating text in landscape and silently breaking layouts
	   sized in portrait. */
	-webkit-text-size-adjust: 100%;
	text-size-adjust: 100%;
}

.inveshares-app *,
.inveshares-app *::before,
.inveshares-app *::after {
	box-sizing: border-box;
}

/* Nothing may exceed its container. */
.inveshares-app img,
.inveshares-app svg,
.inveshares-app video,
.inveshares-app iframe,
.inveshares-app canvas,
.inveshares-app embed,
.inveshares-app object {
	height: auto;
	max-width: 100%;
}

/* A long unbroken string - a URL, a ticker list - is the other usual cause. */
.inveshares-app p,
.inveshares-app li,
.inveshares-app h1,
.inveshares-app h2,
.inveshares-app h3,
.inveshares-app td,
.inveshares-app th {
	overflow-wrap: break-word;
}

/* --- Theme neutralisation ---------------------------------------------
   Structural only. Margins, padding and box model are reset so theme spacing
   cannot distort layout; colour is deliberately NOT set here, because that is
   precisely what made a wrapper rule outrank a component. */

.inveshares-app h1,
.inveshares-app h2,
.inveshares-app h3,
.inveshares-app h4,
.inveshares-app h5,
.inveshares-app h6,
.inveshares-app p,
.inveshares-app figure,
.inveshares-app blockquote,
.inveshares-app dl,
.inveshares-app dd,
.inveshares-app ul,
.inveshares-app ol {
	margin: 0;
	padding: 0;
}

.inveshares-app table {
	border-collapse: collapse;
	width: 100%;
}

/* Form controls inherit typography only. Their colours are set by the field
   component below, never here. */
.inveshares-app input,
.inveshares-app select,
.inveshares-app textarea,
.inveshares-app button {
	font: inherit;
	letter-spacing: inherit;
	margin: 0;
}

/* --- Critical protection ----------------------------------------------
   The one place !important is used for colour. A theme that repaints a
   button's fill or its label has broken a control, not restyled it. The
   selector is deliberately over-specified so nothing in this file or any
   theme reaches it by accident. */

.inveshares-app .inveshares-btn.inveshares-btn--primary,
.inveshares-app a.inveshares-btn.inveshares-btn--primary,
.inveshares-app button.inveshares-btn.inveshares-btn--primary {
	background-color: var(--ivs-btn-bg) !important;
	color: var(--ivs-btn-ink) !important;
}

.inveshares-app .inveshares-btn:not(.inveshares-btn--primary),
.inveshares-app a.inveshares-btn:not(.inveshares-btn--primary),
.inveshares-app button.inveshares-btn:not(.inveshares-btn--primary) {
	background-color: var(--ivs-surface-2) !important;
	color: var(--ivs-ink) !important;
}

/* =====================================================================
   1. Tokens
   ===================================================================== */

.inveshares-app {
	--ivs-bg: #131310;
	--ivs-bg-deep: #0d0d0a;
	--ivs-surface: #1b1b16;
	--ivs-surface-2: #23231d;
	--ivs-line: #2e2e26;
	--ivs-line-soft: #26261f;

	--ivs-ink: #f2f1e8;
	--ivs-ink-soft: #a8a79a;
	--ivs-ink-faint: #74736a;

	--ivs-accent: #ffc93c;
	--ivs-accent-soft: rgba( 255, 201, 60, .14 );
	--ivs-accent-ink: #17170f;

	/*
	 * Buttons and links carry separate tokens. Deriving a button's background
	 * from the same variable as its text is how the two ended up identical.
	 */
	--ivs-link: #ffc93c;
	--ivs-btn-bg: #ffc93c;
	--ivs-btn-ink: #17170f;

	--ivs-up: rgba( 78, 201, 130, .12 );
	--ivs-up-ink: #5bd48c;
	--ivs-down: rgba( 229, 96, 96, .12 );
	--ivs-down-ink: #f0736f;
	--ivs-warn-ink: #f0b95b;

	--ivs-font: ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI",
		Roboto, "Helvetica Neue", Arial, sans-serif;
	--ivs-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas,
		"Liberation Mono", monospace;

	/* A modular scale, clamped so headings shrink on a phone without needing a
	   breakpoint for each one. */
	--ivs-text-xs: 0.75rem;
	--ivs-text-sm: 0.8125rem;
	--ivs-text-base: 0.9375rem;
	--ivs-text-md: 1.0625rem;
	--ivs-text-lg: clamp( 1.15rem, 0.9rem + 0.8vw, 1.4rem );
	--ivs-text-xl: clamp( 1.4rem, 1rem + 1.6vw, 2rem );
	--ivs-text-2xl: clamp( 1.8rem, 1.1rem + 3vw, 3rem );

	/* A 4px base, so everything lands on one grid. */
	--ivs-1: 4px;
	--ivs-2: 8px;
	--ivs-3: 12px;
	--ivs-4: 16px;
	--ivs-5: 24px;
	--ivs-6: 32px;
	--ivs-7: 48px;
	--ivs-8: 64px;

	--ivs-radius: 10px;
	--ivs-radius-sm: 6px;
	--ivs-radius-lg: 16px;

	--ivs-shadow: 0 1px 2px rgba( 0, 0, 0, .4 ), 0 8px 24px rgba( 0, 0, 0, .25 );

	/* Wide: a data platform should reach the edges of a laptop. */
	--ivs-width: 1680px;
	--ivs-width-prose: 68ch;
	--ivs-gutter: clamp( 16px, 3vw, 44px );
	--ivs-header-h: 60px;

	color-scheme: dark;
	background: var(--ivs-bg);
	color: var(--ivs-ink);
	font-family: var(--ivs-font);
	font-size: var(--ivs-text-base);
	line-height: 1.6;
	margin: 0;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

html[data-ivs-theme="light"] .inveshares-app,
.inveshares-app[data-ivs-theme="light"] {
	--ivs-bg: #ffffff;
	--ivs-bg-deep: #f6f6f3;
	--ivs-surface: #f8f8f5;
	--ivs-surface-2: #f0f0eb;
	--ivs-line: #e0e0d8;
	--ivs-line-soft: #ebebe4;

	--ivs-ink: #17170f;
	--ivs-ink-soft: #5c5c52;
	--ivs-ink-faint: #86867a;

	/* Darkened from the banana yellow: #ffc93c on white is about 1.6:1, far
	   below the 4.5:1 that body text needs. */
	--ivs-accent: #8a5d00;
	--ivs-accent-soft: rgba( 138, 93, 0, .1 );
	--ivs-accent-ink: #ffffff;

	/*
	 * A muddy gold fill reads as a smudge on white. In light mode the primary
	 * button is near-black with white text - cleaner, far higher contrast, and
	 * it leaves the accent to do what an accent should: mark one thing.
	 */
	--ivs-link: #8a5d00;
	--ivs-btn-bg: #1a1a12;
	--ivs-btn-ink: #ffffff;

	--ivs-up: rgba( 26, 127, 55, .1 );
	--ivs-up-ink: #12703b;
	--ivs-down: rgba( 179, 45, 46, .08 );
	--ivs-down-ink: #b3282a;
	--ivs-warn-ink: #8a5d00;

	--ivs-shadow: 0 1px 2px rgba( 0, 0, 0, .06 ), 0 8px 24px rgba( 0, 0, 0, .06 );

	color-scheme: light;
}

/* Follow the system only until the reader has chosen for themselves. */
@media ( prefers-color-scheme: light ) {
	html:not([data-ivs-theme]) .inveshares-app:not([data-ivs-theme]) {
		--ivs-bg: #ffffff;
		--ivs-bg-deep: #f6f6f3;
		--ivs-surface: #f8f8f5;
		--ivs-surface-2: #f0f0eb;
		--ivs-line: #e0e0d8;
		--ivs-line-soft: #ebebe4;
		--ivs-ink: #17170f;
		--ivs-ink-soft: #5c5c52;
		--ivs-ink-faint: #86867a;
		--ivs-accent: #8a5d00;
		--ivs-accent-soft: rgba( 138, 93, 0, .1 );
		--ivs-accent-ink: #ffffff;
		--ivs-link: #8a5d00;
		--ivs-btn-bg: #1a1a12;
		--ivs-btn-ink: #ffffff;
		--ivs-up: rgba( 26, 127, 55, .1 );
		--ivs-up-ink: #12703b;
		--ivs-down: rgba( 179, 45, 46, .08 );
		--ivs-down-ink: #b3282a;
		--ivs-warn-ink: #8a5d00;

		color-scheme: light;
	}
}

.inveshares-app *,
.inveshares-app *::before,
.inveshares-app *::after {
	box-sizing: border-box;
}

/* =====================================================================
   2. Layout
   ===================================================================== */

.inveshares-site-inner {
	margin-inline: auto;
	max-width: var(--ivs-width);
	padding-inline: var(--ivs-gutter);
	width: 100%;
}

.inveshares-site-main {
	min-height: 62vh;
	padding-block: var(--ivs-5) var(--ivs-8);
}

/* Prose is constrained; data never is. Conflating the two is what made the
   previous build look like a blog with tables pasted into it. */
.inveshares-prose {
	max-width: var(--ivs-width-prose);
}

.inveshares-skip {
	background: var(--ivs-accent);
	border-radius: 0 0 var(--ivs-radius-sm) 0;
	color: var(--ivs-accent-ink);
	font-weight: 600;
	inset-inline-start: 0;
	padding: var(--ivs-3) var(--ivs-4);
	position: fixed;
	top: 0;
	transform: translateY( -110% );
	transition: transform .15s ease;
	z-index: 200;
}

.inveshares-skip:focus {
	transform: translateY( 0 );
}

/* =====================================================================
   3. Header
   ===================================================================== */

.inveshares-site-header {
	position: relative;
	z-index: 100;
}

/* Only the navigation bar pins. The strip beneath it scrolls away with the
   page: a disclaimer repeated in the footer does not need to occupy a line of
   every screen forever, and a two-row sticky header eats a phone viewport. */
.inveshares-site-bar {
	backdrop-filter: saturate( 160% ) blur( 12px );
	background: color-mix( in srgb, var(--ivs-bg) 92%, transparent );
	border-bottom: 1px solid var(--ivs-line);
	position: sticky;
	top: 0;
	z-index: 100;
}

/* Without color-mix the bar must be opaque, or the page scrolls visibly
   through the header. */
@supports not ( background: color-mix( in srgb, red 50%, blue ) ) {
	.inveshares-site-bar {
		background: var(--ivs-bg);
	}
}

.inveshares-site-bar .inveshares-site-inner {
	align-items: center;
	display: flex;
	gap: var(--ivs-5);
	min-height: var(--ivs-header-h);
}

.inveshares-brand {
	align-items: baseline;
	display: flex;
	flex-shrink: 0;
	gap: var(--ivs-2);
}

.inveshares-brand-name {
	align-items: center;
	color: var(--ivs-ink);
	display: inline-flex;
	font-size: var(--ivs-text-md);
	font-weight: 700;
	gap: var(--ivs-2);
	letter-spacing: -0.02em;
	text-decoration: none;
}

.inveshares-logo {
	color: var(--ivs-accent);
	display: block;
	flex-shrink: 0;
	/* An uploaded logo is any shape, so height is fixed and width follows. */
	max-width: 220px;
	height: 30px;
	width: auto;
	object-fit: contain;
}

.inveshares-brand-name b {
	color: var(--ivs-accent);
}

.inveshares-brand-tagline {
	border-inline-start: 1px solid var(--ivs-line);
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	padding-inline-start: var(--ivs-2);
}

@media ( max-width: 1120px ) {
	.inveshares-brand-tagline {
		display: none;
	}
}

@media ( max-width: 900px ) {
	.inveshares-brand-tagline {
		display: none;
	}
}

.inveshares-header-actions {
	align-items: center;
	display: flex;
	gap: var(--ivs-2);
	margin-inline-start: auto;
}

/* =====================================================================
   4. Navigation
   ===================================================================== */

.inveshares-site-nav {
	min-width: 0;
}

.inveshares-nav-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-1);
	list-style: none;
	margin: 0;
	padding: 0;
}

.inveshares-nav-list a {
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-ink-soft);
	display: block;
	font-size: var(--ivs-text-sm);
	font-weight: 500;
	padding: var(--ivs-2) var(--ivs-3);
	text-decoration: none;
	transition: background .12s ease, color .12s ease;
	white-space: nowrap;
}

.inveshares-nav-list a:hover {
	background: var(--ivs-surface);
	color: var(--ivs-ink);
}

/* The current page is marked by weight and background as well as colour, so it
   stays identifiable without colour perception. */
.inveshares-nav-list a[aria-current="page"] {
	background: var(--ivs-accent-soft);
	color: var(--ivs-accent);
	font-weight: 650;
}

.inveshares-nav-toggle,
.inveshares-theme-toggle {
	align-items: center;
	background: none;
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-ink-soft);
	cursor: pointer;
	display: inline-flex;
	height: 38px;
	justify-content: center;
	width: 40px;
}

.inveshares-nav-toggle:hover,
.inveshares-theme-toggle:hover {
	background: var(--ivs-surface);
	color: var(--ivs-ink);
}

.inveshares-nav-toggle svg,
.inveshares-theme-toggle svg {
	height: 18px;
	width: 18px;
}

.inveshares-nav-toggle {
	display: none;
}

/* Only one icon shows at a time; the other is hidden from everyone, assistive
   technology included. */
html[data-ivs-theme="light"] .inveshares-icon-sun,
.inveshares-app[data-ivs-theme="light"] .inveshares-icon-sun,
html:not([data-ivs-theme="light"]) .inveshares-app:not([data-ivs-theme="light"]) .inveshares-icon-moon {
	display: none;
}

/* =====================================================================
   5. Status strip
   ===================================================================== */

.inveshares-site-status {
	background: var(--ivs-bg-deep);
	border-bottom: 1px solid var(--ivs-line-soft);
	font-size: var(--ivs-text-xs);
}

.inveshares-site-status .inveshares-site-inner {
	align-items: center;
	color: var(--ivs-ink-faint);
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-4);
	justify-content: space-between;
	padding-block: var(--ivs-2);
}

.inveshares-site-status-note {
	font-style: italic;
}

.inveshares-live-dot {
	background: var(--ivs-up-ink);
	border-radius: 50%;
	display: inline-block;
	height: 7px;
	margin-inline-end: var(--ivs-2);
	width: 7px;
}

/* =====================================================================
   6. Typography
   ===================================================================== */

.inveshares-page-title {
	font-size: var(--ivs-text-xl);
	font-weight: 700;
	letter-spacing: -0.025em;
	line-height: 1.15;
	margin: 0 0 var(--ivs-3);
}

.inveshares-page-content h2,
.inveshares-fe h2 {
	font-size: var(--ivs-text-lg);
	font-weight: 650;
	letter-spacing: -0.015em;
	margin: var(--ivs-7) 0 var(--ivs-3);
}

.inveshares-page-content h3,
.inveshares-fe h3 {
	font-size: var(--ivs-text-md);
	font-weight: 600;
	margin: var(--ivs-6) 0 var(--ivs-3);
}

.inveshares-page-content > p,
.inveshares-page-content > ul,
.inveshares-page-content > ol {
	margin: 0 0 var(--ivs-4);
	max-width: var(--ivs-width-prose);
}

.inveshares-page-content ul,
.inveshares-page-content ol {
	padding-inline-start: var(--ivs-5);
}

/*
 * THE BUG THAT MADE PRIMARY BUTTONS INVISIBLE.
 *
 * At (0,2,0) this outranks `.inveshares-btn--primary` at (0,1,0), so it was
 * repainting every button's text to the accent colour. In light mode the
 * accent was also the button's background, giving brown text on a brown
 * button: a filled rectangle with nothing readable in it.
 *
 * The :not() excludes anything carrying a component class. A component decides
 * its own colours; this rule is only for ordinary prose links.
 */
.inveshares-page-content a:not([class*="inveshares-"]),
.inveshares-fe a:not([class*="inveshares-"]) {
	color: var(--ivs-link);
	text-decoration-thickness: 1px;
	text-underline-offset: 2px;
}

/* Data containers must escape the prose measure. */
.inveshares-page-content .inveshares-fe,
.inveshares-page-content .inveshares-fe-scroll,
.inveshares-page-content .inveshares-chart-wrap,
.inveshares-page-content .inveshares-fe-tiles {
	max-width: none;
	width: 100%;
}

.inveshares-eyebrow {
	color: var(--ivs-accent);
	font-size: var(--ivs-text-xs);
	font-weight: 650;
	letter-spacing: .09em;
	margin: 0 0 var(--ivs-2);
	text-transform: uppercase;
}

.inveshares-lede {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-md);
	max-width: var(--ivs-width-prose);
}

/* =====================================================================
   7. Tables
   ===================================================================== */

.inveshares-fe-scroll {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	max-height: 76vh;
	overflow: auto;
	overscroll-behavior: contain;
}

.inveshares-fe-table {
	border-collapse: separate;
	border-spacing: 0;
	font-size: var(--ivs-text-sm);
	width: 100%;
}

.inveshares-fe-table thead th {
	background: var(--ivs-surface-2);
	border-bottom: 1px solid var(--ivs-line);
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	font-weight: 600;
	letter-spacing: .05em;
	padding: var(--ivs-3);
	position: sticky;
	text-align: start;
	text-transform: uppercase;
	top: 0;
	white-space: nowrap;
	z-index: 2;
}

.inveshares-fe-table td {
	border-bottom: 1px solid var(--ivs-line-soft);
	padding: var(--ivs-3);
	vertical-align: middle;
}

.inveshares-fe-table tbody tr:last-child td {
	border-bottom: 0;
}

.inveshares-fe-table tbody tr:hover td {
	background: var(--ivs-surface-2);
}

/* Tabular figures so decimal points align down a column. Without this the eye
   cannot scan a price list at all. */
.inveshares-fe-num {
	font-family: var(--ivs-mono);
	font-variant-numeric: tabular-nums;
	text-align: end;
	white-space: nowrap;
}

.inveshares-fe-symbol {
	color: var(--ivs-ink);
	font-weight: 650;
	text-decoration: none;
}

.inveshares-fe-symbol:hover {
	color: var(--ivs-accent);
	text-decoration: underline;
}

.inveshares-fe-sub {
	color: var(--ivs-ink-faint);
	display: block;
	font-size: var(--ivs-text-xs);
	max-width: 26ch;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.inveshares-fe-positive {
	color: var(--ivs-up-ink);
}

.inveshares-fe-negative {
	color: var(--ivs-down-ink);
}

/* The arrow is the point: direction survives without colour perception. */
.inveshares-fe-positive::before {
	content: "\25B2\00a0";
	font-size: .68em;
}

.inveshares-fe-negative::before {
	content: "\25BC\00a0";
	font-size: .68em;
}

.inveshares-fe-rs {
	background: var(--ivs-surface-2);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	display: inline-block;
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xs);
	font-variant-numeric: tabular-nums;
	font-weight: 650;
	min-width: 34px;
	padding: 2px var(--ivs-2);
	text-align: center;
}

.inveshares-fe-rs[data-rs-band="high"] {
	background: var(--ivs-up);
	border-color: transparent;
	color: var(--ivs-up-ink);
}

.inveshares-fe-rs[data-rs-band="low"] {
	background: var(--ivs-down);
	border-color: transparent;
	color: var(--ivs-down-ink);
}

.inveshares-fe-unrated {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
}

/* =====================================================================
   8. Tiles, cards and pills
   ===================================================================== */

.inveshares-fe-tiles {
	display: grid;
	gap: var(--ivs-3);
	grid-template-columns: repeat( auto-fit, minmax( 150px, 1fr ) );
	margin-block: 0 var(--ivs-4);
}

.inveshares-fe-tile {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	display: flex;
	flex-direction: column;
	gap: var(--ivs-1);
	padding: var(--ivs-4);
}

.inveshares-fe-tile-label {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.inveshares-fe-tile-value {
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-lg);
	font-variant-numeric: tabular-nums;
	font-weight: 650;
	line-height: 1.1;
}

.inveshares-fe-tile-note {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
}

.inveshares-pill {
	background: var(--ivs-surface-2);
	border: 1px solid var(--ivs-line);
	border-radius: 999px;
	color: var(--ivs-ink-soft);
	display: inline-flex;
	font-size: var(--ivs-text-xs);
	font-weight: 600;
	gap: var(--ivs-2);
	padding: 3px var(--ivs-3);
	white-space: nowrap;
}

.inveshares-pill[data-state="ready"],
.inveshares-pill[data-state="fresh_breakout"] {
	background: var(--ivs-accent-soft);
	border-color: transparent;
	color: var(--ivs-accent);
}

.inveshares-pill[data-state="climbing"] {
	background: var(--ivs-up);
	border-color: transparent;
	color: var(--ivs-up-ink);
}

.inveshares-pill[data-state="failed"] {
	background: var(--ivs-down);
	border-color: transparent;
	color: var(--ivs-down-ink);
}

/* =====================================================================
   9. Buttons
   ===================================================================== */

.inveshares-btn {
	align-items: center;
	background: var(--ivs-surface-2);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-ink);
	cursor: pointer;
	display: inline-flex;
	font-family: inherit;
	font-size: var(--ivs-text-sm);
	font-weight: 600;
	gap: var(--ivs-2);
	/* 40px: comfortably above the minimum target size, close to a thumb target
	   on touch. */
	min-height: 40px;
	padding: 0 var(--ivs-4);
	text-decoration: none;
	transition: background .12s ease, border-color .12s ease;
}

.inveshares-btn:hover {
	background: var(--ivs-line);
	color: var(--ivs-ink);
}

.inveshares-btn--primary {
	background: var(--ivs-btn-bg);
	border-color: var(--ivs-btn-bg);
	color: var(--ivs-btn-ink);
}

/* Stated again at higher specificity so no ancestor link rule can reach it. */
.inveshares-app a.inveshares-btn--primary,
.inveshares-app a.inveshares-btn--primary:hover,
.inveshares-app a.inveshares-btn--primary:focus {
	color: var(--ivs-btn-ink);
}

.inveshares-app a.inveshares-btn {
	color: var(--ivs-ink);
}

.inveshares-btn--ghost {
	background: none;
}

/* =====================================================================
   10. Empty, loading and notice states
   ===================================================================== */

.inveshares-fe-empty {
	background: var(--ivs-surface);
	border: 1px dashed var(--ivs-line);
	border-radius: var(--ivs-radius);
	color: var(--ivs-ink-soft);
	padding: var(--ivs-6) var(--ivs-5);
	text-align: center;
}

.inveshares-fe-empty p {
	margin: 0 auto var(--ivs-2);
	max-width: 56ch;
}

.inveshares-fe-empty p:last-child {
	margin-bottom: 0;
}

.inveshares-fe-note {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	margin: 0 0 var(--ivs-4);
	max-width: var(--ivs-width-prose);
}

.inveshares-fe-disclaimer {
	border-top: 1px solid var(--ivs-line-soft);
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	line-height: 1.65;
	margin-top: var(--ivs-7);
	max-width: 80ch;
	padding-top: var(--ivs-4);
}

.inveshares-fe-more {
	align-items: center;
	color: var(--ivs-accent);
	display: inline-flex;
	font-size: var(--ivs-text-sm);
	font-weight: 650;
	gap: var(--ivs-2);
	text-decoration: none;
}

.inveshares-fe-more:hover {
	text-decoration: underline;
}

/* A skeleton for anything fetched after first paint. */
.inveshares-skeleton {
	animation: inveshares-shimmer 1.4s ease infinite;
	background: linear-gradient(
		90deg,
		var(--ivs-surface) 25%,
		var(--ivs-surface-2) 37%,
		var(--ivs-surface) 63%
	);
	background-size: 400% 100%;
	border-radius: var(--ivs-radius-sm);
}

@keyframes inveshares-shimmer {
	0% { background-position: 100% 50%; }
	100% { background-position: 0 50%; }
}

/* =====================================================================
   11. Post list
   ===================================================================== */

.inveshares-post-list {
	display: grid;
	gap: var(--ivs-5);
	grid-template-columns: repeat( auto-fill, minmax( 300px, 1fr ) );
}

.inveshares-post-card {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	transition: border-color .12s ease, transform .12s ease;
}

.inveshares-post-card:hover {
	border-color: var(--ivs-accent);
	transform: translateY( -2px );
}

.inveshares-post-thumb img {
	aspect-ratio: 16 / 9;
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}

.inveshares-post-body {
	display: flex;
	flex: 1;
	flex-direction: column;
	padding: var(--ivs-4) var(--ivs-5) var(--ivs-5);
}

.inveshares-post-title {
	font-size: var(--ivs-text-md);
	font-weight: 650;
	line-height: 1.3;
	margin: 0 0 var(--ivs-2);
}

.inveshares-post-title a {
	color: var(--ivs-ink);
	text-decoration: none;
}

.inveshares-post-title a:hover {
	color: var(--ivs-accent);
}

.inveshares-post-meta {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	margin: 0 0 var(--ivs-3);
}

.inveshares-post-excerpt {
	color: var(--ivs-ink-soft);
	flex: 1;
	font-size: var(--ivs-text-sm);
}

.inveshares-post-more {
	color: var(--ivs-accent);
	font-size: var(--ivs-text-sm);
	font-weight: 650;
	margin-top: var(--ivs-3);
	text-decoration: none;
}

.inveshares-post-pagination {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-2);
	grid-column: 1 / -1;
	margin-top: var(--ivs-5);
}

.inveshares-post-pagination .page-numbers {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-ink-soft);
	display: inline-block;
	min-height: 38px;
	min-width: 38px;
	padding: var(--ivs-2) var(--ivs-3);
	text-align: center;
	text-decoration: none;
}

.inveshares-post-pagination .page-numbers.current {
	background: var(--ivs-accent);
	border-color: var(--ivs-accent);
	color: var(--ivs-accent-ink);
	font-weight: 650;
}

/* =====================================================================
   12. Footer
   ===================================================================== */

.inveshares-site-footer {
	background: var(--ivs-bg-deep);
	border-top: 1px solid var(--ivs-line);
	margin-top: var(--ivs-8);
	padding-block: var(--ivs-7);
}

.inveshares-footer-nav {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-3) var(--ivs-5);
	margin-bottom: var(--ivs-5);
}

.inveshares-footer-nav a {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	text-decoration: none;
}

.inveshares-footer-nav a:hover {
	color: var(--ivs-accent);
}

.inveshares-footer-disclaimer {
	border-top: 1px solid var(--ivs-line-soft);
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	line-height: 1.65;
	margin: 0 0 var(--ivs-3);
	max-width: 88ch;
	padding-top: var(--ivs-5);
}

.inveshares-footer-credit {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	margin: 0;
}

/* =====================================================================
   13. Responsive
   ===================================================================== */

@media ( max-width: 860px ) {
	.inveshares-nav-toggle {
		display: inline-flex;
	}

	.inveshares-site-bar .inveshares-site-inner {
		flex-wrap: wrap;
		gap: var(--ivs-3);
	}

	.inveshares-site-nav {
		flex-basis: 100%;
		order: 4;
	}

	.inveshares-nav-list {
		display: none;
		flex-direction: column;
		gap: 0;
		padding-bottom: var(--ivs-3);
	}

	.inveshares-nav-list.is-open {
		display: flex;
	}

	.inveshares-nav-list a {
		border-bottom: 1px solid var(--ivs-line-soft);
		border-radius: 0;
		padding: var(--ivs-3) var(--ivs-2);
	}

	.inveshares-fe-scroll {
		max-height: none;
	}

	.inveshares-fe-tiles {
		grid-template-columns: repeat( auto-fit, minmax( 128px, 1fr ) );
	}
}

@media ( max-width: 560px ) {
	.inveshares-fe-table {
		font-size: var(--ivs-text-xs);
	}

	.inveshares-fe-table th,
	.inveshares-fe-table td {
		padding: var(--ivs-2);
	}

	.inveshares-post-list {
		grid-template-columns: 1fr;
	}
}

/* =====================================================================
   14. Accessibility
   ===================================================================== */

/* :focus-visible only, so a mouse click leaves no ring but every keyboard user
   gets one. */
.inveshares-app :focus-visible {
	border-radius: var(--ivs-radius-sm);
	outline: 2px solid var(--ivs-accent);
	outline-offset: 2px;
}

.inveshares-app .screen-reader-text {
	border: 0;
	clip-path: inset( 50% );
	height: 1px;
	margin: -1px;
	overflow: hidden;
	padding: 0;
	position: absolute;
	white-space: nowrap;
	width: 1px;
}

/* Honoured globally rather than per component. */
@media ( prefers-reduced-motion: reduce ) {
	.inveshares-app *,
	.inveshares-app *::before,
	.inveshares-app *::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
		transition-duration: .001ms !important;
	}
}

/* Anyone forcing high contrast has said the palette does not work for them;
   give borders back rather than fighting it. */
@media ( forced-colors: active ) {
	.inveshares-fe-tile,
	.inveshares-post-card,
	.inveshares-fe-scroll,
	.inveshares-btn {
		border: 1px solid CanvasText;
	}
}

/* =====================================================================
   15. Print
   ===================================================================== */

@media print {
	.inveshares-app {
		background: #fff;
		color: #000;
	}

	.inveshares-site-header,
	.inveshares-site-footer,
	.inveshares-nav-toggle,
	.inveshares-theme-toggle,
	.inveshares-skip {
		display: none;
	}

	.inveshares-fe-scroll {
		max-height: none;
		overflow: visible;
	}
}

/* =====================================================================
   16. Chart
   =====================================================================

   These styles carry the Phase 9 server-rendered SVG. Pass 2 replaces that
   renderer with an interactive chart; the tokens below are what the new one
   will theme against, so they are written against variables rather than
   literal colours.
   ===================================================================== */

.inveshares-chart-wrap {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	margin: 0 0 var(--ivs-5);
	padding: var(--ivs-3) var(--ivs-4) var(--ivs-2);
}

.inveshares-chart {
	display: block;
	height: clamp( 300px, 46vh, 560px );
	width: 100%;
}

.inveshares-chart-grid line {
	stroke: var(--ivs-line);
	stroke-width: 1;
	vector-effect: non-scaling-stroke;
}

.inveshares-chart-axis text {
	fill: var(--ivs-ink-faint);
	font-family: var(--ivs-mono);
	font-size: 11px;
}

.inveshares-chart-dates text {
	font-size: 10.5px;
}

.inveshares-chart-candles line,
.inveshares-chart-candles rect {
	vector-effect: non-scaling-stroke;
}

.inveshares-chart-candles .up {
	fill: var(--ivs-up-ink);
	stroke: var(--ivs-up-ink);
}

.inveshares-chart-candles .down {
	fill: var(--ivs-down-ink);
	stroke: var(--ivs-down-ink);
}

.inveshares-chart-volume .up {
	fill: var(--ivs-up-ink);
	opacity: .3;
}

.inveshares-chart-volume .down {
	fill: var(--ivs-down-ink);
	opacity: .3;
}

.inveshares-chart-ma polyline {
	fill: none;
	stroke-width: 1.5;
	vector-effect: non-scaling-stroke;
}

/* Three distinguishable hues that are not red or green, so the averages never
   compete with the up/down signal. */
.inveshares-chart-ma .ma-50 {
	stroke: #5aa9ff;
}

.inveshares-chart-ma .ma-150 {
	stroke: #d68bff;
}

.inveshares-chart-ma .ma-200 {
	stroke: #7de0e0;
}

.inveshares-chart-base {
	fill: var(--ivs-accent);
	opacity: .08;
}

.inveshares-chart-pivot line {
	stroke: var(--ivs-accent);
	stroke-dasharray: 5 4;
	stroke-width: 1.5;
	vector-effect: non-scaling-stroke;
}

.inveshares-chart-pivot text {
	fill: var(--ivs-accent);
	font-family: var(--ivs-mono);
	font-size: 11px;
	font-weight: 650;
}

.inveshares-chart-breakouts .ok {
	fill: var(--ivs-up-ink);
}

.inveshares-chart-breakouts .failed {
	fill: var(--ivs-down-ink);
}

.inveshares-chart-legend {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-4);
	padding: var(--ivs-2) 0 0;
}

.inveshares-legend-item {
	align-items: center;
	color: var(--ivs-ink-faint);
	display: inline-flex;
	font-size: var(--ivs-text-xs);
	gap: var(--ivs-2);
}

.inveshares-legend-item i {
	border-radius: 2px;
	display: inline-block;
	height: 3px;
	width: 16px;
}

.inveshares-legend-item .ma-50 { background: #5aa9ff; }
.inveshares-legend-item .ma-150 { background: #d68bff; }
.inveshares-legend-item .ma-200 { background: #7de0e0; }

.inveshares-legend-item .pivot {
	background: repeating-linear-gradient(
		90deg, var(--ivs-accent) 0 5px, transparent 5px 9px
	);
}

.inveshares-legend-item .base {
	background: var(--ivs-accent);
	height: 10px;
	opacity: .3;
	width: 14px;
}

.inveshares-legend-item .breakout {
	background: var(--ivs-up-ink);
	clip-path: polygon( 50% 0, 100% 100%, 0 100% );
	height: 9px;
	width: 10px;
}

/* =====================================================================
   17. Stock page
   ===================================================================== */

.inveshares-fe-stock {
	width: 100%;
}

.inveshares-stock-head {
	align-items: flex-end;
	border-bottom: 1px solid var(--ivs-line);
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-4) var(--ivs-5);
	justify-content: space-between;
	margin-bottom: var(--ivs-5);
	padding-bottom: var(--ivs-4);
}

.inveshares-stock-ident h2 {
	font-size: var(--ivs-text-xl);
	font-weight: 700;
	letter-spacing: -0.025em;
	margin: 0;
}

.inveshares-stock-ident p {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	margin: var(--ivs-1) 0 0;
}

.inveshares-stock-price {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-3);
}

.inveshares-stock-last {
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xl);
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	letter-spacing: -0.02em;
}

.inveshares-stock-change {
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-md);
	font-variant-numeric: tabular-nums;
	font-weight: 650;
}

/* Auto-fitting rather than a fixed column count, so the grid uses the whole
   width of a laptop instead of leaving half the screen empty. */
.inveshares-figures {
	background: var(--ivs-line);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	display: grid;
	gap: 1px;
	grid-template-columns: repeat( auto-fit, minmax( 136px, 1fr ) );
	margin: 0 0 var(--ivs-6);
	overflow: hidden;
}

.inveshares-figure {
	background: var(--ivs-surface);
	display: flex;
	flex-direction: column;
	gap: var(--ivs-1);
	padding: var(--ivs-3) var(--ivs-4);
}

.inveshares-figure-label {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	font-weight: 600;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.inveshares-figure-value {
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-base);
	font-variant-numeric: tabular-nums;
	font-weight: 650;
}

@media ( max-width: 1024px ) {
	.inveshares-chart {
		height: 300px;
	}

	.inveshares-figures {
		grid-template-columns: repeat( auto-fit, minmax( 112px, 1fr ) );
	}
}

@media ( max-width: 560px ) {
	.inveshares-chart {
		height: 240px;
	}

	.inveshares-stock-head {
		align-items: flex-start;
		flex-direction: column;
		gap: var(--ivs-2);
	}
}

/* =====================================================================
   18. Home page
   =====================================================================

   The most-viewed page on the site, and the one a visitor decides on in about
   a second. It gets its own vertical rhythm and its own components rather than
   reusing the table styling, because a landing page and a data screen are not
   the same document.
   ===================================================================== */

.inveshares-home {
	display: flex;
	flex-direction: column;
	gap: var(--ivs-7);
}

/* --- Hero --- */

.inveshares-hero {
	border-bottom: 1px solid var(--ivs-line);
	/* Was --ivs-8 (64px) below, on top of the container's own 64px gap: 128px
	   of nothing between the hero and the next heading. */
	padding-block: var(--ivs-5) var(--ivs-6);
	position: relative;
}

/*
 * The accent wash that used to sit here was removed. A large radial gradient in
 * a saturated yellow reads as a stain rather than depth, and it fought every
 * card and button placed on top of it. The hero carries itself on type and
 * spacing instead.
 */

.inveshares-hero-body {
	position: relative;
	z-index: 1;
}

.inveshares-hero-title {
	font-size: var(--ivs-text-2xl);
	font-weight: 750;
	letter-spacing: -0.035em;
	line-height: 1.05;
	margin: 0 0 var(--ivs-4);
	max-width: 18ch;
}

.inveshares-hero-lede {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-md);
	line-height: 1.6;
	margin: 0 0 var(--ivs-5);
	max-width: 58ch;
}

.inveshares-hero-actions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-3);
	margin-bottom: var(--ivs-5);
}

.inveshares-hero-meta {
	align-items: center;
	color: var(--ivs-ink-faint);
	display: flex;
	font-size: var(--ivs-text-xs);
	margin: 0;
}

/* --- Sections --- */

.inveshares-section-title {
	font-size: var(--ivs-text-lg);
	font-weight: 700;
	letter-spacing: -0.02em;
	margin: 0 0 var(--ivs-3);
}

/* The parent supplies the spacing between sections via `gap`. Without this the
   heading's own margin stacks on top of it, which is what produced a large
   emptiness above one heading and none above the next. */
.inveshares-home .inveshares-section > h2:first-child,
.inveshares-method .inveshares-section > h2:first-child {
	margin-top: 0;
}

.inveshares-section > .inveshares-fe-tiles:last-child,
.inveshares-section > .inveshares-cards:last-child,
.inveshares-section > .inveshares-steps:last-child {
	margin-bottom: 0;
}

.inveshares-section-lede {
	color: var(--ivs-ink-soft);
	margin: 0 0 var(--ivs-5);
	max-width: 68ch;
}

.inveshares-section > h3:first-child {
	margin-top: 0;
}

/* --- Screen cards --- */

.inveshares-cards {
	display: grid;
	gap: var(--ivs-3);
	grid-template-columns: repeat( auto-fit, minmax( 230px, 1fr ) );
}

.inveshares-card {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	color: inherit;
	display: flex;
	flex-direction: column;
	gap: var(--ivs-1);
	padding: var(--ivs-5);
	text-decoration: none;
	transition: border-color .14s ease, transform .14s ease;
}

a.inveshares-card:hover {
	border-color: var(--ivs-accent);
	transform: translateY( -2px );
}

.inveshares-card-count {
	color: var(--ivs-accent);
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xl);
	font-variant-numeric: tabular-nums;
	/* Turn off the slashed zero. At display size a struck-through 0 reads as an
	   error state rather than the number nought. */
	font-feature-settings: "zero" 0;
	font-weight: 700;
	letter-spacing: -0.03em;
	line-height: 1;
}

/* A count of zero is a real answer, but it should not shout. */
.inveshares-card-count[data-zero="true"] {
	color: var(--ivs-ink-faint);
}

.inveshares-card-name {
	font-size: var(--ivs-text-md);
	font-weight: 650;
}

.inveshares-card-desc {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	line-height: 1.55;
}

/* --- Steps --- */

.inveshares-steps {
	counter-reset: none;
	display: grid;
	gap: var(--ivs-3);
	grid-template-columns: repeat( auto-fit, minmax( 190px, 1fr ) );
	list-style: none;
	margin: 0;
	padding: 0;
}

.inveshares-step {
	align-items: flex-start;
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	display: flex;
	gap: var(--ivs-3);
	/* Was --ivs-4 (16px) on all sides, which left the text almost touching the
	   card edge once the number sat beside it. */
	padding: var(--ivs-5);
}

.inveshares-step-num {
	align-items: center;
	background: var(--ivs-accent);
	border-radius: 50%;
	color: var(--ivs-accent-ink);
	display: inline-flex;
	flex-shrink: 0;
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xs);
	font-weight: 700;
	height: 24px;
	justify-content: center;
	width: 24px;
}

.inveshares-step-body {
	display: flex;
	flex-direction: column;
	gap: var(--ivs-1);
	min-width: 0;
}

.inveshares-step-body strong {
	font-size: var(--ivs-text-sm);
	font-weight: 650;
}

.inveshares-step-body span {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	line-height: 1.55;
}

/* --- Honesty panel --- */

.inveshares-honesty {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-left: 3px solid var(--ivs-accent);
	border-radius: var(--ivs-radius);
	padding: var(--ivs-6);
}

.inveshares-honesty-figure {
	font-size: var(--ivs-text-md);
	margin: 0 0 var(--ivs-4);
	max-width: 62ch;
}

.inveshares-honesty-figure strong {
	color: var(--ivs-accent);
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xl);
	font-variant-numeric: tabular-nums;
	font-weight: 700;
}

.inveshares-honesty .inveshares-section-lede:last-child {
	margin-bottom: 0;
}

/* --- Home responsive --- */

@media ( max-width: 860px ) {
	.inveshares-home {
		gap: var(--ivs-7);
	}

	.inveshares-honesty {
		padding: var(--ivs-5);
	}
}

@media ( max-width: 560px ) {
	.inveshares-hero-title {
		max-width: none;
	}

	.inveshares-hero-actions .inveshares-btn {
		flex: 1 1 auto;
		justify-content: center;
	}

	.inveshares-cards,
	.inveshares-steps {
		grid-template-columns: 1fr;
	}
}

/* =====================================================================
   19. Interactive chart
   ===================================================================== */

.inveshares-chart-wrap {
	position: relative;
}

/* The live host has no height until the canvas mounts, so the wrapper does not
   reserve empty space when the script never runs. */
.inveshares-chart-live {
	display: none;
	height: clamp( 300px, 46vh, 560px );
	position: relative;
	width: 100%;
}

.inveshares-chart-wrap.is-interactive .inveshares-chart-live {
	display: block;
}

.inveshares-chart-canvas {
	cursor: crosshair;
	display: block;
	/* Vertical page scrolling still works over the chart on touch; only the
	   horizontal axis is claimed for panning. */
	touch-action: pan-y;
	width: 100%;
}

.inveshares-chart-canvas.is-dragging {
	cursor: grabbing;
}

.inveshares-chart-tip {
	background: var(--ivs-surface-2);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	box-shadow: var(--ivs-shadow);
	display: none;
	flex-direction: column;
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xs);
	font-variant-numeric: tabular-nums;
	gap: 1px;
	/* Above the canvas but never intercepting the pointer, or moving onto the
	   tooltip would dismiss the very reading it is showing. */
	pointer-events: none;
	padding: var(--ivs-2) var(--ivs-3);
	position: absolute;
	top: var(--ivs-3);
	white-space: nowrap;
	z-index: 3;
}

.inveshares-chart-tip.is-visible {
	display: flex;
}

.inveshares-chart-tip b {
	color: var(--ivs-ink);
	font-weight: 650;
	margin-bottom: 2px;
}

.inveshares-chart-tip span {
	color: var(--ivs-ink-faint);
}

.inveshares-chart-tip i {
	color: var(--ivs-ink);
	font-style: normal;
}

.inveshares-chart-tip .is-up {
	color: var(--ivs-up-ink);
}

.inveshares-chart-tip .is-down {
	color: var(--ivs-down-ink);
}

.inveshares-chart-help {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	margin: var(--ivs-2) 0 0;
}

/* The hint describes mouse and keyboard gestures that do not exist until the
   canvas is live. */
.inveshares-chart-wrap:not(.is-interactive) .inveshares-chart-help {
	display: none;
}

@media ( max-width: 1024px ) {
	.inveshares-chart-live {
		height: 300px;
	}
}

@media ( max-width: 560px ) {
	.inveshares-chart-live {
		height: 240px;
	}

	.inveshares-chart-tip {
		font-size: 10px;
	}
}

/* =====================================================================
   20. Method page
   ===================================================================== */

.inveshares-method {
	display: flex;
	flex-direction: column;
	gap: var(--ivs-7);
}

.inveshares-method-head {
	border-bottom: 1px solid var(--ivs-line);
	padding-bottom: var(--ivs-5);
}

.inveshares-toc ul {
	display: flex;
	flex-wrap: wrap;
	gap: var(--ivs-2);
	list-style: none;
	margin: 0;
	padding: 0;
}

.inveshares-toc a {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: 999px;
	color: var(--ivs-ink-soft);
	display: inline-block;
	font-size: var(--ivs-text-sm);
	padding: var(--ivs-2) var(--ivs-4);
	text-decoration: none;
}

.inveshares-toc a:hover {
	border-color: var(--ivs-accent);
	color: var(--ivs-accent);
}

/* Anchored sections must clear the sticky header, or a jump link lands with
   the heading hidden behind it. */
.inveshares-method .inveshares-section {
	scroll-margin-top: calc( var(--ivs-header-h) + var(--ivs-5) );
}

.inveshares-steps--stacked {
	grid-template-columns: 1fr;
}

/* --- Split lists --- */

.inveshares-split {
	display: grid;
	gap: var(--ivs-4);
	grid-template-columns: repeat( auto-fit, minmax( 300px, 1fr ) );
	margin-bottom: var(--ivs-5);
}

.inveshares-split-col {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	padding: var(--ivs-5);
}

.inveshares-split-col h3 {
	font-size: var(--ivs-text-base);
	margin: 0 0 var(--ivs-3);
}

.inveshares-split-col ul {
	color: var(--ivs-ink-soft);
	display: flex;
	flex-direction: column;
	font-size: var(--ivs-text-sm);
	gap: var(--ivs-2);
	list-style: none;
	margin: 0;
	padding: 0;
}

.inveshares-split-col li {
	padding-inline-start: var(--ivs-5);
	position: relative;
}

/* A glyph as well as a border colour, so the two columns are distinguishable
   without colour perception. */
.inveshares-split-col--good {
	border-left: 3px solid var(--ivs-up-ink);
}

.inveshares-split-col--good li::before {
	color: var(--ivs-up-ink);
	content: "\2713";
	inset-inline-start: 0;
	position: absolute;
}

.inveshares-split-col--bad {
	border-left: 3px solid var(--ivs-warn-ink);
}

.inveshares-split-col--bad li::before {
	color: var(--ivs-warn-ink);
	content: "\0021";
	font-weight: 700;
	inset-inline-start: 4px;
	position: absolute;
}

/* --- Callout --- */

.inveshares-callout {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-left: 3px solid var(--ivs-accent);
	border-radius: var(--ivs-radius);
	margin-bottom: var(--ivs-5);
	padding: var(--ivs-5);
}

.inveshares-callout p {
	color: var(--ivs-ink-soft);
	margin: 0 0 var(--ivs-2);
	max-width: 80ch;
}

.inveshares-callout p:last-child {
	margin-bottom: 0;
}

.inveshares-callout strong {
	color: var(--ivs-ink);
}

.inveshares-callout--warn {
	border-left-color: var(--ivs-warn-ink);
}

/* --- FAQ --- */

.inveshares-faq {
	display: flex;
	flex-direction: column;
	gap: var(--ivs-2);
}

.inveshares-faq-item {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	padding: var(--ivs-4) var(--ivs-5);
}

.inveshares-faq-item summary {
	cursor: pointer;
	font-weight: 650;
	list-style: none;
	padding-inline-end: var(--ivs-5);
	position: relative;
}

.inveshares-faq-item summary::-webkit-details-marker {
	display: none;
}

.inveshares-faq-item summary::after {
	color: var(--ivs-accent);
	content: "+";
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-md);
	inset-inline-end: 0;
	position: absolute;
	top: -2px;
}

.inveshares-faq-item[open] summary::after {
	content: "\2212";
}

.inveshares-faq-item p {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	margin: var(--ivs-3) 0 0;
	max-width: 80ch;
}

/* =====================================================================
   21. Search
   ===================================================================== */

.inveshares-search {
	flex: 1 1 200px;
	max-width: 320px;
	min-width: 0;
	position: relative;
}

.inveshares-search-form {
	position: relative;
}

.inveshares-search-icon {
	color: var(--ivs-ink-faint);
	height: 16px;
	inset-inline-start: var(--ivs-3);
	pointer-events: none;
	position: absolute;
	top: 50%;
	transform: translateY( -50% );
	width: 16px;
}

.inveshares-search-input {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-ink);
	font-size: var(--ivs-text-sm);
	min-height: 38px;
	padding-inline: calc( var(--ivs-3) + 22px ) var(--ivs-3);
	width: 100%;
}

.inveshares-search-input:focus {
	border-color: var(--ivs-accent);
}

/* The browser's own clear button is styled per-engine and cannot be themed;
   removing it leaves Escape as the single, documented way to clear. */
.inveshares-search-input::-webkit-search-cancel-button {
	-webkit-appearance: none;
	appearance: none;
}

.inveshares-search-list {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	box-shadow: var(--ivs-shadow);
	inset-inline: 0;
	list-style: none;
	margin: var(--ivs-1) 0 0;
	max-height: 60vh;
	overflow-y: auto;
	padding: var(--ivs-1);
	position: absolute;
	top: 100%;
	z-index: 120;
}

.inveshares-search-option {
	align-items: baseline;
	border-radius: var(--ivs-radius-sm);
	cursor: pointer;
	display: flex;
	gap: var(--ivs-3);
	padding: var(--ivs-2) var(--ivs-3);
}

.inveshares-search-option.is-active,
.inveshares-search-option:hover {
	background: var(--ivs-accent-soft);
}

.inveshares-search-symbol {
	color: var(--ivs-ink);
	flex-shrink: 0;
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-sm);
	font-weight: 650;
}

.inveshares-search-name {
	color: var(--ivs-ink-faint);
	font-size: var(--ivs-text-xs);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* =====================================================================
   22. Screen picker
   ===================================================================== */

.inveshares-screens {
	display: flex;
	flex-direction: column;
	gap: var(--ivs-4);
}

.inveshares-picker {
	display: grid;
	gap: var(--ivs-2);
	grid-template-columns: repeat( auto-fit, minmax( 130px, 1fr ) );
}

.inveshares-picker-item {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	color: inherit;
	display: flex;
	flex-direction: column;
	gap: 2px;
	padding: var(--ivs-3) var(--ivs-4);
	text-decoration: none;
	transition: border-color .12s ease;
}

.inveshares-picker-item:hover {
	border-color: var(--ivs-accent);
}

/* The active screen is marked by border weight and background as well as
   colour, so it is identifiable without colour perception. */
.inveshares-picker-item.is-active {
	background: var(--ivs-accent-soft);
	border-color: var(--ivs-accent);
	box-shadow: inset 0 0 0 1px var(--ivs-accent);
}

.inveshares-picker-count {
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-lg);
	font-variant-numeric: tabular-nums;
	font-feature-settings: "zero" 0;
	font-weight: 700;
	line-height: 1.1;
}

.inveshares-picker-item.is-active .inveshares-picker-count {
	color: var(--ivs-accent);
}

.inveshares-picker-label {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
	font-weight: 600;
}

.inveshares-screen-panel h3 {
	margin-top: 0;
}

/* --- Criteria disclosure --- */

.inveshares-criteria {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius);
	margin-bottom: var(--ivs-4);
	padding: var(--ivs-3) var(--ivs-4);
}

.inveshares-criteria summary {
	color: var(--ivs-ink-soft);
	cursor: pointer;
	font-size: var(--ivs-text-sm);
	font-weight: 600;
}

.inveshares-criteria dl {
	display: grid;
	gap: var(--ivs-2) var(--ivs-5);
	grid-template-columns: repeat( auto-fit, minmax( 220px, 1fr ) );
	margin: var(--ivs-3) 0 0;
}

.inveshares-criteria dl > div {
	border-bottom: 1px solid var(--ivs-line-soft);
	display: flex;
	gap: var(--ivs-3);
	justify-content: space-between;
	padding-bottom: var(--ivs-2);
}

.inveshares-criteria dt {
	color: var(--ivs-ink-soft);
	font-size: var(--ivs-text-sm);
}

.inveshares-criteria dd {
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-sm);
	font-weight: 600;
	margin: 0;
	text-align: end;
}

.inveshares-footprint {
	background: var(--ivs-surface-2);
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-accent);
	font-family: var(--ivs-mono);
	font-size: var(--ivs-text-xs);
	padding: 2px var(--ivs-2);
	white-space: nowrap;
}

/* =====================================================================
   23. Tables become cards on a phone
   =====================================================================

   A seven-column table on a 380px screen is either unreadable or forces a
   sideways scroll. Below the breakpoint each row becomes a card and every cell
   carries its own label from the data-label attribute, so no meaning is lost.
   ===================================================================== */

@media ( max-width: 640px ) {
	.inveshares-fe-table--cards thead {
		border: 0;
		clip-path: inset( 50% );
		height: 1px;
		overflow: hidden;
		position: absolute;
		width: 1px;
	}

	.inveshares-fe-table--cards,
	.inveshares-fe-table--cards tbody,
	.inveshares-fe-table--cards tr,
	.inveshares-fe-table--cards td {
		display: block;
		width: 100%;
	}

	.inveshares-fe-table--cards tr {
		border-bottom: 1px solid var(--ivs-line);
		padding: var(--ivs-3) var(--ivs-4);
	}

	.inveshares-fe-table--cards tr:last-child {
		border-bottom: 0;
	}

	.inveshares-fe-table--cards td {
		border: 0;
		display: flex;
		gap: var(--ivs-3);
		justify-content: space-between;
		padding: var(--ivs-1) 0;
		text-align: end;
	}

	.inveshares-fe-table--cards td::before {
		color: var(--ivs-ink-faint);
		content: attr( data-label );
		font-size: var(--ivs-text-xs);
		font-weight: 600;
		letter-spacing: .04em;
		text-align: start;
		text-transform: uppercase;
	}

	/* The symbol is the card's heading, so it spans the row rather than
	   sitting opposite a label. */
	.inveshares-fe-table--cards td:first-child {
		border-bottom: 1px solid var(--ivs-line-soft);
		display: block;
		margin-bottom: var(--ivs-2);
		padding-bottom: var(--ivs-2);
		text-align: start;
	}

	.inveshares-fe-table--cards td:first-child::before {
		display: none;
	}

	.inveshares-search {
		max-width: none;
		order: 5;
		flex-basis: 100%;
	}
}

/* =====================================================================
   24. Field components
   =====================================================================

   Form controls declare every visual property. Nothing here inherits from the
   theme, and nothing is styled via a bare element selector under a wrapper.
   ===================================================================== */

.inveshares-app .inveshares-field {
	background-color: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-radius: var(--ivs-radius-sm);
	color: var(--ivs-ink);
	font-size: var(--ivs-text-sm);
	line-height: 1.4;
	max-width: 100%;
	min-height: 40px;
	padding: 0 var(--ivs-3);
	width: 100%;
}

.inveshares-app .inveshares-field:focus {
	border-color: var(--ivs-accent);
	outline: 2px solid var(--ivs-accent);
	outline-offset: 1px;
}

.inveshares-app .inveshares-field:disabled {
	cursor: not-allowed;
	opacity: .55;
}

.inveshares-app .inveshares-field::placeholder {
	color: var(--ivs-ink-faint);
	opacity: 1;
}

.inveshares-app .inveshares-label {
	color: var(--ivs-ink-soft);
	display: block;
	font-size: var(--ivs-text-xs);
	font-weight: 600;
	letter-spacing: .04em;
	margin-bottom: var(--ivs-1);
	text-transform: uppercase;
}

/* =====================================================================
   25. Button states
   =====================================================================

   Every state is declared. A theme cannot leave a control in an undefined
   appearance, because there is no undefined state left to inherit.
   ===================================================================== */

.inveshares-app .inveshares-btn {
	border-style: solid;
	border-width: 1px;
	line-height: 1.2;
	opacity: 1;
	text-decoration: none;
}

.inveshares-app .inveshares-btn:disabled,
.inveshares-app .inveshares-btn[aria-disabled="true"] {
	cursor: not-allowed;
	opacity: .5;
}

.inveshares-app .inveshares-btn:focus-visible {
	outline: 2px solid var(--ivs-accent);
	outline-offset: 2px;
}

.inveshares-app .inveshares-btn--primary {
	border-color: var(--ivs-btn-bg);
}

/* A control that is present but not yet functional says so, rather than
   accepting a click and doing nothing. */
.inveshares-app .inveshares-btn--unavailable {
	cursor: not-allowed;
	opacity: .55;
}

/* =====================================================================
   26. Unavailable states
   =====================================================================

   A missing measurement is shown as missing. A fabricated zero is worse than a
   gap: it reads as a real measurement of nothing rather than an absence of
   measurement, and on a market page that is a factual claim about the market.
   ===================================================================== */

.inveshares-fe-tile--empty {
	border-style: dashed;
}

.inveshares-fe-tile--empty .inveshares-fe-tile-value {
	color: var(--ivs-ink-faint);
}

.inveshares-notice {
	background: var(--ivs-surface);
	border: 1px solid var(--ivs-line);
	border-left: 3px solid var(--ivs-warn-ink);
	border-radius: var(--ivs-radius);
	padding: var(--ivs-4) var(--ivs-5);
}

.inveshares-notice p {
	color: var(--ivs-ink-soft);
	margin: 0 0 var(--ivs-2);
	max-width: 80ch;
}

.inveshares-notice p:last-child {
	margin-bottom: 0;
}

.inveshares-notice strong {
	color: var(--ivs-ink);
}

/* =====================================================================
   27. Density
   ===================================================================== */

.inveshares-home .inveshares-fe-scroll {
	max-height: none;
}

.inveshares-home .inveshares-section > .inveshares-fe-empty {
	margin-top: var(--ivs-2);
}


/* --------------------------------------------------------------------------
 * 1.13 chart / stock / market upgrades
 * ----------------------------------------------------------------------- */
.inveshares-chart-toolbar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:10px 0 2px}
.inveshares-chart-range{appearance:none;border:1px solid var(--ivs-line,#2e2e26);background:var(--ivs-surface-2,#23231d);color:var(--ivs-ink,#f2f1e8);border-radius:999px;padding:6px 10px;font:600 12px/1 ui-monospace,monospace;cursor:pointer;min-width:42px}
.inveshares-chart-range:hover,.inveshares-chart-range:focus-visible{border-color:var(--ivs-accent,#ffc93c);color:var(--ivs-accent,#ffc93c);outline:none}
.inveshares-chart-wrap.is-loading-range:after{content:"Loading history…";position:absolute;right:12px;top:10px;background:var(--ivs-surface-2,#23231d);color:var(--ivs-ink-faint,#74736a);padding:5px 8px;border-radius:6px;font-size:11px}
.inveshares-chart-wrap{position:relative}
.inveshares-stock-story{margin:22px 0;padding:20px;border:1px solid var(--ivs-line,#2e2e26);background:var(--ivs-surface-2,#23231d);border-radius:14px}
.inveshares-stock-story-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-end;margin-bottom:16px}
.inveshares-stock-story-head h3{margin:2px 0 0;font-size:22px}
.inveshares-stock-asof{font:600 12px/1.2 ui-monospace,monospace;color:var(--ivs-ink-faint,#74736a)}
.inveshares-stock-story-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.inveshares-stock-story-item{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;border-top:1px solid var(--ivs-line,#2e2e26);padding-top:12px}
.inveshares-stock-story-item p{margin:0;color:var(--ivs-ink,#f2f1e8);line-height:1.55}
.inveshares-stock-story-index{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--ivs-line,#2e2e26);font:600 11px ui-monospace,monospace;color:var(--ivs-accent,#ffc93c)}
.inveshares-market-pulse{margin:22px 0;padding:20px;border:1px solid var(--ivs-line,#2e2e26);background:var(--ivs-surface-2,#23231d);border-radius:14px}
.inveshares-market-pulse-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}
.inveshares-market-pulse-head h3{margin:2px 0;font-size:24px}
.inveshares-market-pulse-head>span{font:600 12px ui-monospace,monospace;color:var(--ivs-ink-faint,#74736a)}
.inveshares-market-chart{margin-top:10px;overflow:hidden;border:1px solid var(--ivs-line,#2e2e26);border-radius:10px;background:var(--ivs-surface,#181813)}
.inveshares-market-chart svg{display:block;width:100%;height:auto;min-height:180px}
.inveshares-market-chart line{stroke:var(--ivs-line,#2e2e26);stroke-width:1;opacity:.65}
.inveshares-market-chart path{stroke:var(--ivs-accent,#ffc93c);stroke-width:3;vector-effect:non-scaling-stroke}
@media(max-width:760px){.inveshares-stock-story-grid{grid-template-columns:1fr}.inveshares-stock-story-head{align-items:flex-start;flex-direction:column}.inveshares-chart-range{padding:6px 9px}.inveshares-market-pulse-head{align-items:flex-start;flex-direction:column}}

.inveshares-criteria-mini summary{cursor:pointer;color:var(--ivs-ink-faint,#74736a);font-size:12px}.inveshares-criteria-mini>div{display:grid;gap:5px;padding:8px 0 2px}.inveshares-criteria-mini span{font-size:12px}.inveshares-criteria-mini b{font-weight:650;color:var(--ivs-ink,#f2f1e8)}

/* ========================================================================
 * 1.14 VISUAL SYSTEM — BananaPatterns-inspired market terminal polish
 * ======================================================================== */
.inveshares-app {
	--ivs-bg: #000000;
	--ivs-bg-deep: #000000;
	--ivs-surface: #070707;
	--ivs-surface-2: #0d0d0d;
	--ivs-line: #202020;
	--ivs-line-soft: #151515;
	--ivs-ink: #f5f5f5;
	--ivs-ink-soft: #a2a2a2;
	--ivs-ink-faint: #6e6e6e;
	--ivs-accent: #ffd429;
	--ivs-accent-soft: rgba(255,212,41,.12);
	--ivs-accent-ink: #000;
	--ivs-link: #ffd429;
	--ivs-btn-bg: #ffd429;
	--ivs-btn-ink: #000;
	--ivs-radius: 12px;
	--ivs-radius-sm: 8px;
	--ivs-radius-lg: 20px;
	--ivs-shadow: 0 1px 0 rgba(255,255,255,.03), 0 18px 45px rgba(0,0,0,.42);
	background: #000 !important;
	color: #f5f5f5 !important;
	color-scheme: dark;
}

.inveshares-app .inveshares-home,
.inveshares-app .inveshares-fe,
.inveshares-app .inveshares-stock,
.inveshares-app .inveshares-market,
.inveshares-app .inveshares-page {
	background: transparent;
	color: var(--ivs-ink);
}

.inveshares-app .inveshares-section,
.inveshares-app .inveshares-card,
.inveshares-app .inveshares-fe-tile,
.inveshares-app .inveshares-stock-story,
.inveshares-app .inveshares-market-pulse,
.inveshares-app .inveshares-chart-wrap,
.inveshares-app .inveshares-fe-table,
.inveshares-app .inveshares-notice {
	background: var(--ivs-surface) !important;
	border-color: var(--ivs-line) !important;
	box-shadow: none;
}

.inveshares-app .inveshares-hero {
	background:
		radial-gradient(circle at 70% 0%, rgba(255,212,41,.08), transparent 32%),
		linear-gradient(180deg, #050505 0%, #000 100%) !important;
	border: 1px solid var(--ivs-line);
	border-radius: 24px;
	box-shadow: var(--ivs-shadow);
}

.inveshares-app .inveshares-chart-wrap {
	min-height: 600px;
	padding: 18px;
	border: 1px solid #202020 !important;
	border-radius: 18px;
	overflow: hidden;
	background: #050505 !important;
}

.inveshares-app .inveshares-chart-wrap canvas {
	background: #050505;
}

.inveshares-app .inveshares-chart-toolbar {
	border-top: 1px solid #151515;
	margin-top: 10px;
	padding-top: 14px;
}

.inveshares-app .inveshares-chart-range {
	background: #0a0a0a !important;
	border-color: #252525 !important;
	color: #bcbcbc !important;
	border-radius: 8px;
	font-size: 12px;
	font-weight: 700;
	padding: 8px 13px;
}

.inveshares-app .inveshares-chart-range:hover,
.inveshares-app .inveshares-chart-range:focus-visible,
.inveshares-app .inveshares-chart-range.is-active {
	background: var(--ivs-accent) !important;
	border-color: var(--ivs-accent) !important;
	color: #000 !important;
}

.inveshares-app .inveshares-view-chart {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 34px;
	padding: 0 11px;
	border: 1px solid #303030;
	border-radius: 8px;
	background: #0b0b0b !important;
	color: #f5f5f5 !important;
	font-size: 12px;
	font-weight: 700;
	text-decoration: none !important;
	white-space: nowrap;
}

.inveshares-app .inveshares-view-chart:hover {
	background: var(--ivs-accent) !important;
	border-color: var(--ivs-accent) !important;
	color: #000 !important;
}

.inveshares-app .inveshares-fe-table {
	border: 1px solid #202020 !important;
	border-radius: 14px;
	overflow: hidden;
}

.inveshares-app .inveshares-fe-table th {
	background: #0b0b0b !important;
	color: #777 !important;
	border-bottom-color: #202020 !important;
}

.inveshares-app .inveshares-fe-table td {
	background: #050505 !important;
	color: #ddd !important;
	border-bottom-color: #171717 !important;
}

.inveshares-app .inveshares-fe-table tbody tr:hover td {
	background: #0c0c0c !important;
}

.inveshares-app input,
.inveshares-app select,
.inveshares-app textarea {
	background: #080808 !important;
	color: #f5f5f5 !important;
	border: 1px solid #2a2a2a !important;
	border-radius: 8px;
}

.inveshares-app input:focus,
.inveshares-app select:focus,
.inveshares-app textarea:focus {
	border-color: var(--ivs-accent) !important;
	box-shadow: 0 0 0 3px rgba(255,212,41,.11) !important;
	outline: none !important;
}

.inveshares-app .inveshares-btn,
.inveshares-app button,
.inveshares-app input[type="submit"],
.inveshares-app input[type="button"] {
	font-family: var(--ivs-font);
	border-radius: 8px;
}

.inveshares-app .inveshares-btn--primary,
.inveshares-app button.inveshares-btn--primary,
.inveshares-app input[type="submit"] {
	background: var(--ivs-accent) !important;
	color: #000 !important;
	border: 1px solid var(--ivs-accent) !important;
	font-weight: 800;
}

.inveshares-app .inveshares-btn--primary:hover,
.inveshares-app input[type="submit"]:hover {
	filter: brightness(1.06);
}

.inveshares-app a:not(.inveshares-btn):not(.inveshares-view-chart) {
	color: var(--ivs-link);
}

/* ---------- light theme ---------- */
html[data-ivs-theme="light"] .inveshares-app,
.inveshares-app[data-ivs-theme="light"] {
	--ivs-bg: #f4f5f7;
	--ivs-bg-deep: #eef0f3;
	--ivs-surface: #ffffff;
	--ivs-surface-2: #f7f8fa;
	--ivs-line: #d9dde3;
	--ivs-line-soft: #e9ebef;
	--ivs-ink: #101114;
	--ivs-ink-soft: #5e6470;
	--ivs-ink-faint: #818792;
	--ivs-accent: #9a6a00;
	--ivs-accent-soft: rgba(154,106,0,.10);
	--ivs-link: #815700;
	--ivs-btn-bg: #111214;
	--ivs-btn-ink: #fff;
	background: #f4f5f7 !important;
	color: #101114 !important;
	color-scheme: light;
}

html[data-ivs-theme="light"] .inveshares-app .inveshares-hero,
.inveshares-app[data-ivs-theme="light"] .inveshares-hero {
	background: linear-gradient(180deg, #fff 0%, #f7f8fa 100%) !important;
	box-shadow: 0 16px 40px rgba(15,23,42,.07);
}

html[data-ivs-theme="light"] .inveshares-app .inveshares-chart-wrap,
.inveshares-app[data-ivs-theme="light"] .inveshares-chart-wrap {
	background: #fff !important;
	border-color: #dfe3e8 !important;
}

html[data-ivs-theme="light"] .inveshares-app .inveshares-fe-table td,
.inveshares-app[data-ivs-theme="light"] .inveshares-fe-table td {
	background: #fff !important;
	color: #20242a !important;
	border-bottom-color: #eceef1 !important;
}

html[data-ivs-theme="light"] .inveshares-app .inveshares-fe-table th,
.inveshares-app[data-ivs-theme="light"] .inveshares-fe-table th {
	background: #f7f8fa !important;
	color: #707681 !important;
}

html[data-ivs-theme="light"] .inveshares-app input,
html[data-ivs-theme="light"] .inveshares-app select,
html[data-ivs-theme="light"] .inveshares-app textarea,
.inveshares-app[data-ivs-theme="light"] input,
.inveshares-app[data-ivs-theme="light"] select,
.inveshares-app[data-ivs-theme="light"] textarea {
	background: #fff !important;
	color: #111 !important;
	border-color: #cfd5dc !important;
}

@media (max-width: 900px) {
	.inveshares-app .inveshares-chart-wrap { min-height: 440px; padding: 12px; }
}

@media (max-width: 640px) {
	.inveshares-app .inveshares-chart-wrap { min-height: 360px; border-radius: 14px; }
	.inveshares-app .inveshares-chart-range { flex: 1 1 auto; min-width: 44px; }
}

/* =====================================================================
   INVESHARES 1.15 — PREMIUM FINANCE TERMINAL LAYER
   ===================================================================== */
.inveshares-app{--ivs-bg:#000000;--ivs-bg-deep:#000000;--ivs-surface:#080808;--ivs-surface-2:#101010;--ivs-line:#232323;--ivs-line-soft:#171717;--ivs-ink:#f6f6f6;--ivs-ink-soft:#a9a9a9;--ivs-ink-faint:#696969;--ivs-accent:#ffcb3d;--ivs-link:#ffcb3d;--ivs-btn-bg:#ffcb3d;--ivs-btn-ink:#090909;--ivs-radius:14px;--ivs-radius-sm:9px;--ivs-radius-lg:20px;--ivs-width:1560px;color-scheme:dark;background:#000;color:#f6f6f6;}
html[data-ivs-theme="light"] .inveshares-app,.inveshares-app[data-ivs-theme="light"]{--ivs-bg:#ffffff;--ivs-bg-deep:#f5f5f3;--ivs-surface:#ffffff;--ivs-surface-2:#f1f1ee;--ivs-line:#d9d9d4;--ivs-line-soft:#e8e8e3;--ivs-ink:#111111;--ivs-ink-soft:#686868;--ivs-ink-faint:#929292;--ivs-accent:#c89000;--ivs-link:#9a6f00;--ivs-btn-bg:#111111;--ivs-btn-ink:#ffffff;color-scheme:light;background:#fff;color:#111;}
.inveshares-site-bar{backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);background:color-mix(in srgb,var(--ivs-bg) 90%,transparent);border-bottom:1px solid var(--ivs-line);}
.inveshares-site-inner{width:min(100%,var(--ivs-width));padding-left:clamp(16px,3vw,40px);padding-right:clamp(16px,3vw,40px);}
.inveshares-brand-name{gap:10px;min-height:44px;padding:5px 0;font-weight:800;letter-spacing:-.045em;}
.inveshares-brand-tagline{font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ivs-ink-faint);}
.inveshares-logo{display:block;max-height:31px;width:auto;object-fit:contain;}
.inveshares-site-nav a{padding:9px 11px;border-radius:999px;font-weight:650;}
.inveshares-site-nav a:hover,.inveshares-site-nav a[aria-current="page"]{background:var(--ivs-surface-2);color:var(--ivs-ink);}
.inveshares-header-actions{gap:8px;}
.inveshares-theme-toggle,.inveshares-nav-toggle{background:var(--ivs-surface-2)!important;color:var(--ivs-ink)!important;border:1px solid var(--ivs-line)!important;border-radius:12px!important;width:40px;height:40px;padding:0!important;display:grid;place-items:center;}
.inveshares-site-status{background:var(--ivs-bg-deep);border-bottom:1px solid var(--ivs-line-soft);}
.inveshares-site-main{background:var(--ivs-bg);min-height:calc(100vh - 105px);}
.inveshares-page-content{padding-top:clamp(22px,4vw,50px);padding-bottom:clamp(40px,7vw,88px);}
.inveshares-page-title{font-size:clamp(2rem,1.3rem + 3vw,4rem);line-height:1.02;letter-spacing:-.055em;margin-bottom:24px!important;}
.inveshares-hero{padding:clamp(42px,8vw,110px) 0 36px;}
.inveshares-hero-body{max-width:920px;}
.inveshares-hero-title{font-size:clamp(3rem,5vw,6rem);line-height:.94;letter-spacing:-.07em;max-width:850px;margin-top:14px!important;}
.inveshares-hero-lede{font-size:clamp(1rem,1rem + .55vw,1.3rem);line-height:1.65;max-width:760px;color:var(--ivs-ink-soft);margin-top:24px!important;}
.inveshares-hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px;}
.inveshares-btn{min-height:46px;padding:11px 17px;border-radius:11px;border:1px solid var(--ivs-line)!important;background:var(--ivs-surface-2)!important;color:var(--ivs-ink)!important;display:inline-flex;align-items:center;justify-content:center;font-weight:750;text-decoration:none!important;}
.inveshares-btn--primary{background:var(--ivs-btn-bg)!important;color:var(--ivs-btn-ink)!important;border-color:var(--ivs-btn-bg)!important;}
.inveshares-section{margin-top:clamp(22px,3vw,42px);}
.inveshares-section-title{font-size:clamp(1.35rem,1rem + .9vw,2rem);letter-spacing:-.04em;margin-bottom:7px!important;}
.inveshares-section-lede{color:var(--ivs-ink-soft);max-width:72ch;margin-bottom:18px!important;}
.inveshares-fe-tile{background:var(--ivs-surface);border:1px solid var(--ivs-line);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.12);padding:17px 18px;}
.inveshares-fe-tile-value{letter-spacing:-.04em;font-weight:780;}
.inveshares-fe-scroll{border:1px solid var(--ivs-line);border-radius:14px;overflow:auto;background:var(--ivs-surface);box-shadow:0 10px 35px rgba(0,0,0,.10);}
.inveshares-fe-table{min-width:820px;}
.inveshares-fe-table th{background:var(--ivs-surface-2);position:sticky;top:0;z-index:1;}
.inveshares-fe-table td,.inveshares-fe-table th{border-bottom:1px solid var(--ivs-line-soft);padding:13px 14px;}
.inveshares-fe-table tbody tr:hover{background:color-mix(in srgb,var(--ivs-accent) 5%,transparent);}
.inveshares-view-chart{font-weight:750;text-decoration:none!important;color:var(--ivs-link)!important;white-space:nowrap;}
.inveshares-interest{display:block;max-width:260px;color:var(--ivs-ink-soft);font-size:.82rem;line-height:1.35;}
.inveshares-pill{border:1px solid var(--ivs-line);background:var(--ivs-surface-2);border-radius:999px;padding:4px 9px;font-size:.75rem;font-weight:700;}
.inveshares-stock-head{padding:22px 0 10px;border-bottom:1px solid var(--ivs-line);}
.inveshares-stock-chart-shell,.inveshares-chart-wrap{border:1px solid var(--ivs-line);background:var(--ivs-surface);border-radius:18px;padding:12px;box-shadow:0 14px 45px rgba(0,0,0,.18);}
.inveshares-chart-controls{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:4px;margin-bottom:8px;scrollbar-width:none;}
.inveshares-chart-range{border:1px solid var(--ivs-line)!important;background:var(--ivs-surface-2)!important;color:var(--ivs-ink-soft)!important;border-radius:9px!important;padding:7px 11px!important;white-space:nowrap;font-size:.8rem!important;font-weight:750!important;}
.inveshares-chart-range.is-active{background:var(--ivs-ink)!important;color:var(--ivs-bg)!important;border-color:var(--ivs-ink)!important;}
.inveshares-market-chart,.inveshares-market-pulse{background:var(--ivs-surface);border:1px solid var(--ivs-line);border-radius:18px;}
.inveshares-market-chart{padding:16px;overflow:hidden;}
.inveshares-market-chart svg{display:block;width:100%;height:auto;min-height:180px;}
.inveshares-callout{border:1px solid var(--ivs-line);border-radius:14px;background:var(--ivs-surface);padding:18px;}
.inveshares-stock-measures,.inveshares-stock-story,.inveshares-stock-history{background:var(--ivs-surface);border:1px solid var(--ivs-line);border-radius:16px;padding:18px;}
.inveshares-stock-story p{color:var(--ivs-ink-soft);}
@media(max-width:860px){.inveshares-site-bar{position:sticky;top:0;z-index:50}.inveshares-brand-tagline,.inveshares-site-status-note{display:none}.inveshares-hero{padding-top:30px}.inveshares-hero-title{font-size:clamp(2.7rem,13vw,4.5rem)}.inveshares-site-nav{width:100%;}.inveshares-nav-list{padding:12px!important}.inveshares-page-content{padding-top:14px}.inveshares-stock-chart-shell,.inveshares-chart-wrap{border-radius:14px;padding:7px}.inveshares-fe-table{min-width:760px}.inveshares-fe-scroll{border-radius:12px}}
@media(max-width:540px){.inveshares-site-inner{padding-left:14px;padding-right:14px}.inveshares-brand-name{min-height:40px}.inveshares-logo{max-height:27px}.inveshares-theme-toggle,.inveshares-nav-toggle{width:38px;height:38px}.inveshares-hero-actions{display:grid;grid-template-columns:1fr}.inveshares-btn{width:100%}.inveshares-tiles,.inveshares-fe-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.inveshares-fe-tile{padding:13px}.inveshares-fe-table td,.inveshares-fe-table th{padding:11px 12px}.inveshares-chart-range{padding:6px 9px!important}}


/* ================================================================
   INVESHARES 1.16 — DECISION TERMINAL / MOBILE-FIRST HARDENING
   ================================================================ */
html, body { background:#000; }
html[data-ivs-theme="light"] { background:#fff; }
html[data-ivs-theme="dark"] { background:#000; }

.inveshares-logo--light { display:none; }
.inveshares-logo--dark { display:block; }
html[data-ivs-theme="light"] .inveshares-logo--light,
.inveshares-app[data-ivs-theme="light"] .inveshares-logo--light { display:block; }
html[data-ivs-theme="light"] .inveshares-logo--dark,
.inveshares-app[data-ivs-theme="light"] .inveshares-logo--dark { display:none; }

.inveshares-site-header { position:relative; z-index:100; }
.inveshares-site-bar { min-height:68px; }
.inveshares-site-bar .inveshares-site-inner { min-height:68px; display:flex; align-items:center; gap:18px; }
.inveshares-brand { min-width:0; flex:0 0 auto; }
.inveshares-brand-name { display:inline-flex; align-items:center; min-width:0; }
.inveshares-logo { width:auto; max-width:min(190px,42vw); height:auto; max-height:34px; object-fit:contain; }
.inveshares-brand-tagline { margin-left:6px; white-space:nowrap; }
.inveshares-site-nav { flex:1 1 auto; min-width:0; }
.inveshares-nav-list { display:flex; align-items:center; justify-content:center; gap:4px; margin:0; padding:0; list-style:none; }
.inveshares-site-nav a { text-decoration:none !important; color:var(--ivs-ink-soft) !important; }
.inveshares-site-nav a[aria-current="page"] { color:var(--ivs-ink) !important; }
.inveshares-header-actions { flex:0 0 auto; display:flex; align-items:center; }
.inveshares-site-search { flex:0 1 280px; min-width:120px; }

.inveshares-page-content { max-width:100%; }
.inveshares-home { width:100%; }
.inveshares-home .inveshares-section { margin-top:clamp(28px,4vw,56px); }
.inveshares-home .inveshares-fe-scroll { box-shadow:0 18px 50px rgba(0,0,0,.16); }
.inveshares-home .inveshares-fe-table { min-width:980px; }
.inveshares-score { display:inline-grid; place-items:center; min-width:42px; min-height:28px; padding:0 7px; border-radius:8px; background:var(--ivs-accent); color:var(--ivs-btn-ink); font-weight:850; font-variant-numeric:tabular-nums; }

.inveshares-stock-head { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:24px; padding:16px 0 18px; }
.inveshares-stock-ident h2 { font-size:clamp(2rem,3.5vw,3.5rem); line-height:1; margin:0 0 8px; letter-spacing:-.055em; }
.inveshares-stock-ident p { margin:0; color:var(--ivs-ink-soft); }
.inveshares-stock-price { display:flex; align-items:baseline; gap:12px; flex-wrap:wrap; justify-content:flex-end; }
.inveshares-stock-last { font-size:clamp(1.7rem,3vw,2.6rem); font-weight:800; letter-spacing:-.04em; }
.inveshares-stock-change { font-weight:800; }

.inveshares-stock-thesis { margin-top:20px; padding:22px; border:1px solid var(--ivs-line); border-radius:18px; background:linear-gradient(145deg,var(--ivs-surface),var(--ivs-surface-2)); }
.inveshares-stock-thesis-head { display:flex; justify-content:space-between; gap:16px; align-items:flex-start; }
.inveshares-stock-thesis-head h3 { margin:.1rem 0 0; font-size:clamp(1.4rem,2vw,2rem); letter-spacing:-.035em; }
.inveshares-score-large { display:flex; flex-direction:column; align-items:flex-end; font-size:2rem; line-height:1; font-weight:900; color:var(--ivs-accent); font-variant-numeric:tabular-nums; }
.inveshares-score-large small { margin-top:5px; font-size:.68rem; font-weight:650; color:var(--ivs-ink-faint); }
.inveshares-thesis-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:20px; }
.inveshares-thesis-grid > div { padding:18px; border:1px solid var(--ivs-line-soft); border-radius:14px; background:var(--ivs-bg-deep); }
.inveshares-thesis-grid h4 { margin:0 0 10px; font-size:.82rem; text-transform:uppercase; letter-spacing:.08em; color:var(--ivs-ink-faint); }
.inveshares-thesis-grid ul { margin:0; padding-left:18px; }
.inveshares-thesis-grid li { margin:7px 0; color:var(--ivs-ink-soft); }

.inveshares-chart-wrap { min-height:620px; }
.inveshares-chart-live { position:relative; min-height:500px; }
.inveshares-chart-live .inveshares-chart-canvas { display:block; width:100%; height:500px; }
.inveshares-chart-toolbar { display:flex; gap:7px; align-items:center; overflow-x:auto; padding:12px 2px 3px; scrollbar-width:none; border-top:1px solid var(--ivs-line-soft); }
.inveshares-chart-toolbar::-webkit-scrollbar { display:none; }
.inveshares-chart-range { flex:0 0 auto; min-width:52px; min-height:36px; padding:7px 12px !important; border-radius:10px !important; background:var(--ivs-surface-2) !important; color:var(--ivs-ink-soft) !important; border:1px solid var(--ivs-line) !important; }
.inveshares-chart-range.is-active { background:var(--ivs-ink) !important; border-color:var(--ivs-ink) !important; color:var(--ivs-bg) !important; }
.inveshares-chart-base--long { opacity:1; }
.inveshares-chart-base-label { font:700 11px/1 ui-monospace,monospace; fill:var(--ivs-accent); pointer-events:none; }

/* Force the chart shell, controls and tables to respect light mode. */
html[data-ivs-theme="light"] .inveshares-app .inveshares-chart-wrap,
.inveshares-app[data-ivs-theme="light"] .inveshares-chart-wrap { background:#fff !important; }
html[data-ivs-theme="light"] .inveshares-app .inveshares-chart-live,
.inveshares-app[data-ivs-theme="light"] .inveshares-chart-live { background:#fff !important; }
html[data-ivs-theme="light"] .inveshares-app .inveshares-fe-table td,
.inveshares-app[data-ivs-theme="light"] .inveshares-fe-table td { color:#20242a !important; }
html[data-ivs-theme="light"] .inveshares-app .inveshares-fe-table tbody tr:hover td,
.inveshares-app[data-ivs-theme="light"] .inveshares-fe-table tbody tr:hover td { background:#fafaf8 !important; }

/* No browser/theme button defaults are allowed to leak into the product. */
.inveshares-app button,
.inveshares-app input[type="button"],
.inveshares-app input[type="submit"] { -webkit-appearance:none; appearance:none; box-shadow:none; text-shadow:none; }
.inveshares-app button:not(.inveshares-chart-range):not(.inveshares-theme-toggle):not(.inveshares-nav-toggle) { min-height:42px; padding:9px 14px; }

@media (max-width:860px) {
  .inveshares-site-bar .inveshares-site-inner { min-height:62px; padding-top:6px; padding-bottom:6px; gap:9px; }
  .inveshares-site-search { order:3; flex:1 0 100%; width:100%; }
  .inveshares-site-bar .inveshares-site-inner { flex-wrap:wrap; }
  .inveshares-site-nav { order:4; flex:1 0 100%; }
  .inveshares-nav-list { display:none; flex-direction:column; align-items:stretch; gap:4px; background:var(--ivs-surface); border:1px solid var(--ivs-line); border-radius:14px; margin-top:4px; box-shadow:0 18px 40px rgba(0,0,0,.24); }
  .inveshares-nav-list.is-open { display:flex; }
  .inveshares-nav-list a { display:block; width:100%; padding:12px 14px; }
  .inveshares-brand-tagline { display:none; }
  .inveshares-header-actions { margin-left:auto; }
  .inveshares-page-content { padding-top:12px; }
  .inveshares-hero { border-radius:16px; padding-top:30px; }
  .inveshares-home .inveshares-fe-scroll { margin-left:-2px; margin-right:-2px; }
  .inveshares-chart-wrap { min-height:470px; padding:8px; }
  .inveshares-chart-live { min-height:370px; }
  .inveshares-chart-live .inveshares-chart-canvas { height:370px; }
  .inveshares-stock-head { grid-template-columns:1fr; gap:12px; }
  .inveshares-stock-price { justify-content:flex-start; }
  .inveshares-thesis-grid { grid-template-columns:1fr; }
  .inveshares-score-large { align-items:flex-start; }
}
@media (max-width:540px) {
  .inveshares-site-inner { padding-left:12px; padding-right:12px; }
  .inveshares-site-bar { min-height:60px; }
  .inveshares-brand-name { min-height:38px; }
  .inveshares-logo { max-height:27px; max-width:145px; }
  .inveshares-theme-toggle,.inveshares-nav-toggle { width:38px !important; height:38px !important; }
  .inveshares-hero-title { font-size:clamp(2.55rem,14vw,4rem); }
  .inveshares-hero-lede { font-size:1rem; }
  .inveshares-btn { min-height:44px; }
  .inveshares-chart-wrap { border-radius:14px; }
  .inveshares-stock-thesis { padding:16px; border-radius:14px; }
  .inveshares-thesis-grid > div { padding:14px; }
  .inveshares-chart-live { min-height:330px; }
  .inveshares-chart-live .inveshares-chart-canvas { height:330px; }
}

/* InveShares 1.16 — setup lifecycle + research-terminal polish */
.inveshares-stage{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--ivs-line,#2b2b2b);border-radius:999px;padding:4px 9px;font-size:11px;font-weight:800;letter-spacing:.04em;white-space:nowrap;text-transform:uppercase;background:var(--ivs-surface-2,#0b0b0b);color:var(--ivs-ink,#f5f5f2)}
.inveshares-stage--breakout{border-color:rgba(51,214,121,.42);color:#33d679;background:rgba(51,214,121,.08)}
.inveshares-stage--near-pivot,.inveshares-stage--tight-to-pivot{border-color:rgba(255,201,60,.45);color:var(--ivs-accent,#ffc93c);background:rgba(255,201,60,.08)}
.inveshares-stage--forming{color:var(--ivs-ink-muted,#a8a8a1)}
html[data-ivs-theme="light"] .inveshares-stage{background:#fff;color:#171717;border-color:#deded8}
html[data-ivs-theme="light"] .inveshares-stage--breakout{color:#11783e;background:#ecfbf2;border-color:#a8e2bf}
html[data-ivs-theme="light"] .inveshares-stage--near-pivot,html[data-ivs-theme="light"] .inveshares-stage--tight-to-pivot{color:#8c6500;background:#fff8df;border-color:#efd789}
@media(max-width:760px){.inveshares-fe-table--cards thead{display:none}.inveshares-fe-table--cards,.inveshares-fe-table--cards tbody,.inveshares-fe-table--cards tr,.inveshares-fe-table--cards td{display:block;width:100%}.inveshares-fe-table--cards tr{margin:0 0 12px;padding:12px;border:1px solid var(--ivs-line,#252525);border-radius:16px;background:var(--ivs-surface-1,#080808)}.inveshares-fe-table--cards td{display:grid;grid-template-columns:92px 1fr;gap:10px;padding:6px 0;border:0}.inveshares-fe-table--cards td:before{content:attr(data-label);font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--ivs-ink-muted,#8f8f88)}html[data-ivs-theme="light"] .inveshares-fe-table--cards tr{background:#fff;border-color:#e2e2dd}.inveshares-fe-table--cards .inveshares-view-chart{justify-self:start}}

/* =====================================================================
   INVESHARES 1.17 — COMMAND-CENTRE / DISCOVERY POLISH
   ===================================================================== */
.inveshares-app .inveshares-command-hero{
	width:100%;
	display:grid;
	grid-template-columns:minmax(0,1.35fr) minmax(340px,.65fr);
	gap:24px;
	align-items:stretch;
	padding:clamp(24px,3vw,42px);
	margin:0 0 clamp(24px,4vw,52px);
	border:1px solid var(--ivs-line);
	border-radius:24px;
	background:
		radial-gradient(circle at 88% 15%,rgba(255,203,61,.11),transparent 32%),
		linear-gradient(145deg,var(--ivs-surface),var(--ivs-bg-deep));
	box-shadow:0 28px 80px rgba(0,0,0,.22);
}
.inveshares-app .inveshares-command-main{min-width:0;display:flex;flex-direction:column;justify-content:center;padding:clamp(6px,1vw,12px)}
.inveshares-app .inveshares-command-eyebrow,.inveshares-app .inveshares-kicker{font-size:.68rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase;color:var(--ivs-accent)}
.inveshares-app .inveshares-command-title{font-size:clamp(2.7rem,5.8vw,5.8rem);line-height:.91;letter-spacing:-.075em;max-width:900px;margin:12px 0 18px!important}
.inveshares-app .inveshares-command-lede{max-width:70ch;color:var(--ivs-ink-soft);font-size:clamp(1rem,1rem + .35vw,1.18rem);line-height:1.58;margin:0 0 20px!important}
.inveshares-app .inveshares-command-search{max-width:700px;margin:0 0 16px}
.inveshares-app .inveshares-command-search .inveshares-search{width:100%;max-width:none;position:relative}
.inveshares-app .inveshares-command-search .inveshares-search-form{min-height:58px;border-radius:14px;background:var(--ivs-bg)!important;border:1px solid var(--ivs-line)!important;box-shadow:0 10px 30px rgba(0,0,0,.18)}
.inveshares-app .inveshares-command-search .inveshares-search-input{height:56px!important;background:transparent!important;border:0!important;color:var(--ivs-ink)!important;font-size:1rem!important}
.inveshares-app .inveshares-command-actions{display:flex;gap:10px;flex-wrap:wrap}
.inveshares-app .inveshares-command-meta{display:flex;gap:16px;flex-wrap:wrap;color:var(--ivs-ink-faint);font-size:.76rem;margin-top:16px}
.inveshares-app .inveshares-command-board{min-width:0;padding:18px;border:1px solid var(--ivs-line);border-radius:18px;background:rgba(0,0,0,.16);display:flex;flex-direction:column}
html[data-ivs-theme="light"] .inveshares-app .inveshares-command-board,.inveshares-app[data-ivs-theme="light"] .inveshares-command-board{background:#f6f6f3}
.inveshares-app .inveshares-command-board-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;padding-bottom:12px;border-bottom:1px solid var(--ivs-line)}
.inveshares-app .inveshares-command-board-head h2{margin:4px 0 0!important;font-size:1.35rem;letter-spacing:-.04em}
.inveshares-app .inveshares-command-board-head a{color:var(--ivs-link);font-weight:800;text-decoration:none}
.inveshares-app .inveshares-command-leaders{list-style:none;margin:8px 0 0!important;padding:0!important}
.inveshares-app .inveshares-command-leaders li{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:center;padding:12px 0;border-bottom:1px solid var(--ivs-line-soft)}
.inveshares-app .inveshares-command-leaders li:last-child{border-bottom:0}
.inveshares-app .inveshares-rank-no{color:var(--ivs-ink-faint);font-size:.72rem;font-weight:900;font-variant-numeric:tabular-nums}
.inveshares-app .inveshares-command-leader-name{min-width:0;display:flex;flex-direction:column;gap:2px}
.inveshares-app .inveshares-command-leader-name a{color:var(--ivs-ink)!important;font-weight:850;text-decoration:none}
.inveshares-app .inveshares-command-leader-name small{color:var(--ivs-ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.inveshares-app .inveshares-score{display:inline-grid;place-items:center;min-width:42px;min-height:28px;padding:0 7px;border-radius:8px;background:var(--ivs-accent);color:var(--ivs-btn-ink)!important;font-weight:900;font-variant-numeric:tabular-nums}
.inveshares-app .inveshares-score--large{min-width:46px;min-height:34px;font-size:.95rem}
.inveshares-app .inveshares-section-head{display:flex;align-items:end;justify-content:space-between;gap:18px;margin-bottom:14px}
.inveshares-app .inveshares-text-link{color:var(--ivs-link);font-weight:800;text-decoration:none}
.inveshares-app .inveshares-breakout-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.inveshares-app .inveshares-breakout-card{border:1px solid var(--ivs-line);background:var(--ivs-surface);border-radius:16px;padding:16px;min-width:0;transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease}
.inveshares-app .inveshares-breakout-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--ivs-accent) 55%,var(--ivs-line));box-shadow:0 16px 36px rgba(0,0,0,.16)}
.inveshares-app .inveshares-breakout-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}
.inveshares-app .inveshares-breakout-card h3{margin:0 0 4px!important;font-size:1.25rem;letter-spacing:-.03em}
.inveshares-app .inveshares-breakout-card h3 a{color:var(--ivs-ink)!important;text-decoration:none}
.inveshares-app .inveshares-breakout-company{color:var(--ivs-ink-faint);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 0 14px!important}
.inveshares-app .inveshares-breakout-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px 0;border-top:1px solid var(--ivs-line-soft);border-bottom:1px solid var(--ivs-line-soft);font-size:.78rem;color:var(--ivs-ink-soft)}
.inveshares-app .inveshares-breakout-metrics b{display:block;color:var(--ivs-ink-faint);font-size:.62rem;letter-spacing:.06em;text-transform:uppercase}
.inveshares-app .inveshares-view-chart--block{display:block;margin-top:13px}
.inveshares-app .inveshares-page-intro{margin-bottom:22px;max-width:850px}
.inveshares-app .inveshares-page-intro h2{font-size:clamp(2rem,3.7vw,3.8rem);letter-spacing:-.06em;line-height:1;margin:7px 0 10px!important}
.inveshares-app .inveshares-page-intro p{color:var(--ivs-ink-soft);font-size:1rem;max-width:70ch;margin:0!important}
.inveshares-app .inveshares-discovery-filters,.inveshares-app .inveshares-filter-panel{display:grid;grid-template-columns:minmax(180px,2fr) repeat(2,minmax(130px,1fr)) auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--ivs-line);border-radius:16px;background:var(--ivs-surface);margin:0 0 18px}
.inveshares-app .inveshares-breakout-lab .inveshares-discovery-filters{grid-template-columns:repeat(3,minmax(120px,1fr)) repeat(3,minmax(130px,1fr)) auto}
.inveshares-app .inveshares-discovery-filters label{display:flex;flex-direction:column;gap:5px;min-width:0}
.inveshares-app .inveshares-discovery-filters label span{font-size:.65rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase;color:var(--ivs-ink-faint)}
.inveshares-app .inveshares-discovery-filters input,.inveshares-app .inveshares-discovery-filters select{width:100%;height:42px;padding:0 11px;border-radius:10px;border:1px solid var(--ivs-line)!important;background:var(--ivs-bg)!important;color:var(--ivs-ink)!important}
.inveshares-app .inveshares-discovery-summary{display:flex;align-items:center;gap:8px;color:var(--ivs-ink-soft);font-size:.84rem;margin:0 0 10px}
.inveshares-app .inveshares-discovery-summary strong{color:var(--ivs-ink);font-size:1rem}
.inveshares-app .inveshares-discovery-summary span{margin-left:auto;color:var(--ivs-accent);font-weight:850}
.inveshares-app .inveshares-discovery-table{min-width:980px}
.inveshares-app .inveshares-discovery-table .inveshares-rank-cell{color:var(--ivs-ink-faint);font-variant-numeric:tabular-nums;font-weight:800}
.inveshares-app .inveshares-discovery-table tbody tr:first-child{background:color-mix(in srgb,var(--ivs-accent) 5%,transparent)}
.inveshares-app .inveshares-screen-filters{display:grid;grid-template-columns:2fr 1.2fr repeat(2,minmax(120px,.8fr)) auto auto;gap:10px;align-items:end;padding:12px;border:1px solid var(--ivs-line);border-radius:16px;background:var(--ivs-surface)}
.inveshares-app .inveshares-screen-filters label{display:flex;flex-direction:column;gap:5px;color:var(--ivs-ink-soft);font-size:.78rem}
.inveshares-app .inveshares-screen-filters input,.inveshares-app .inveshares-screen-filters select{height:42px;border:1px solid var(--ivs-line)!important;border-radius:10px;background:var(--ivs-bg)!important;color:var(--ivs-ink)!important;padding:0 10px}
.inveshares-app .inveshares-chart-wrap{background:var(--ivs-surface)!important}
.inveshares-app .inveshares-chart-toolbar{position:sticky;bottom:0;background:color-mix(in srgb,var(--ivs-surface) 92%,transparent);backdrop-filter:blur(12px);z-index:4}
.inveshares-app .inveshares-chart-range{cursor:pointer}
.inveshares-app .inveshares-chart-range:hover{color:var(--ivs-ink)!important;border-color:var(--ivs-ink-faint)!important}
.inveshares-app .inveshares-chart-range.is-active{background:var(--ivs-accent)!important;color:var(--ivs-btn-ink)!important;border-color:var(--ivs-accent)!important}
.inveshares-app .inveshares-search-list{z-index:1000}
.inveshares-app .inveshares-stock-directory .inveshares-fe-table,.inveshares-app .inveshares-breakout-lab .inveshares-fe-table{font-size:.9rem}

/* Light mode owns every surface instead of relying on inherited theme colour. */
html[data-ivs-theme="light"] .inveshares-app,
.inveshares-app[data-ivs-theme="light"]{background:#fff!important;color:#111!important}
html[data-ivs-theme="light"] .inveshares-app .inveshares-command-hero,
.inveshares-app[data-ivs-theme="light"] .inveshares-command-hero{background:linear-gradient(145deg,#fff,#f5f6f3)!important;box-shadow:0 24px 70px rgba(17,24,39,.08)!important}
html[data-ivs-theme="light"] .inveshares-app .inveshares-command-search .inveshares-search-form,
.inveshares-app[data-ivs-theme="light"] .inveshares-command-search .inveshares-search-form{background:#fff!important}
html[data-ivs-theme="light"] .inveshares-app .inveshares-command-search .inveshares-search-input,
.inveshares-app[data-ivs-theme="light"] .inveshares-command-search .inveshares-search-input{color:#111!important}
html[data-ivs-theme="light"] .inveshares-app .inveshares-breakout-card,
.inveshares-app[data-ivs-theme="light"] .inveshares-breakout-card,
html[data-ivs-theme="light"] .inveshares-app .inveshares-discovery-filters,
.inveshares-app[data-ivs-theme="light"] .inveshares-discovery-filters,
html[data-ivs-theme="light"] .inveshares-app .inveshares-filter-panel,
.inveshares-app[data-ivs-theme="light"] .inveshares-filter-panel{background:#fff}
html[data-ivs-theme="light"] .inveshares-app .inveshares-discovery-filters input,
html[data-ivs-theme="light"] .inveshares-app .inveshares-discovery-filters select,
html[data-ivs-theme="light"] .inveshares-app .inveshares-screen-filters input,
html[data-ivs-theme="light"] .inveshares-app .inveshares-screen-filters select{background:#fff!important;color:#111!important}

@media(max-width:1050px){
	.inveshares-app .inveshares-command-hero{grid-template-columns:1fr}
	.inveshares-app .inveshares-command-board{margin-top:0}
	.inveshares-app .inveshares-breakout-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
	.inveshares-app .inveshares-breakout-lab .inveshares-discovery-filters{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:760px){
	.inveshares-app .inveshares-command-hero{padding:18px;border-radius:18px;gap:16px}
	.inveshares-app .inveshares-command-title{font-size:clamp(2.35rem,13vw,4rem)}
	.inveshares-app .inveshares-command-lede{font-size:.96rem}
	.inveshares-app .inveshares-command-actions{display:grid;grid-template-columns:1fr}
	.inveshares-app .inveshares-command-actions .inveshares-btn{width:100%}
	.inveshares-app .inveshares-breakout-grid{grid-template-columns:1fr}
	.inveshares-app .inveshares-section-head{align-items:flex-start;flex-direction:column}
	.inveshares-app .inveshares-discovery-filters,.inveshares-app .inveshares-breakout-lab .inveshares-discovery-filters,.inveshares-app .inveshares-screen-filters{grid-template-columns:1fr 1fr}
	.inveshares-app .inveshares-discovery-filters label:first-child{grid-column:1/-1}
	.inveshares-app .inveshares-screen-filters label:first-child{grid-column:1/-1}
	.inveshares-app .inveshares-discovery-filters .inveshares-btn,.inveshares-app .inveshares-screen-filters .inveshares-btn{width:100%}
	.inveshares-app .inveshares-command-leaders li{grid-template-columns:24px minmax(0,1fr) auto}
	.inveshares-app .inveshares-breakout-metrics{font-size:.74rem}
}
@media(max-width:480px){
	.inveshares-app .inveshares-command-hero{margin-left:-2px;margin-right:-2px}
	.inveshares-app .inveshares-command-board{padding:14px}
	.inveshares-app .inveshares-page-intro h2{font-size:2.05rem}
	.inveshares-app .inveshares-discovery-filters,.inveshares-app .inveshares-breakout-lab .inveshares-discovery-filters,.inveshares-app .inveshares-screen-filters{grid-template-columns:1fr}
	.inveshares-app .inveshares-discovery-filters label:first-child,.inveshares-app .inveshares-screen-filters label:first-child{grid-column:auto}
	.inveshares-app .inveshares-command-meta{font-size:.69rem}
}
