/**
* modern.css — modern theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The production "modern" theme, the app default: the category standard played
* straight, with Linear and Notion as the craft bar. White panels on a
* warm-neutral ground, hairline borders, one indigo accent, Inter at small
* sizes with a true 500 medium and 600 headings tracked tight, hairline-plus-drop
* card elevation under a long soft popover shadow, round-terminal 1.75px icons
* with the accent on one element, no material in either mode. Dark is the same
* system on near-black warm greys with the indigo lifted one step; every fill
* keeps white ink except the status fills, which brighten and take dark ink so
* their INK roles can equal them. Structural claims: the entity-image silhouette
* (a rounded plate — the workspace-icon reading — unringed since #2438) and the
* search field (a plain rounded hairline field); the tab bar is the base — its
* ink underline is the library's own. Modern-light stays the app default; retune a
* fill and re-check its ink pair (contrast.test.js gates both modes). Activated
* by the runtime gate (data-theme/data-mode on <html>; knowledge-base/style/).
*
* @version 2026-Jun-19 Vibrant glassmorphism (indigo/fuchsia, Plus Jakarta Sans) — was the greyscale pass
*/

:root[data-theme="modern"] {
	--surface-page: #F6F6F4;
	--surface-card: #FFFFFF;
	--surface-raised: #FFFFFF;
	--surface-sunken: #EFEFEC;
	--surface-hover: #F0F0EE;
	--surface-selected: #EEF0FB;
	--surface-overlay: rgba(15, 15, 15, 0.6);
	--surface-brandmark: #FFFFFF;
	--surface-blur: none;

	--brand-primary: #5760C9;
	--brand-secondary: #3E45A8;
	--brand-accent: #5760C9;

	--text-primary: #26272B;
	--text-secondary: #62666D;
	--text-on-brand: #FFFFFF;
	--text-on-status: #FFFFFF;
	--text-disabled: #7E8288;
	--text-link: #4A52BF;
	--text-brand: #5760C9;
	--text-accent: #5760C9;
	--text-success: #1A6E45;
	--text-warning: #855000;
	--text-danger: #B42D2D;
	--text-partial: #0B6478;

	--border-default: rgba(38, 39, 43, 0.10);
	--border-strong: rgba(38, 39, 43, 0.22);
	--border-width: .1rem;

	--status-success: #1F7A4D;
	--status-warning: #A05F00;
	--status-danger: #C93A3A;
	--status-partial: #0E7490;
	--status-info: #2F6FE0;

	--focus-ring-color: #5760C9;

	--chart-gradient: linear-gradient(135deg, #5760C9 0%, #7C84DD 50%, #B9BEEE 100%);

	--icon-accent: var(--brand-primary);
	--icon-fill: none;
	--icon-stroke-width: .175rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', 'Menlo', monospace;

	--font-size-label: 1.2rem;
	--font-size-caption: 1.3rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.4rem;
	--font-size-stat: 3.2rem;
	--font-size-display: 4rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 600;
	--font-weight-display: 600;
	--line-height-tight: 1.2;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.65;
	--letter-spacing-display: -.02em;
	--letter-spacing-body: normal;

	--radius-dense: .4rem;
	--radius-input: .6rem;
	--radius-button: .6rem;
	--radius-card: .8rem;
	--radius-sheet: 1rem;
	--radius-shell: 1.2rem;
	--radius-pill: 999rem;
	--radius-avatar: 999rem;

	--pad-cell: .6rem;
	--pad-dense: .8rem;
	--pad-row: 1rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.2rem;
	--pad-button: .8rem;
	--pad-button-inline: 1.6rem;
	--pad-card: 1.6rem;
	--pad-sheet: 2rem;
	--pad-page: 1.6rem;
	--pad-shell: 2.4rem;
	--gap-hairline: .2rem;
	--gap-tight: .6rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.2rem;
	--gap-section: 1.4rem;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(38, 39, 43, 0.08);
	--border-highlight: transparent;
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem rgba(38, 39, 43, 0.06);
	--elevation-raised: 0 0 0 .1rem rgba(38, 39, 43, 0.04), 0 .1rem .2rem rgba(38, 39, 43, 0.06);
	--elevation-inset: inset 0 .1rem .2rem rgba(38, 39, 43, 0.06);
	--elevation-overlay: 0 0 0 .1rem rgba(38, 39, 43, 0.06), 0 .8rem 2.4rem -.6rem rgba(38, 39, 43, 0.18);
	--elevation-glow: 0 .2rem 1.2rem -.2rem rgba(87, 96, 201, 0.35);
	--elevation-surround: 0 .1rem .2rem rgba(38, 39, 43, 0.06), 0 .4rem 1.2rem -.4rem var(--shadow-dark-source);

	--motion-fast: 120ms;
	--motion-base: 200ms;
	--motion-slow: 360ms;
	--motion-enter-distance: .4rem;
	--motion-enter-name: modernEnter;
	--sound-message-received: chime;
	--ease-standard: cubic-bezier(0.3, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.16, 1, 0.3, 1);

	--surface-page-backdrop: none;
	--surface-page-backdrop-size: cover;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-card-texture: none;
	--chart-line-shape: smooth;
	--chart-area-opacity: .4;
	--chart-material: polished;
	--chart-line-weight: 1.4;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.16;
	--chart-grid-opacity: 0.12;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: linear-gradient(145deg, color-mix(in srgb, var(--chart-series-1) 7%, transparent), transparent 65%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(90deg, transparent, rgba(255, 255, 255, .35) 45%, transparent);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

	--chart-series-2: #257C83;
	--chart-series-3: #8660A5;
	--chart-series-4: #A76C35;
	--chart-series-5: #A95475;
	--chart-series-6: #647488;

	--stage-ground: #E6E3DC;
	--stage-plate-ink: #293632;
	--stage-prop: #626762;
	--stage-prop-lit: #343E3B;
	--landing-eyebrow-case: none;

}

:root[data-theme="modern"][data-mode="dark"] {
	--surface-page: #0F1011;
	--surface-card: #17181B;
	--surface-raised: #1D1E22;
	--surface-sunken: #0B0C0D;
	--surface-hover: #22242A;
	--surface-selected: #262A45;
	--surface-overlay: rgba(0, 0, 0, 0.7);
	--surface-brandmark: #FFFFFF;
	--surface-blur: none;

	--brand-primary: #5E67D6;
	--brand-secondary: #8B93F5;
	--brand-accent: #5E67D6;

	--text-primary: #F2F2F0;
	--text-secondary: #A2A5AC;
	--text-on-brand: #FFFFFF;
	--text-on-status: #0F1011;
	--text-disabled: #82868E;
	--text-link: #9AA2FF;
	--text-brand: #878DE0;
	--text-accent: #878DE0;
	--text-success: #4CC38A;
	--text-warning: #F2C24E;
	--text-danger: #F87171;
	--text-partial: #5AC8D8;

	--border-default: rgba(242, 242, 240, 0.10);
	--border-strong: rgba(242, 242, 240, 0.22);
	--border-width: .1rem;

	--status-success: #4CC38A;
	--status-warning: #F2C24E;
	--status-danger: #F87171;
	--status-partial: #5AC8D8;
	--status-info: #7C9CFF;

	--focus-ring-color: #8B93F5;

	--chart-gradient: linear-gradient(135deg, #5E67D6 0%, #8B93F5 50%, #C9CDFF 100%);

	--icon-accent: var(--brand-primary);
	--icon-fill: none;
	--icon-stroke-width: .175rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-body: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
	--font-mono: ui-monospace, 'SF Mono', 'Cascadia Mono', 'Menlo', monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.5);
	--border-highlight: rgba(255, 255, 255, 0.05);
	--elevation-flat: none;
	--elevation-button: inset 0 .1rem 0 var(--border-highlight), 0 .1rem .2rem rgba(0, 0, 0, 0.4);
	--elevation-raised: inset 0 .1rem 0 var(--border-highlight), 0 0 0 .1rem rgba(0, 0, 0, 0.3), 0 .1rem .2rem rgba(0, 0, 0, 0.4);
	--elevation-inset: inset 0 .1rem .2rem rgba(0, 0, 0, 0.5);
	--elevation-overlay: inset 0 .1rem 0 var(--border-highlight), 0 0 0 .1rem rgba(0, 0, 0, 0.5), 0 1.2rem 3.2rem -.8rem rgba(0, 0, 0, 0.7);
	--elevation-glow: 0 .2rem 1.6rem -.2rem rgba(139, 147, 245, 0.45);
	--elevation-surround: 0 .1rem .2rem rgba(0, 0, 0, 0.4), 0 .4rem 1.6rem -.4rem var(--shadow-dark-source);

	--surface-page-backdrop: none;
	--surface-page-backdrop-size: cover;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-card-texture: none;
	--chart-series-2: #72BFC4;
	--chart-series-3: #B69DD9;
	--chart-series-4: #D6AA6E;
	--chart-series-5: #D593AE;
	--chart-series-6: #9EADBD;

	--stage-ground: #24272A;
	--stage-plate-ink: var(--text-primary);
	--stage-prop: var(--text-secondary);
	--stage-prop-lit: var(--text-primary);

}

@keyframes modernEnter {
	from {
		opacity: 0;
		transform: translateY(var(--motion-enter-distance, .4rem)) scale(.98);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

/* ---------------------------------------------------------------------------
 * Modern entity-image silhouette (ADR-0014 slot 3) — the workspace plate: a
 * rounded square, in every size the slot covers — the hairline ring retired with
 * the base ring it restated (#2438). The
 * plate view carries the silhouette; the lightbox print keeps the base card.
 * ------------------------------------------------------------------------- */
:root[data-theme="modern"] .entityDisplayImage__view,
:root[data-theme="modern"] .entityDisplayImage__view .roundFigure__image {
	border-radius: var(--radius-button);
}

:root[data-theme="modern"] .entityImageAndName__img,
:root[data-theme="modern"] .entityImageAndName__imageNode {
	border-radius: var(--radius-sheet);
}

/* ---------------------------------------------------------------------------
 * Modern search-field chrome (ADR-0014 slot 7) — the plain field: the base
 * parallelogram flattens to a rounded hairline input beside a filled button.
 * The input/button boxes re-space because the base geometry overlaps them
 * under its diagonals.
 * ------------------------------------------------------------------------- */
:root[data-theme="modern"] .mainSearchBar__view::before,
:root[data-theme="modern"] .mainSearchBar__view::after {
	content: none;
}

:root[data-theme="modern"] .mainSearchBar__input {
	clip-path: none;
	border: var(--border-width) solid var(--border-default);
	background-color: var(--surface-card);
	border-radius: var(--radius-input);
	box-shadow: var(--elevation-button);
	width: calc(100% - 1.4rem - max(4.5rem, var(--touch-target-primary)));
	right: calc(1.4rem + max(4.5rem, var(--touch-target-primary)));
	padding: .3rem var(--pad-dense); /* intentional literal: the .3rem vertical is the base rule's, kept so the input's outer box height is unchanged */
}

:root[data-theme="modern"] .mainSearchBar__input:focus-visible {
	border-color: var(--brand-primary);
}

:root[data-theme="modern"] .mainSearchBar__button {
	clip-path: none;
	border-radius: var(--radius-button);
	box-shadow: var(--elevation-button);
}

/* ---------------------------------------------------------------------------
 * Modern masthead (ADR-0014 slot 10) — the plain row: card white under the
 * default hairline; the cover keeps the base soft wash and the lamp the base
 * construction.
 * ------------------------------------------------------------------------- */
:root[data-theme="modern"] .mainHeader__view {
	background-color: var(--surface-card);
	box-shadow: none;
}

/**
* cyber.css — cyber theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The production "cyber" theme, rebuilt ground-up as the cyberpunk SIGNAL
* world: hard print-tech HUD — registration-mark ground, bracket-framed
* cards, notched slab buttons with hatch strips, zero radius everywhere.
* Light is the chalky poster print (#D7D6D2 / #E3E2DD) with an ink field
* (#16151C) and ONE signal, acid chartreuse (#B4D900), on brand-primary AND
* brand-accent: every action slab is acid with ink type (`--text-on-brand`
* is ink — the only ink that reads on both an acid slab and an acid glyph;
* an ink primary pairs ink on ink at 1.00:1). Red (#B60E29) is demoted to
* status-danger. Dark is the black instrument panel (#0A0A0D / #121216) in
* warm white (#EDEBE2) with the yellow signal (#F2C40F) on primary + accent
* and black ink on every fill. Both modes are opaque (no glass); hard-offset
* low-alpha shadows in light, hairline + soft depth in dark. Type: SQUARIX
* display (one 400 cut — hierarchy by scale; display rungs one notch DOWN
* because the square face runs wide), Saira body, Martian Mono spec/data,
* `--font-poster` (Kusanagi) as the ungated theme-voice token the HUD
* furniture reads. Compact HUD density; snap motion; `cyberEnter` is a
* stamped arrival (rise + early opacity commit, no dips, no lateral travel).
* Material: registration-mark / circuit-trace data-URIs + scanline card
* textures over the opaque surface colors. Claims slots 1–5 and the 0016 voice
* claims (selection, caret, chip + figures → mono, tab ink, heading pins). Retune
* a fill and re-check its ink pair — contrast.test.js gates both modes. Activated
* by the runtime gate (data-theme/data-mode on <html>; knowledge-base/style/).
*
* @version 2026-Jun-19 Synthwave palette (was the cyan cyber-tron pass)
*/

:root[data-theme="cyber"] {
	--surface-page: #D7D6D2;
	--surface-card: #E3E2DD;
	--surface-raised: #EFEEE9;
	--surface-sunken: #C6C5BF;
	--surface-hover: #DBDAD5;
	--surface-selected: #E0E4C9;
	--surface-overlay: rgba(20, 20, 16, 0.50);
	--surface-brandmark: #FFFFFF;
	--surface-blur: none;

	--brand-primary: #B4D900;
	--brand-secondary: #4A4A42;
	--brand-accent: #B4D900;

	--text-primary: #16151C;
	--text-secondary: #504F47;
	--text-on-brand: #16151C;
	--text-on-status: #EFEEE9;
	--text-disabled: #66655C;
	--text-link: #465600;
	--text-brand: #485700;
	--text-accent: #485700;
	--text-success: #145A2E;
	--text-warning: #6E400A;
	--text-danger: #A10C24;
	--text-partial: #5C4380;

	--border-default: rgba(22, 21, 28, 0.18);
	--border-strong: rgba(22, 21, 28, 0.46);
	--border-width: .1rem;

	--status-success: #186334;
	--status-warning: #7E4A0B;
	--status-danger: #B60E29;
	--status-partial: #6A4E8C;
	--status-info: #2456A8;

	--focus-ring-color: #414F00;

	--chart-gradient: linear-gradient(135deg, #16151C 0%, #4C5E00 45%, #B4D900 100%);

	--scrollbar-thumb: var(--text-primary);
	--scrollbar-thumb-hover: var(--brand-secondary);

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: square;
	--icon-join: miter;

	--font-display: 'SQUARIX', 'Saira', sans-serif;
	--font-body: 'Saira', sans-serif;
	--font-mono: 'Martian Mono', monospace;
	--font-poster: 'Kusanagi', 'SQUARIX', 'Saira', sans-serif;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.2rem;
	--font-size-stat: 2.8rem;
	--font-size-display: 3.4rem;
	--font-weight-body: 400;
	--font-weight-medium: 600;
	--font-weight-heading: 400;
	--font-weight-display: 400;
	--line-height-tight: 1.15;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.6;
	--letter-spacing-display: .02em;
	--letter-spacing-body: normal;

	--radius-dense: 0;
	--radius-input: 0;
	--radius-button: 0;
	--radius-card: 0;
	--radius-sheet: 0;
	--radius-shell: 0;
	--radius-pill: 0;
	--radius-avatar: 0;

	--pad-cell: .4rem;
	--pad-dense: .8rem;
	--pad-row: 1rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.4rem;
	--pad-button: 1rem;
	--pad-button-inline: 2rem;
	--pad-card: 1.2rem;
	--pad-sheet: 2rem;
	--pad-page: 1.6rem;
	--pad-shell: 2.8rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.2rem;
	--gap-section: 1.2rem;

	--shadow-light-source: rgba(255, 255, 255, 0.70);
	--shadow-dark-source: rgba(22, 21, 28, 0.35);
	--border-highlight: transparent;
	--elevation-flat: none;
	--elevation-button: 0 0 0 .1rem rgba(22, 21, 28, 0.18), .3rem .3rem 0 rgba(22, 21, 28, 0.12);
	--elevation-raised: 0 0 0 .1rem rgba(22, 21, 28, 0.12), .4rem .4rem 0 rgba(22, 21, 28, 0.07);
	--elevation-inset: inset .2rem .2rem 0 rgba(22, 21, 28, 0.09), inset 0 0 0 .1rem rgba(22, 21, 28, 0.12);
	--elevation-overlay: 0 0 0 .1rem rgba(22, 21, 28, 0.24), 1rem 1rem 0 rgba(122, 143, 0, 0.16), 0 2.4rem 5rem rgba(22, 21, 28, 0.25);
	--elevation-glow: 0 0 0 .2rem rgba(102, 122, 0, 0.60), .4rem .4rem 0 rgba(22, 21, 28, 0.18);
	--elevation-surround: 0 0 0 .1rem rgba(22, 21, 28, 0.16);
	--surface-clip: polygon(0 0, calc(100% - 1rem) 0, 100% 1rem, 100% 100%, 0 100%);

	--motion-fast: 120ms;
	--motion-base: 200ms;
	--motion-slow: 360ms;
	--motion-enter-distance: .4rem;
	--motion-enter-name: cyberEnter;
	--sound-message-received: blip;
	--ease-standard: cubic-bezier(0.3, 0, 0.1, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.1, 0, 0.1, 1);

	--surface-page-backdrop: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27320%27 height=%27320%27%3E%3Cg stroke=%27%2316151C%27 stroke-opacity=%27.20%27 fill=%27none%27%3E%3Cpath d=%27M40 34v12M34 40h12%27/%3E%3Cpath d=%27M228 128v12M222 134h12%27/%3E%3Cpath d=%27M124 246v12M118 252h12%27/%3E%3C/g%3E%3Cg fill=%27%2316151C%27 fill-opacity=%27.16%27%3E%3Crect x=%27276%27 y=%2758%27 width=%273%27 height=%273%27/%3E%3Crect x=%2772%27 y=%27168%27 width=%273%27 height=%273%27/%3E%3C/g%3E%3Cpath d=%27M160 42v12M154 48h12%27 stroke=%27%237A8F00%27 stroke-opacity=%27.55%27 fill=%27none%27/%3E%3Crect x=%27246%27 y=%27236%27 width=%2712%27 height=%274%27 fill=%27%2316151C%27 fill-opacity=%27.14%27/%3E%3C/svg%3E"), radial-gradient(120rem 70rem at 50% -8%, rgba(255, 255, 255, 0.35), rgba(255, 255, 255, 0) 60%);
	--surface-page-backdrop-size: 32rem 32rem, 100% 100%;
	--surface-page-backdrop-repeat: repeat, no-repeat;
	--surface-card-texture: linear-gradient(180deg, rgba(22, 21, 28, 0.05), rgba(22, 21, 28, 0) 1rem), repeating-linear-gradient(180deg, rgba(22, 21, 28, 0.06) 0, rgba(22, 21, 28, 0.06) .1rem, rgba(22, 21, 28, 0) .1rem, rgba(22, 21, 28, 0) .3rem);
	--surface-card-texture-size: 100% 100%;
	--surface-card-texture-repeat: no-repeat;
	--chart-line-shape: angular;
	--chart-area-opacity: .44;
	--chart-material: signal;
	--chart-line-weight: 1.3;
	--chart-glow-strength: 0.2;
	--chart-wash-opacity: 0.24;
	--chart-grid-opacity: 0.24;
	--chart-marker-shape: square;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: linear-gradient(90deg, color-mix(in srgb, var(--chart-series-1) 8%, transparent), transparent 60%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: repeating-linear-gradient(0deg, transparent, transparent .3rem, color-mix(in srgb, var(--chart-series-1) 4%, transparent) .3rem, color-mix(in srgb, var(--chart-series-1) 4%, transparent) .4rem);
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-flat);
	--chart-mark-radius: var(--radius-dense);
	--chart-bar-texture: repeating-linear-gradient(135deg, transparent, transparent .3rem, rgba(255, 255, 255, .35) .3rem, rgba(255, 255, 255, .35) .4rem);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #655B42;
	--chart-series-3: #616775;
	--chart-series-4: #8B572A;
	--chart-series-5: #786B8B;
	--chart-series-6: #3C7775;

}

:root[data-theme="cyber"][data-mode="dark"] {
	--surface-page: #0A0A0D;
	--surface-card: #121216;
	--surface-raised: #17171B;
	--surface-sunken: #060608;
	--surface-hover: #1A1A1F;
	--surface-selected: #262112;
	--surface-overlay: rgba(0, 0, 0, 0.65);
	--surface-brandmark: #FFFFFF;
	--surface-blur: none;

	--brand-primary: #F2C40F;
	--brand-secondary: #B7940C;
	--brand-accent: #F2C40F;

	--text-primary: #EDEBE2;
	--text-secondary: #A5A297;
	--text-on-brand: #131208;
	--text-on-status: #131208;
	--text-disabled: #7A7869;
	--text-link: #F2C40F;
	--text-brand: #F2C40F;
	--text-accent: #F2C40F;
	--text-success: #8CC152;
	--text-warning: #E09E2F;
	--text-danger: #FF4D3E;
	--text-partial: #B08BC9;

	--border-default: rgba(237, 235, 226, 0.14);
	--border-strong: rgba(237, 235, 226, 0.34);
	--border-width: .1rem;

	--status-success: #8CC152;
	--status-warning: #E09E2F;
	--status-danger: #FF4D3E;
	--status-partial: #B08BC9;
	--status-info: #7FB4E0;

	--focus-ring-color: #F2C40F;

	--chart-gradient: linear-gradient(135deg, #B7940C 0%, #F2C40F 55%, #EDEBE2 100%);

	--scrollbar-thumb: var(--brand-accent);
	--scrollbar-thumb-hover: var(--brand-primary);

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: square;
	--icon-join: miter;

	--font-display: 'SQUARIX', 'Saira', sans-serif;
	--font-body: 'Saira', sans-serif;
	--font-mono: 'Martian Mono', monospace;

	--shadow-light-source: rgba(242, 196, 15, 0.08);
	--shadow-dark-source: rgba(0, 0, 0, 0.70);
	--border-highlight: rgba(237, 235, 226, 0.08);
	--elevation-flat: none;
	--elevation-button: 0 0 0 .1rem rgba(237, 235, 226, 0.16), 0 .3rem .8rem rgba(0, 0, 0, 0.50);
	--elevation-raised: 0 0 0 .1rem rgba(237, 235, 226, 0.10), 0 .8rem 2rem rgba(0, 0, 0, 0.55);
	--elevation-inset: inset 0 0 0 .1rem rgba(237, 235, 226, 0.08), inset 0 .3rem .8rem rgba(0, 0, 0, 0.55);
	--elevation-overlay: 0 0 0 .1rem rgba(242, 196, 15, 0.25), 0 2rem 5rem rgba(0, 0, 0, 0.70);
	--elevation-glow: 0 0 0 .2rem rgba(242, 196, 15, 0.55), 0 0 2rem rgba(242, 196, 15, 0.30);
	--elevation-surround: 0 0 0 .1rem rgba(237, 235, 226, 0.12);

	--surface-page-backdrop: url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%27360%27 height=%27360%27%3E%3Cg stroke=%27%23EDEBE2%27 stroke-opacity=%27.07%27 fill=%27none%27%3E%3Cpath d=%27M24 60h72v54h48%27/%3E%3Cpath d=%27M312 96v70h-58%27/%3E%3Cpath d=%27M96 300h84v-44%27/%3E%3C/g%3E%3Cg fill=%27%23EDEBE2%27 fill-opacity=%27.1%27%3E%3Crect x=%27142%27 y=%27112%27 width=%274%27 height=%274%27/%3E%3Crect x=%27252%27 y=%27164%27 width=%274%27 height=%274%27/%3E%3Crect x=%27178%27 y=%27254%27 width=%274%27 height=%274%27/%3E%3C/g%3E%3Cpath d=%27M210 24v40h56%27 stroke=%27%23F2C40F%27 stroke-opacity=%27.14%27 fill=%27none%27/%3E%3Crect x=%27264%27 y=%2762%27 width=%274%27 height=%274%27 fill=%27%23F2C40F%27 fill-opacity=%27.35%27/%3E%3C/svg%3E"), radial-gradient(110rem 60rem at 50% -10%, rgba(242, 196, 15, 0.05), rgba(0, 0, 0, 0) 55%);
	--surface-page-backdrop-size: 36rem 36rem, 100% 100%;
	--surface-page-backdrop-repeat: repeat, no-repeat;
	--surface-card-texture: linear-gradient(180deg, rgba(242, 196, 15, 0.05), rgba(242, 196, 15, 0) 1.2rem), repeating-linear-gradient(180deg, rgba(237, 235, 226, 0.06) 0, rgba(237, 235, 226, 0.06) .1rem, rgba(0, 0, 0, 0) .1rem, rgba(0, 0, 0, 0) .3rem);
	--surface-card-texture-size: 100% 100%;
	--surface-card-texture-repeat: no-repeat;
	--chart-series-2: #D7D0B7;
	--chart-series-3: #8F96A6;
	--chart-series-4: #C89456;
	--chart-series-5: #A89AB6;
	--chart-series-6: #83AAA1;

}

:root[data-theme="cyber"][data-viewport="phone"] {
	--surface-page-backdrop-size: 16rem 16rem, 100% 100%;
}

:root[data-theme="cyber"][data-mode="dark"][data-viewport="phone"] {
	--surface-page-backdrop-size: 18rem 18rem, 100% 100%;
}

@keyframes cyberEnter {
	from {
		opacity: 0;
		transform: translateY(var(--motion-enter-distance));
	}

	40% {
		opacity: 1;
		transform: translateY(0);
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

/* ── structural claims (decision 0014) ── */

/* Card/pillBox frame slot: the registration brackets — eight ink dashes at
   the four corners, painted as the pillBox's own background layers in front
   of the card texture, so the host's positioning is untouched. */
:root[data-theme="cyber"] .pillBox {
	background-image:
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		var(--surface-card-texture);
	background-position: 0 0, 0 0, 100% 0, 100% 0, 100% 100%, 100% 100%, 0 100%, 0 100%, 0 0, 0 0;
	background-size: 1.4rem .1rem, .1rem 1.4rem, 1.4rem .1rem, .1rem 1.4rem, 1.4rem .1rem, .1rem 1.4rem, 1.4rem .1rem, .1rem 1.4rem, var(--surface-card-texture-size), var(--surface-card-texture-size);
	background-repeat: no-repeat;
}

/* Tile slot: the data-rule — a two-segment top edge, signal head over a
   hairline run. A selected tile runs the head the full width over the
   selected wash with an ink outline. */
:root[data-theme="cyber"] .tile {
	background-image: linear-gradient(90deg, var(--brand-accent) 0 1.8rem, var(--border-default) 1.8rem 100%);
	background-position: 0 0;
	background-size: 100% .2rem;
	background-repeat: no-repeat;
}

:root[data-theme="cyber"] .tile[class*="__view-selected"] {
	background-color: var(--surface-selected);
	background-image: linear-gradient(90deg, var(--brand-accent), var(--brand-accent));
	background-size: 100% .3rem;
	border-color: var(--border-strong);
}

/* Entity-image silhouette slot: the square registration plate — zero radius
   with the top-right notch of --surface-clip; the clip repeats on the
   .roundFigure__image overlay because a parent's clip-path does not clip its
   children. The lockup plate view and its frame share the notch, the frame's
   ::after is a brand-primary rule traced inside it; the lightbox print and the
   tray's picks are squared and the print takes a larger notch; EntityTile
   avatars trace the same frame at hairline weight. */
:root[data-theme="cyber"] .entityDisplayImage__view {
	border-radius: 0;
	clip-path: polygon(0 0, calc(100% - .6rem) 0, 100% .6rem, 100% 100%, 0 100%);
}

:root[data-theme="cyber"] .entityDisplayImage__view .roundFigure__image {
	border-radius: 0;
	clip-path: polygon(0 0, calc(100% - .6rem) 0, 100% .6rem, 100% 100%, 0 100%);
}

:root[data-theme="cyber"] .entityImageAndName__img,
:root[data-theme="cyber"] .entityImageAndName__imageNode {
	border-radius: 0;
}

:root[data-theme="cyber"] .entityImageAndName__img:not(:focus-visible),
:root[data-theme="cyber"] .entityImageAndName__imageNode:not(:has(.expandableEntityImage__view:focus-visible)) {
	clip-path: polygon(0 0, calc(100% - 1rem) 0, 100% 1rem, 100% 100%, 0 100%);
}

:root[data-theme="cyber"] .entityImageAndName__imageNode::after {
	content: '';
	position: absolute;
	inset: 0;
	pointer-events: none;
	background-color: var(--brand-primary);
	clip-path: polygon(0 0, 0 100%, 100% 100%, 100% 1rem, calc(100% - 1rem) 0, .2rem 0, .2rem .2rem, calc(100% - 1.48rem) .2rem, calc(100% - .2rem) 1.48rem, calc(100% - .2rem) calc(100% - .2rem), .2rem calc(100% - .2rem), .2rem 0);
}

:root[data-theme="cyber"] .profileImageExpander__print,
:root[data-theme="cyber"] .profileImageExpander__initials,
:root[data-theme="cyber"] .profileImagesScrollArea__view,
:root[data-theme="cyber"] .profileImagesScrollArea__imageFrame {
	border-radius: 0;
}

:root[data-theme="cyber"] .profileImageExpander__print,
:root[data-theme="cyber"] .profileImageExpander__initials {
	clip-path: polygon(0 0, calc(100% - 1.6rem) 0, 100% 1.6rem, 100% 100%, 0 100%);
}

:root[data-theme="cyber"] .profileImagesScrollArea__view {
	border-top: calc(var(--border-width) * 3) solid var(--brand-primary);
}

:root[data-theme="cyber"] .profileImageExpander__close:not(:focus-visible),
:root[data-theme="cyber"] .profileImageExpander__step:not(:focus-visible) {
	clip-path: polygon(0 0, calc(100% - .8rem) 0, 100% .8rem, 100% 100%, 0 100%);
}

:root[data-theme="cyber"] .entityTile__pic::after {
	content: '';
	position: absolute;
	inset: 0;
	pointer-events: none;
	background-color: var(--brand-primary);
	clip-path: polygon(0 0, 0 100%, 100% 100%, 100% .6rem, calc(100% - .6rem) 0, .1rem 0, .1rem .1rem, calc(100% - .84rem) .1rem, calc(100% - .1rem) .84rem, calc(100% - .1rem) calc(100% - .1rem), .1rem calc(100% - .1rem), .1rem 0);
}

/* Header-underline slot: the spec-sheet rule — mono caps behind a `//`
   prefix (empty alt text: screen readers skip it) over a two-weight
   underline, signal head on a strong hairline. */
:root[data-theme="cyber"] .pillboxWithHeading__title {
	font-family: var(--font-mono);
	text-transform: uppercase;
	letter-spacing: .08em;
	background-image:
		linear-gradient(var(--brand-accent), var(--brand-accent)),
		linear-gradient(var(--border-strong), var(--border-strong));
	background-position: 0 100%, 0 100%;
	background-size: 2.6rem .2rem, 100% .1rem;
	background-repeat: no-repeat;
}

:root[data-theme="cyber"] .pillboxWithHeading__title::before {
	content: '// ' / '';
	color: var(--text-accent);
}

/* Button chrome slot (the shared button frame): tracked caps, a bottom-right
   corner notch that yields to :focus-visible so the app floor's focus ring
   is never cropped, and a hatch strip on the filled variants. */
:root[data-theme="cyber"] .button {
	text-transform: uppercase;
	letter-spacing: .06em;
}

:root[data-theme="cyber"] .button:not(:focus-visible):not(.navigationRail__mainPanel__option) {
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - .7rem), calc(100% - .7rem) 100%, 0 100%);
}

:root[data-theme="cyber"] .button-darkBackground,
:root[data-theme="cyber"] .button-danger {
	position: relative;
}

:root[data-theme="cyber"] .button-darkBackground::after,
:root[data-theme="cyber"] .button-danger::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	right: 0;
	width: 1.4rem;
	pointer-events: none;
	opacity: .3;
	background-image: repeating-linear-gradient(-45deg, currentColor 0, currentColor .2rem, rgba(0, 0, 0, 0) .2rem, rgba(0, 0, 0, 0) .6rem);
}

/* Tab-bar active indicator slot: the acid rule — the bar's sliding indicator
   in the signal colour, through the base bar's seam. */
:root[data-theme="cyber"] .tabHeaderBar__view {
	--tabHeaderBar-indicator-background-color: var(--brand-accent);
	--tabHeaderBar-tab-hover-color: var(--text-link);
	--tabHeaderBar-tab-selected-color: var(--text-link);
}

/* Segmented status-control slot: the slab — square track and knob, the knob
   notched like the button and flat (no elevation), tracked caps on the stop
   labels. The icon variant paints no track or knob and keeps base chrome. */
:root[data-theme="cyber"] .multiStepSlider__view-text .multiStepSlider__track-text,
:root[data-theme="cyber"] .multiStepSlider__view-text .multiStepSlider__knob {
	border-radius: 0;
}

:root[data-theme="cyber"] .multiStepSlider__view-text .multiStepSlider__knob {
	box-shadow: none;
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - .5rem), calc(100% - .5rem) 100%, 0 100%);
}

:root[data-theme="cyber"] .multiStepSlider__view-text .multiStepSlider__stopLabel {
	text-transform: uppercase;
	letter-spacing: .06em;
}

/* ── voice claims (decision 0016) ── */

:root[data-theme="cyber"] ::selection {
	background: var(--brand-accent);
	color: var(--text-on-brand);
}

:root[data-theme="cyber"] input,
:root[data-theme="cyber"] textarea,
:root[data-theme="cyber"] [contenteditable] {
	caret-color: var(--brand-accent);
}

:root[data-theme="cyber"] .chip,
:root[data-theme="cyber"] .chip .heading {
	font-family: var(--font-mono);
}

:root[data-theme="cyber"] .taskTile__timer,
:root[data-theme="cyber"] .teamMemberTile__timer,
:root[data-theme="cyber"] .taskProgressSummary__percentageValue,
:root[data-theme="cyber"] .taskProgressSummary__completedValue,
:root[data-theme="cyber"] .projectProgressSummary__percentageValue,
:root[data-theme="cyber"] .taskTimeSummary__remainingValue,
:root[data-theme="cyber"] .projectTimeSummary__timeLeftValue,
:root[data-theme="cyber"] .taskDeadlineSummary__daysLeftValue,
:root[data-theme="cyber"] .projectDeadlineSummary__daysLeftValue,
:root[data-theme="cyber"] .taskTimeSummary__total .headerWithSmallHeading__header,
:root[data-theme="cyber"] .taskTimeSummary__consumed .headerWithSmallHeading__header,
:root[data-theme="cyber"] .projectTimeSummary__total .headerWithSmallHeading__header,
:root[data-theme="cyber"] .projectTimeSummary__consumed .headerWithSmallHeading__header,
:root[data-theme="cyber"] .taskFinancialSummary__billed,
:root[data-theme="cyber"] .projectFinancialSummary__billed {
	font-family: var(--font-mono);
	font-variant-numeric: tabular-nums;
}

:root[data-theme="cyber"] .heading {
	font-weight: 500;
	font-size-adjust: cap-height from-font;
	word-spacing: .1em;
}

:root[data-theme="cyber"] .heading-large,
:root[data-theme="cyber"] .heading-larger {
	word-spacing: .15em;
}

:root[data-theme="cyber"] .overlayPanel {
	background-image: var(--surface-page-backdrop);
	background-size: var(--surface-page-backdrop-size);
	background-repeat: var(--surface-page-backdrop-repeat);
}

/* Masthead slot (ADR-0014 slot 10): scanlines over the cover's brand wash and a
   chamfered cover edge; registration corners plus the acid signal rule painted
   on the lockup row; the lamp a square signal plate under a mono label. */
:root[data-theme="cyber"] .mainHeader__cover {
	clip-path: polygon(0 0, 100% 0, 100% calc(100% - 1.6rem), calc(100% - 1.6rem) 100%, 0 100%);
}

:root[data-theme="cyber"] .mastheadCover__wash {
	background-image:
		repeating-linear-gradient(0deg, rgba(0, 0, 0, .22) 0 .1rem, transparent .1rem .4rem),
		linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 60%, transparent), color-mix(in srgb, var(--text-primary) 55%, transparent));
}

:root[data-theme="cyber"] .mainHeader__view {
	background-color: var(--surface-card);
	background-image:
		linear-gradient(var(--brand-accent), var(--brand-accent)),
		linear-gradient(var(--text-primary), var(--text-primary)),
		linear-gradient(var(--text-primary), var(--text-primary));
	background-size: 100% .2rem, 1.2rem .1rem, .1rem 1.2rem;
	background-position: 0 100%, calc(100% - .6rem) calc(100% - 1rem), calc(100% - .6rem) calc(100% - 1rem);
	background-repeat: no-repeat;
	border-bottom-color: transparent;
}

:root[data-theme="cyber"] .onlineIndicator__lamp {
	border-radius: 0;
	background-image: none;
}

:root[data-theme="cyber"] .onlineIndicator__header {
	font-family: var(--font-mono);
}

/**
* futuristic.css — futuristic theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The production "futuristic" theme: the live-demo dark cyan-neon look
* (near-black void #0A0A14, electric cyan #54EAFD brand, Audiowide display
* over a system body/mono stack, crisp radius, cyan-tinted glow). Per the
* user's roster decision this follows the DEMO, NOT the typeui doc's
* light-corporate spec — and is DISTINCT from cyber: cyber is the chalk/acid
* (light) and black/yellow (dark) print-tech HUD with SQUARIX, zero radius and
* bracket/notch structure; futuristic is cyan-on-black flat with Audiowide +
* crisp small radii and no structural claims.
*
* `--elevation-glow` is a brand-keyed cyan glow string (references the cyan
* directly so the neon stays saturated). Crisp `--radius-*` overrides give
* the sharp futuristic edges.
*
* Activated by the runtime gate (dt-runtime): `data-theme="futuristic"`
* (+ `data-mode="dark"`) on <html>. Values re-derived from
* styleBoard/palettes.js (`futuristic` preset). See knowledge-base/style/.
*
* @version 2026-Jun-19 Initial deep-theming version
*/

:root[data-theme="futuristic"] {
	--surface-page: #EEF2F6;
	--surface-card: #FFFFFF;
	--surface-raised: #FFFFFF;
	--surface-sunken: #E3EAF0;
	--surface-hover: rgba(16, 158, 178, 0.08);
	--surface-selected: rgba(16, 158, 178, 0.14);
	--surface-overlay: rgba(8, 12, 24, 0.50);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #0FA9BD;
	--brand-secondary: #1C7FB8;
	--brand-accent: #0FA9BD;

	--text-primary: #111827;
	--text-secondary: #5B6472;
	--text-on-brand: #04121A;
	--text-on-status: #F7F7F8;
	--text-disabled: #737F92;
	--text-link: #0A6C78;
	--text-brand: #0A6C78;
	--text-accent: #0A6C78;
	--text-success: #00712F;
	--text-warning: #7D5D00;
	--text-danger: #C60A2C;
	--text-partial: #1A6E5F;

	--border-default: rgba(15, 169, 189, 0.24);
	--border-strong: rgba(15, 169, 189, 0.50);
	--border-width: .1rem;

	--status-success: #007B33;
	--status-warning: #876500;
	--status-danger: #D40B2F;
	--status-partial: #1C7768;
	--status-info: #1970A2;

	--focus-ring-color: #0C8595;

	--icon-accent: var(--brand-secondary);
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: butt;
	--icon-join: miter;

	--font-display: 'Audiowide', system-ui, sans-serif;
	--font-body: system-ui, 'Segoe UI', Roboto, sans-serif;
	--font-mono: ui-monospace, 'Courier New', monospace;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.7rem;
	--font-size-subheading: 2.3rem;
	--font-size-heading: 2.8rem;
	--font-size-stat: 3.2rem;
	--font-size-display: 4rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 400;
	--font-weight-display: 400;
	--line-height-tight: 1.2;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.7;
	--letter-spacing-display: 0.02em;
	--letter-spacing-body: normal;

	--radius-dense: .2rem;
	--radius-input: .3rem;
	--radius-button: .3rem;
	--radius-card: .4rem;
	--radius-sheet: .5rem;
	--radius-shell: .6rem;
	--radius-pill: .6rem;
	--radius-avatar: .4rem;

	--pad-cell: .4rem;
	--pad-dense: .6rem;
	--pad-row: 1rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.4rem;
	--pad-button: 1rem;
	--pad-button-inline: 2rem;
	--pad-card: 1.4rem;
	--pad-sheet: 2rem;
	--pad-page: 1.6rem;
	--pad-shell: 2.8rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .6rem;
	--gap-inline: .8rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.4rem;
	--gap-section: 1.4rem;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(17, 24, 39, 0.14);
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem rgba(17, 24, 39, 0.10);
	--elevation-raised: 0 .1rem .2rem rgba(17, 24, 39, 0.10);
	--elevation-inset: inset 0 .1rem .2rem rgba(17, 24, 39, 0.10);
	--elevation-overlay: 0 .2rem .4rem rgba(17, 24, 39, 0.10), 0 1.2rem 2.4rem -.6rem rgba(17, 24, 39, 0.18);
	--elevation-glow: 0 0 1rem .1rem rgba(15, 169, 189, 0.30);
	--elevation-surround: 0 0 .8rem rgba(15, 169, 189, 0.22);

	--surface-page-backdrop: radial-gradient(120% 80% at 50% 100%, rgba(15, 169, 189, 0.06) 0%, transparent 60%);

	--motion-fast: 150ms;
	--motion-base: 300ms;
	--motion-slow: 450ms;
	--motion-enter-distance: .2rem;
	--motion-enter-name: motionEnter;
	--sound-message-received: ping;
	--ease-standard: cubic-bezier(0.3, 0, 0.7, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.1, 0, 0.3, 1);

	--chart-line-shape: angular;
	--chart-area-opacity: .52;
	--chart-material: luminous;
	--chart-line-weight: 1.25;
	--chart-glow-strength: 1.4;
	--chart-wash-opacity: 0.32;
	--chart-grid-opacity: 0.17;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-glow);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: radial-gradient(ellipse at 85% 0%, color-mix(in srgb, var(--chart-series-1) 15%, transparent), transparent 60%), linear-gradient(160deg, color-mix(in srgb, var(--chart-series-2) 4%, transparent), transparent 60%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: linear-gradient(0deg, color-mix(in srgb, var(--chart-series-1) 5%, transparent), transparent 75%);
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-glow);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 50%, rgba(255, 255, 255, .65));
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #6956C4;
	--chart-series-3: #276B9B;
	--chart-series-4: #A84083;
	--chart-series-5: #267663;
	--chart-series-6: #57677E;

	--stage-ground: #DCE5EC;
	--stage-plate-ink: var(--text-primary);
	--stage-prop: #626762;
	--stage-prop-lit: var(--text-primary);
	--landing-eyebrow-case: uppercase;

}

:root[data-theme="futuristic"][data-mode="dark"] {
	--surface-page: #0A0A14;
	--surface-card: #12121F;
	--surface-raised: #16162A;
	--surface-sunken: #08080F;
	--surface-hover: rgba(84, 234, 253, 0.08);
	--surface-selected: rgba(84, 234, 253, 0.16);
	--surface-overlay: rgba(2, 2, 8, 0.72);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #54EAFD;
	--brand-secondary: #3AB4FF;
	--brand-accent: #54EAFD;

	--text-primary: #F0F0F8;
	--text-secondary: #999AAB;
	--text-on-brand: #04121A;
	--text-on-status: #111827;
	--text-disabled: #777C96;
	--text-link: #54EAFD;
	--text-brand: #54EAFD;
	--text-accent: #54EAFD;
	--text-success: #00E676;
	--text-warning: #FFD600;
	--text-danger: #FF698B;
	--text-partial: #5FE3C7;

	--border-default: rgba(84, 234, 253, 0.22);
	--border-strong: rgba(84, 234, 253, 0.50);
	--border-width: .1rem;

	--status-success: #00E676;
	--status-warning: #FFD600;
	--status-danger: #FF2E5E;
	--status-partial: #5FE3C7;
	--status-info: #3AB4FF;

	--focus-ring-color: #54EAFD;

	--icon-accent: var(--brand-secondary);
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: butt;
	--icon-join: miter;

	--font-display: 'Audiowide', system-ui, sans-serif;
	--font-body: system-ui, 'Segoe UI', Roboto, sans-serif;
	--font-mono: ui-monospace, 'Courier New', monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.50);
	--border-highlight: rgba(84, 234, 253, 0.16);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: inset 0 .1rem 0 var(--border-highlight), 0 .1rem .2rem rgba(0, 0, 0, 0.45);
	--elevation-raised: inset 0 .1rem 0 var(--border-highlight), 0 .1rem .3rem rgba(0, 0, 0, 0.50);
	--elevation-inset: inset 0 .1rem .2rem rgba(0, 0, 0, 0.50);
	--elevation-overlay: 0 .2rem .6rem rgba(0, 0, 0, 0.55), 0 0 2rem rgba(84, 234, 253, 0.12);
	--elevation-glow: 0 1.4rem 2rem -.4rem rgba(84, 234, 253, 0.18), 0 0 1rem rgba(84, 234, 253, 0.25);
	--elevation-surround: 0 0 1rem rgba(84, 234, 253, 0.25);

	--surface-page-backdrop: radial-gradient(120% 80% at 50% 100%, rgba(84, 234, 253, 0.07) 0%, transparent 60%);

	--chart-series-2: #9389FA;
	--chart-series-3: #3B89BD;
	--chart-series-4: #D383CE;
	--chart-series-5: #71CBAA;
	--chart-series-6: #A7B9D4;

	--stage-ground: var(--surface-page);
	--stage-prop: var(--text-secondary);
	--stage-prop-lit: var(--brand-accent);

}

/* Masthead slot (ADR-0014 slot 10): a cyan horizon glow rising from the cover's
   base; the instrument edge on the row's bottom hairline over the button
   elevation's top highlight; the lamp is a square. */
:root[data-theme="futuristic"] .mastheadCover__wash {
	background-image:
		linear-gradient(to top, color-mix(in srgb, var(--brand-primary) 70%, transparent), transparent 55%),
		linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 40%, transparent), color-mix(in srgb, var(--brand-secondary) 30%, transparent));
}

:root[data-theme="futuristic"] .mainHeader__view {
	border-bottom-color: var(--brand-primary);
	box-shadow: var(--elevation-button);
}

:root[data-theme="futuristic"] .onlineIndicator__lamp {
	border-radius: 0;
}

/* ---------------------------------------------------------------------------
   Landing — the era's structural claim on the showroom demo tiles. The landing
   forces its own three eras (decision 13), so these live here rather than in
   the landing stylesheets (decision 0014). The shell axis rides along because
   the landing's own sheet now scores (0,3,0) too and imports later: without it
   these rules TIE and lose (#2506, gotchas/css.md CSS-35).
   --------------------------------------------------------------------------- */

:root[data-shell="landing"][data-theme="futuristic"] .realtime-space {
	border-top: .288rem solid var(--demo-accent);
}

:root[data-shell="landing"][data-theme="futuristic"] .realtime-space__identity {
	letter-spacing: .08em;
	text-transform: uppercase;
}


/**
* neumorphism.css — neumorphism theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
* @version 2026-Jun-19 Initial deep-theming version
*
* The production "neumorphism" theme: soft extruded UI. Cards are the SAME
* color as the page — depth comes from dual light/dark caster
* shadows with a soft edge highlight. Teal accent, Quicksand display and body (Space
* Mono only on `--font-mono`), `--border-width:0`. Raised idle / inset pressed, both expressed
* purely as `--elevation-*` box-shadow VALUE tokens built from the two
* caster colors (`--shadow-light-source` / `--shadow-dark-source`) and
* `--border-highlight`; light and dark share the elevation formulas.
* Component consumers use these roles; structural claims live below.
*
* ACCESSIBILITY COMPROMISES (the theme IS the compromise, deliberate, not a
* toggle). Same-material surfaces fail non-color contrast heuristics, so:
*   1. `--border-default` keeps a faint HAIRLINE (not transparent) so
*      interactive boundaries are perceivable under prefers-contrast/forced
*      colors and for low-vision users — even though the aesthetic is
*      "borderless". `--border-width` stays 0 (the hairline shows only where
*      a 1px boundary is explicitly applied / under contrast media queries).
*   2. Primary buttons get a REAL brand fill (`--brand-primary`), not a flat
*      same-material surface, so the primary action is unambiguous.
*   3. The focus-visible ring is NEVER suppressed — it is shadow-independent
*      (real outline) so keyboard focus survives the soft-shadow look.
* The `prefers-contrast: more` / `forced-colors` fallback below makes the
* hairline a solid 1px boundary.
*
* Activated by the runtime gate (dt-runtime): `data-theme="neumorphism"`
* (+ `data-mode="dark"`) on <html>. Values re-derived from
* styleBoard/palettes.js (`neumorph` preset). See knowledge-base/style/.
*/

:root[data-theme="neumorphism"] {
	--surface-page: #E8EEEC;
	--surface-card: #E8EEEC;
	--surface-raised: #E8EEEC;
	--surface-sunken: #E0E6E4;
	--surface-hover: #DDE3E1;
	--surface-selected: #D4DBD9;
	--surface-overlay: rgba(45, 58, 56, 0.40);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #006666;
	--brand-secondary: #5FC2B6;
	--brand-accent: #2C8379;

	--text-primary: #293D38;
	--text-secondary: #56605E;
	--text-on-brand: #FFFFFF;
	--text-on-status: #F7F7F8;
	--text-disabled: #6C7C78;
	--text-link: #006666;
	--text-brand: #006666;
	--text-accent: #236860;
	--text-success: #236860;
	--text-warning: #8A4F1E;
	--text-danger: #B42626;
	--text-partial: #A43554;

	--border-default: rgba(45, 58, 56, 0.10);
	--border-strong: rgba(45, 58, 56, 0.18);
	--border-width: 0;

	--status-success: #28766D;
	--status-warning: #9C5A21;
	--status-danger: #CA2A2A;
	--status-partial: #B93C5F;
	--status-info: #21789D;

	--focus-ring-color: #006666;

	--icon-accent: #2B8177;
	--icon-fill: rgba(43, 129, 119, 0.14);
	--icon-stroke-width: .25rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Quicksand', system-ui, sans-serif;
	--font-body: 'Quicksand', system-ui, sans-serif;
	--font-mono: 'Space Mono', 'Courier New', monospace;

	--font-size-label: 1.1rem;
	--font-size-caption: 1.3rem;
	--font-size-body: 1.5rem;
	--font-size-lead: 1.7rem;
	--font-size-subheading: 2.1rem;
	--font-size-heading: 2.5rem;
	--font-size-stat: 3rem;
	--font-size-display: 3.6rem;
	--font-weight-body: 500;
	--font-weight-medium: 600;
	--font-weight-heading: 700;
	--font-weight-display: 700;
	--line-height-tight: 1.25;
	--line-height-body: 1.55;
	--line-height-relaxed: 1.7;
	--letter-spacing-display: normal;
	--letter-spacing-body: 0.01em;

	--radius-dense: .8rem;
	--radius-input: 1.2rem;
	--radius-button: 1.2rem;
	--radius-card: 1.6rem;
	--radius-sheet: 2rem;
	--radius-shell: 2.4rem;
	--radius-pill: 999rem;
	--radius-avatar: 999rem;

	--pad-cell: .6rem;
	--pad-dense: 1rem;
	--pad-row: 1.2rem;
	--pad-input: 1.2rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1.2rem;
	--pad-button-inline: 2.4rem;
	--pad-card: 2.4rem;
	--pad-sheet: 2.8rem;
	--pad-page: 2.4rem;
	--pad-shell: 4rem;
	--gap-hairline: .2rem;
	--gap-tight: .6rem;
	--gap-dense: 1rem;
	--gap-inline: 1rem;
	--gap-stack: 1.6rem;
	--gap-tile: 2.8rem;
	--gap-section: 2.8rem;

	--shadow-light-source: rgba(255, 255, 255, 0.88);
	--shadow-dark-source: rgba(151, 172, 164, 0.42);
	--border-highlight: rgba(255, 255, 255, 0.40);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-raised: .7rem .7rem 1.6rem var(--shadow-dark-source), -.6rem -.6rem 1.4rem var(--shadow-light-source), inset .1rem .1rem .1rem var(--border-highlight);
	--elevation-overlay: 1.2rem 1.2rem 2.8rem var(--shadow-dark-source), -.8rem -.8rem 2rem var(--shadow-light-source), inset .1rem .1rem .1rem var(--border-highlight);
	--elevation-inset: inset .2rem .2rem .5rem var(--shadow-dark-source), inset -.2rem -.2rem .4rem var(--shadow-light-source);
	--elevation-button: .25rem .25rem .6rem var(--shadow-dark-source), -.25rem -.25rem .6rem var(--shadow-light-source), inset .1rem .1rem .1rem var(--border-highlight);
	--elevation-surround: .4rem .4rem .9rem var(--shadow-dark-source), -.4rem -.4rem .9rem var(--shadow-light-source);
	--elevation-glow: 0 0 0 .2rem rgba(35, 119, 110, 0.18), 0 0 1.2rem -.2rem rgba(35, 119, 110, 0.25);

	--motion-fast: 180ms;
	--motion-base: 320ms;
	--motion-slow: 500ms;
	--motion-enter-distance: .3rem;
	--motion-enter-name: motionEnter;
	--sound-message-received: pop;
	--ease-standard: cubic-bezier(0.35, 0, 0.15, 1);
	--ease-emphasized: cubic-bezier(0.25, 0, 0.05, 1);
	--ease-enter: cubic-bezier(0.05, 0, 0.15, 1);

	--chart-line-shape: smooth;
	--chart-area-opacity: .34;
	--chart-material: sculpted;
	--chart-line-weight: 1.8;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.12;
	--chart-grid-opacity: 0.09;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: transparent;
	--chart-frame-texture: none;
	--chart-plot-surface: var(--surface-card);
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-inset);
	--chart-mark-elevation: var(--elevation-raised);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(110deg, rgba(255, 255, 255, .7), transparent 60%, rgba(0, 0, 0, .12));
	--chart-track-surface: var(--surface-card);
	--chart-track-elevation: var(--elevation-inset);
	--chart-ring-detail: 0;

	--chart-series-2: #647F92;
	--chart-series-3: #9A785D;
	--chart-series-4: #776B92;
	--chart-series-5: #6E805C;
	--chart-series-6: #93667C;

}

:root[data-theme="neumorphism"][data-mode="dark"] {
	--surface-page: #28322F;
	--surface-card: #28322F;
	--surface-raised: #28322F;
	--surface-sunken: #222B28;
	--surface-hover: #313736;
	--surface-selected: #383F3D;
	--surface-overlay: rgba(0, 0, 0, 0.55);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #70CBBB;
	--brand-secondary: #99DED2;
	--brand-accent: #70CBBB;

	--text-primary: #E4ECE8;
	--text-secondary: #ADBDB6;
	--text-on-brand: #0E1413;
	--text-on-status: #2D3A38;
	--text-disabled: #7D8D8A;
	--text-link: #83D4C7;
	--text-brand: #83D4C7;
	--text-accent: #83D4C7;
	--text-success: #48C0B1;
	--text-warning: #E1A36E;
	--text-danger: #EC9090;
	--text-partial: #DD96A9;

	--border-default: rgba(220, 228, 226, 0.10);
	--border-strong: rgba(220, 228, 226, 0.16);
	--border-width: 0;

	--status-success: #40B8AA;
	--status-warning: #DF9A60;
	--status-danger: #EC9090;
	--status-partial: #D98AA0;
	--status-info: #47ACD8;

	--focus-ring-color: #83D4C7;

	--icon-accent: #99DED2;
	--icon-fill: rgba(153, 222, 210, 0.12);
	--icon-stroke-width: .25rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Quicksand', system-ui, sans-serif;
	--font-body: 'Quicksand', system-ui, sans-serif;
	--font-mono: 'Space Mono', 'Courier New', monospace;

	--shadow-light-source: rgba(103, 127, 117, 0.16);
	--shadow-dark-source: rgba(7, 15, 12, 0.42);
	--border-highlight: rgba(213, 238, 225, 0.07);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-raised: .7rem .7rem 1.6rem var(--shadow-dark-source), -.6rem -.6rem 1.4rem var(--shadow-light-source), inset .1rem .1rem .1rem var(--border-highlight);
	--elevation-overlay: 1.2rem 1.2rem 2.8rem var(--shadow-dark-source), -.8rem -.8rem 2rem var(--shadow-light-source), inset .1rem .1rem .1rem var(--border-highlight);
	--elevation-inset: inset .2rem .2rem .5rem var(--shadow-dark-source), inset -.2rem -.2rem .4rem var(--shadow-light-source);
	--elevation-button: .25rem .25rem .6rem var(--shadow-dark-source), -.25rem -.25rem .6rem var(--shadow-light-source), inset .1rem .1rem .1rem var(--border-highlight);
	--elevation-surround: .4rem .4rem .9rem var(--shadow-dark-source), -.4rem -.4rem .9rem var(--shadow-light-source);
	--elevation-glow: 0 0 0 .2rem rgba(112, 203, 187, 0.20), 0 0 1.4rem -.2rem rgba(112, 203, 187, 0.25);

	--chart-series-2: #90ADB4;
	--chart-series-3: #BCA99A;
	--chart-series-4: #8995B9;
	--chart-series-5: #B8C3A1;
	--chart-series-6: #CDAEBE;

}

/* ── structural claims (decision 0014) ── */

:root[data-theme="neumorphism"] .button-textOnly:not(:active) {
	box-shadow: var(--elevation-flat);
}

:root[data-theme="neumorphism"] .button-darkBackground:enabled:hover,
:root[data-theme="neumorphism"] .button-darkBackground:enabled:focus-visible {
	background-color: var(--brand-accent);
	color: var(--text-on-brand);
	box-shadow: var(--elevation-surround);
}

:root[data-theme="neumorphism"] .button-darkBackground:enabled:active {
	box-shadow: var(--elevation-inset);
}

:root[data-theme="neumorphism"] .entityImageAndName__img,
:root[data-theme="neumorphism"] .entityImageAndName__imageNode {
	border-radius: var(--radius-avatar);
}

:root[data-theme="neumorphism"] .profileImageExpander__print,
:root[data-theme="neumorphism"] .profileImageExpander__initials,
:root[data-theme="neumorphism"] .profileImagesScrollArea__view {
	outline: 0;
}

:root[data-theme="neumorphism"] .profileImagesScrollArea__imageFrame {
	box-shadow: var(--elevation-raised);
}

:root[data-theme="neumorphism"] .profileImagesScrollArea__highlightedImage {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--brand-primary), var(--elevation-raised);
}

:root[data-theme="neumorphism"] .mainSearchBar__view::before,
:root[data-theme="neumorphism"] .mainSearchBar__view::after {
	content: none;
}

:root[data-theme="neumorphism"] .mainSearchBar__input {
	clip-path: none;
	border-radius: var(--radius-pill);
	box-shadow: var(--elevation-inset);
	width: calc(100% - 1.4rem - max(4.5rem, var(--touch-target-primary)));
	right: calc(1.4rem + max(4.5rem, var(--touch-target-primary)));
	padding: .3rem var(--pad-input-inline); /* intentional literal: the .3rem vertical is the base rule's, kept so the input's outer box height is unchanged */
}

:root[data-theme="neumorphism"] .mainSearchBar__button {
	clip-path: none;
	color: var(--text-on-brand);
	border-radius: var(--radius-pill);
	box-shadow: var(--elevation-button);
}

:root[data-theme="neumorphism"] .tabHeaderBar__view {
	--tabHeaderBar-rail-border-color: transparent;
	--tabHeaderBar-indicator-thickness: 0;
}

:root[data-theme="neumorphism"] .tabHeaderBar__tab:active,
:root[data-theme="neumorphism"] .tabHeaderBar__tab[aria-selected='true'] {
	background-color: var(--surface-sunken);
	box-shadow: var(--elevation-inset);
}

:root[data-theme="neumorphism"] .multiStepSlider__view-text .multiStepSlider__track-text,
:root[data-theme="neumorphism"] .multiStepSlider__view-text .multiStepSlider__knob {
	border-radius: var(--radius-pill);
}

:root[data-theme="neumorphism"] .multiStepSlider__view-text .multiStepSlider__track-text {
	box-shadow: var(--elevation-inset);
}

@media (prefers-contrast: more) {
	:root[data-theme="neumorphism"],
	:root[data-theme="neumorphism"][data-mode="dark"] {
		--border-width: .1rem !important;
		--border-default: var(--border-strong) !important;
	}
}

@media (forced-colors: active) {
	:root[data-theme="neumorphism"],
	:root[data-theme="neumorphism"][data-mode="dark"] {
		--border-width: .1rem !important;
	}
}

/* ── masthead (decision 0014, slot 10) ── */
:root[data-theme="neumorphism"] .mainHeader__cover {
	border-radius: 0 0 var(--radius-shell) var(--radius-shell);
	box-shadow: var(--elevation-inset);
}

:root[data-theme="neumorphism"] .mainHeader__view {
	border-bottom-color: transparent;
	box-shadow: var(--elevation-raised);
	border-radius: 0 0 var(--radius-shell) var(--radius-shell);
}

:root[data-theme="neumorphism"] .onlineIndicator__lamp {
	border-radius: var(--radius-avatar);
}

/**
* retro.css — retro theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The production "retro" theme: nostalgic print. Warm off-white paper
* surfaces, serif type (Fraunces display), thin ink hairlines, FLAT (almost
* no shadow — hairline offsets only), one vintage red accent. Claims five
* structural slots (decision 0014, section at the end of this file); the
* rest is token-expressible. Activated by the runtime gate (dt-runtime):
* `data-theme="retro"` (+ `data-mode="dark"`) on <html>. Values are authored
* here; the styleBoard mirrors them. `:root[...]` specificity so the
* theme block beats the `:root` modern floor at the same source order.
*
* @version 2026-Jun-19 Initial deep-theming version
*/

:root[data-theme="retro"] {
	--surface-page: #F2F1EC;
	--surface-card: #FBFAF6;
	--surface-raised: #FBFAF6;
	--surface-sunken: #E5E2D8;
	--surface-hover: #ECEAE2;
	--surface-selected: #E5E2D8;
	--surface-overlay: rgba(26, 26, 26, 0.45);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #C0392B;
	--brand-secondary: #6E6A60;
	--brand-accent: #C0392B;

	--text-primary: #1A1A1A;
	--text-secondary: #67635A;
	--text-on-brand: #FBFAF6;
	--text-on-status: #FFFFFF;
	--text-disabled: #847E6F;
	--text-link: #B33528;
	--text-brand: #B33528;
	--text-accent: #B33528;
	--text-success: #4E6C34;
	--text-warning: #7D5C20;
	--text-danger: #8E2418;
	--text-partial: #9A4C3C;

	--border-default: rgba(26, 26, 26, 0.20);
	--border-strong: rgba(26, 26, 26, 0.40);
	--border-width: .1rem;

	--status-success: #5A7D3C;
	--status-warning: #8F6A25;
	--status-danger: #8E2418;
	--status-partial: #B55A47;
	--status-info: #6E6A60;

	--focus-ring-color: #C0392B;

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .225rem;
	--icon-cap: butt;
	--icon-join: miter;

	--font-display: 'Fraunces', Georgia, serif;
	--font-body: Georgia, 'Times New Roman', serif;
	--font-mono: 'Courier New', monospace;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.5rem;
	--font-size-lead: 1.8rem;
	--font-size-subheading: 2.2rem;
	--font-size-heading: 2.9rem;
	--font-size-stat: 3.4rem;
	--font-size-display: 4.4rem;
	--font-weight-body: 400;
	--font-weight-medium: 700;
	--font-weight-heading: 700;
	--font-weight-display: 900;
	--line-height-tight: 1.15;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.65;
	--letter-spacing-display: normal;
	--letter-spacing-body: normal;

	--radius-dense: .2rem;
	--radius-input: .2rem;
	--radius-button: .2rem;
	--radius-card: .3rem;
	--radius-sheet: .4rem;
	--radius-shell: .4rem;
	--radius-pill: .3rem;
	--radius-avatar: .3rem;

	--pad-cell: .4rem;
	--pad-dense: .8rem;
	--pad-row: 1.1rem;
	--pad-input: 1.2rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1.1rem;
	--pad-button-inline: 2.2rem;
	--pad-card: 2rem;
	--pad-sheet: 2.6rem;
	--pad-page: 2rem;
	--pad-shell: 3.6rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.4rem;
	--gap-tile: 1.8rem;
	--gap-section: 2.2rem;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(26, 26, 26, 0.12);
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem 0 rgba(26, 26, 26, 0.14);
	--elevation-raised: 0 0.1rem 0 rgba(26, 26, 26, 0.10);
	--elevation-inset: inset 0 0.1rem 0.1rem rgba(26, 26, 26, 0.08);
	--elevation-overlay: 0 0.2rem 0 rgba(26, 26, 26, 0.16);
	--elevation-glow: none;
	--elevation-surround: 0 0 0 .1rem rgba(26, 26, 26, 0.10);

	--surface-card-texture: url('/assets/textures/retro-paper-grain.svg');

	--motion-fast: 180ms;
	--motion-base: 280ms;
	--motion-slow: 420ms;
	--motion-enter-distance: .2rem;
	--motion-enter-name: motionEnter;
	--sound-message-received: bell;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0, 0, 0.05, 1);

	--chart-line-shape: angular;
	--chart-area-opacity: .3;
	--chart-material: printed;
	--chart-line-weight: 1.2;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.12;
	--chart-grid-opacity: 0.25;
	--chart-marker-shape: diamond;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: var(--border-strong);
	--chart-frame-texture: var(--surface-card-texture);
	--chart-plot-surface: transparent;
	--chart-plot-texture: repeating-linear-gradient(0deg, transparent, transparent 1.9rem, color-mix(in srgb, var(--text-primary) 5%, transparent) 1.9rem, color-mix(in srgb, var(--text-primary) 5%, transparent) 2rem);
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-dense);
	--chart-bar-texture: repeating-linear-gradient(135deg, transparent, transparent .2rem, color-mix(in srgb, var(--surface-card) 70%, transparent) .2rem, color-mix(in srgb, var(--surface-card) 70%, transparent) .3rem);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

	--chart-series-2: #555B51;
	--chart-series-3: #877044;
	--chart-series-4: #6B7585;
	--chart-series-5: #965E6A;
	--chart-series-6: #647D72;

	--stage-ground: #E9E4D9;
	--stage-plate-ink: #293632;
	--stage-prop: #626762;
	--stage-prop-lit: #343E3B;
	--landing-eyebrow-case: none;

}

:root[data-theme="retro"][data-mode="dark"] {
	--surface-page: #151310;
	--surface-card: #26241F;
	--surface-raised: #26241F;
	--surface-sunken: #0E0C0A;
	--surface-hover: #2C2925;
	--surface-selected: #34302A;
	--surface-overlay: rgba(0, 0, 0, 0.55);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #E2674F;
	--brand-secondary: #A8A294;
	--brand-accent: #E2674F;

	--text-primary: #F2F1EC;
	--text-secondary: #A8A294;
	--text-on-brand: #1E1C18;
	--text-on-status: #1A1A1A;
	--text-disabled: #807B6D;
	--text-link: #E67C67;
	--text-brand: #E67C67;
	--text-accent: #E67C67;
	--text-success: #7FA856;
	--text-warning: #D9A24E;
	--text-danger: #F36E86;
	--text-partial: #D98A78;

	--border-default: rgba(242, 241, 236, 0.18);
	--border-strong: rgba(242, 241, 236, 0.36);
	--border-width: .1rem;

	--status-success: #7FA856;
	--status-warning: #D9A24E;
	--status-danger: #F2607A;
	--status-partial: #D98A78;
	--status-info: #A8A294;

	--focus-ring-color: #E2674F;

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .225rem;
	--icon-cap: butt;
	--icon-join: miter;

	--font-display: 'Fraunces', Georgia, serif;
	--font-body: Georgia, 'Times New Roman', serif;
	--font-mono: 'Courier New', monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.35);
	--border-highlight: rgba(242, 241, 236, 0.06);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem 0 rgba(0, 0, 0, 0.40);
	--elevation-raised: 0 0.1rem 0 rgba(0, 0, 0, 0.30);
	--elevation-inset: inset 0 0.1rem 0.1rem rgba(0, 0, 0, 0.25);
	--elevation-overlay: 0 0.2rem 0 rgba(0, 0, 0, 0.40);
	--elevation-glow: none;
	--elevation-surround: 0 0 0 .1rem rgba(242, 241, 236, 0.14);

	--chart-series-2: #CCC3AF;
	--chart-series-3: #A7AA91;
	--chart-series-4: #AE9D76;
	--chart-series-5: #92A1B3;
	--chart-series-6: #BA929D;

	--stage-ground: #24242B;
	--stage-plate-ink: var(--text-primary);
	--stage-prop: var(--text-secondary);
	--stage-prop-lit: var(--text-primary);

}

/* ── structural claims (decision 0014) ── */

/* Header-underline slot: the editorial section rule — a double hairline rule
   under section titles (newspaper section-head grammar; CSS `double` draws two
   equal lines), drawn in ink, not the accent, so it reads as typesetting
   rather than decoration. The 3px floor keeps it a double rule at the phone
   band's smaller root — below 3px, `double` collapses to a solid band. */
:root[data-theme="retro"] .pillboxWithHeading__title {
	border-bottom: max(.3rem, 3px) double var(--border-strong); /* intentional literal: `double` needs >=3px for two lines + gap; .3rem alone falls to 2px below root ~10px */
	padding-bottom: var(--gap-tight);
}

/* Card/pillBox frame slot: the printed ledger-card rule — an ink hairline
   inset inside the card pad (regalia's negative-offset outline mechanism, ink
   instead of gold, tighter offset). Outline, not a positioned pseudo, per the
   0014 external-layout invariant; excludes the zero-block-pad .chip (the rule
   would strike its label) and yields to :focus-visible so the app floor's
   focus ring wins on focusable pillBoxes. */
:root[data-theme="retro"] .pillBox:not(.chip):not(:focus-visible) {
	outline: .1rem solid var(--border-default);
	outline-offset: -.5rem;
}

/* Tile slot: night print is line-drawn — dark-mode tiles take the strong
   cream hairline instead of the faint default, matching the letterpress
   elevation language (rules, not lifts). */
:root[data-theme="retro"][data-mode="dark"] .tile:not([class*="__view-selected"]) {
	border-color: var(--border-strong);
}

/* Overlay sheet-edge slot: the newspaper masthead — every overlay sheet opens
   under a thick-thin rule pair, vintage red over an ink hairline. A paint
   layer (regalia's ::before mechanism): the sheet's box and its children's
   layout are untouched. */
:root[data-theme="retro"] .overlayPanel::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: max(.4rem, 4px); /* intentional literal: the thick-thin pair needs 4 whole px — .4rem alone falls to 3.31px at the phone band's 8.29px root and the percentage stops go sub-pixel */
	background: linear-gradient(to bottom,
		var(--brand-primary) 0 50%,
		transparent 50% 75%,
		var(--border-strong) 75% 100%);
	z-index: 1;
}

/* Search-field chrome slot (the 0014 amendment landing with this file): the
   base HUD parallelogram flattens to a letterpress field — square hairline
   input, red stamp button, decorative diagonals removed. The input/button
   boxes re-space because the base geometry overlaps them under the diagonals;
   the view's outer box is untouched (the amendment's invariant). */
:root[data-theme="retro"] .mainSearchBar__view::before,
:root[data-theme="retro"] .mainSearchBar__view::after {
	content: none;
}

:root[data-theme="retro"] .mainSearchBar__input {
	clip-path: none;
	border: var(--border-width) solid var(--border-strong);
	background-color: var(--surface-card);
	border-radius: var(--radius-input);
	width: calc(100% - 1.4rem - max(4.5rem, var(--touch-target-primary)));
	right: calc(1.4rem + max(4.5rem, var(--touch-target-primary)));
	padding: .3rem var(--pad-dense); /* intentional literal: the .3rem vertical is the base rule's, kept so the input's outer box height is unchanged */
}

:root[data-theme="retro"] .mainSearchBar__button {
	clip-path: none;
	border-radius: var(--radius-button);
	box-shadow: var(--elevation-button);
}

/* Masthead slot (ADR-0014 slot 10): a halftone screen over the cover's wash,
   the newspaper thick-thin rule pair under the row in ink; the lamp is a
   square inside an ink hairline. */
:root[data-theme="retro"] .mastheadCover__wash {
	background-image:
		radial-gradient(circle, rgba(0, 0, 0, .38) .08rem, transparent .12rem),
		linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 55%, transparent), color-mix(in srgb, var(--brand-secondary) 40%, transparent));
	background-size: .5rem .5rem, auto;
}

:root[data-theme="retro"] .mainHeader__view {
	border-bottom-color: transparent;
	background-image: linear-gradient(var(--text-primary), var(--text-primary)), linear-gradient(var(--text-primary), var(--text-primary));
	background-size: 100% .3rem, 100% .1rem;
	background-position: 0 100%, 0 calc(100% - .5rem);
	background-repeat: no-repeat;
}

:root[data-theme="retro"] .onlineIndicator__lamp {
	border-radius: 0;
	outline: var(--border-width) solid var(--text-primary);
	outline-offset: .1rem;
	background-image: none;
}

/* ---------------------------------------------------------------------------------------
 * Retro picture lightbox (ADR-0014 slot 3) — the photo print: a paper border around the
 * picture under the letterpress offset, the tray sheet a heavy-ruled paper card, no glass.
 * ------------------------------------------------------------------------------------- */

:root[data-theme="retro"] .profileImageExpander__print,
:root[data-theme="retro"] .profileImageExpander__initials {
	border: var(--pad-dense) solid var(--surface-card);
	border-radius: 0;
	background-color: var(--surface-card);
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: 0;
	box-shadow: var(--elevation-overlay);
}

:root[data-theme="retro"] .profileImagesScrollArea__view {
	border: calc(var(--border-width) * 2) solid var(--border-strong);
	border-radius: 0;
	background-color: var(--surface-card);
	background-image: var(--surface-card-texture);
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

:root[data-theme="retro"] .profileImageExpander__close,
:root[data-theme="retro"] .profileImageExpander__step,
:root[data-theme="retro"] .profileImagesScrollArea__imageFrame {
	border-radius: 0;
}

:root[data-theme="retro"] .profileImageExpander__close,
:root[data-theme="retro"] .profileImageExpander__step {
	border-color: var(--border-strong);
}

/* ---------------------------------------------------------------------------
   Landing — the era's structural claim on the showroom demo tiles. The landing
   forces its own three eras (decision 13), so these live here rather than in
   the landing stylesheets (decision 0014). The shell axis rides along because
   the landing's own sheet now scores (0,3,0) too and imports later: without it
   these rules TIE and lose (#2506, gotchas/css.md CSS-35).
   --------------------------------------------------------------------------- */

:root[data-shell="landing"][data-theme="retro"] .realtime-space {
	border-width: .16rem;
	box-shadow: .352rem .352rem 0 var(--demo-line); /* intentional literal: retro's hard offset sticker edge in the demo's own line color — the era's voice, drawn in --demo-* rather than lifted off the shared ladder */
}

:root[data-shell="landing"][data-theme="retro"] .realtime-space__identity {
	letter-spacing: .035em;
}


/**
* ember.css — ember theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* Warm terminal: charcoal glass, copper edges and amber controls, with cyan
* reserved for brand emphasis. Compact Space Mono typography and a restrained
* hearth glow carry the same identity into the warm-paper light mode.
*
* Activated by the runtime gate (dt-runtime): `data-theme="ember"`
* (+ `data-mode="dark"`) on <html>. See knowledge-base/style/.
*
* @version 2026-Jun-19 Graduated from styleBoard cyber-ember candidate
*/

:root[data-theme="ember"] {
	--surface-page: #F2EEE8;
	--surface-card: rgba(255, 252, 247, 0.92);
	--surface-raised: #FFFCF7;
	--surface-sunken: #E9E1D7;
	--surface-hover: #EDE1D2;
	--surface-selected: #EDDDC9;
	--surface-overlay: rgba(24, 16, 8, 0.55);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #0FB5C9;
	--brand-secondary: #E0853A;
	--brand-accent: #E0853A;

	--text-primary: #241B14;
	--text-secondary: #665748;
	--text-on-brand: #18120A;
	--text-on-status: #F7F7F8;
	--text-disabled: #806B58;
	--text-link: #096A76;
	--text-brand: #096A76;
	--text-accent: #914E17;
	--text-success: #196C5D;
	--text-warning: #914E17;
	--text-danger: #BB193F;
	--text-partial: #196C5D;

	--border-default: rgba(137, 87, 43, 0.20);
	--border-strong: rgba(137, 87, 43, 0.45);
	--border-width: .1rem;

	--status-success: #1C7768;
	--status-warning: #A15719;
	--status-danger: #CF1B45;
	--status-partial: #1C7768;
	--status-info: #0A7582;

	--focus-ring-color: #C96C20;

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: square;
	--icon-join: miter;

	--font-display: 'Space Mono', 'Courier New', monospace;
	--font-body: 'Space Mono', monospace;
	--font-mono: 'Space Mono', 'Courier New', monospace;

	--radius-dense: .2rem;
	--radius-input: .3rem;
	--radius-button: .3rem;
	--radius-card: .6rem;
	--radius-sheet: .8rem;
	--radius-shell: 1rem;
	--radius-pill: .6rem;
	--radius-avatar: .6rem;

	--pad-cell: .4rem;
	--pad-dense: .6rem;
	--pad-row: 1rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.4rem;
	--pad-button: 1rem;
	--pad-button-inline: 2rem;
	--pad-card: 1.2rem;
	--pad-sheet: 2rem;
	--pad-page: 1.6rem;
	--pad-shell: 2.8rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: 1rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.4rem;
	--gap-section: 1.4rem;

	--font-size-label: 1rem;
	--font-size-caption: 1.1rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.2rem;
	--font-size-stat: 2.6rem;
	--font-size-display: 3.2rem;
	--font-weight-body: 400;
	--font-weight-medium: 700;
	--font-weight-heading: 700;
	--font-weight-display: 700;
	--line-height-tight: 1.25;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.6;
	--letter-spacing-display: -.025em;
	--letter-spacing-body: normal;

	--motion-fast: 140ms;
	--motion-base: 240ms;
	--motion-slow: 380ms;
	--motion-enter-distance: .3rem;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.05, 0.7, 0.1, 1);
	--motion-enter-name: emberEnter;
	--sound-message-received: tick;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(36, 24, 12, 0.16);
	--border-highlight: transparent;
	--surface-blur: blur(1rem);
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem rgba(36, 24, 12, 0.10);
	--elevation-raised: inset 0 0 0 .1rem var(--border-default), 0 .2rem .6rem -.2rem rgba(36, 24, 12, 0.08), 0 .6rem 1.6rem -.6rem var(--shadow-dark-source);
	--elevation-inset: inset 0 .1rem .2rem rgba(36, 24, 12, 0.10);
	--elevation-overlay: 0 .2rem .4rem rgba(36, 24, 12, 0.10), 0 1.2rem 2.8rem -.6rem rgba(36, 24, 12, 0.22);
	--elevation-glow: 0 0 .8rem rgba(224, 133, 58, 0.22);
	--elevation-surround: 0 0 .4rem rgba(36, 24, 12, 0.08), 0 0 1rem .1rem var(--shadow-dark-source);
	--surface-clip: none;

	--surface-page-backdrop: radial-gradient(ellipse at 50% 30%, rgba(255, 214, 170, 0.18) 0%, rgba(255, 214, 170, 0) 45%, rgba(140, 70, 20, 0.07) 100%);
	--surface-page-backdrop-size: cover;
	--surface-page-backdrop-repeat: no-repeat;

	--chart-line-shape: angular;
	--chart-area-opacity: .48;
	--chart-material: luminous;
	--chart-line-weight: 1.6;
	--chart-glow-strength: 0.9;
	--chart-wash-opacity: 0.26;
	--chart-grid-opacity: 0.13;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: radial-gradient(ellipse at 85% 0%, color-mix(in srgb, var(--chart-series-1) 15%, transparent), transparent 60%), linear-gradient(160deg, color-mix(in srgb, var(--chart-series-2) 4%, transparent), transparent 60%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: linear-gradient(0deg, color-mix(in srgb, var(--chart-series-1) 5%, transparent), transparent 75%);
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-glow);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 50%, rgba(255, 255, 255, .65));
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #316F73;
	--chart-series-3: #85608C;
	--chart-series-4: #967239;
	--chart-series-5: #AA5360;
	--chart-series-6: #62707D;

}

:root[data-theme="ember"][data-mode="dark"] {
	--surface-page: #110F0D;
	--surface-card: rgba(34, 29, 25, 0.94);
	--surface-raised: #2B241E;
	--surface-sunken: #191512;
	--surface-hover: #352A20;
	--surface-selected: #3B2B1E;
	--surface-overlay: rgba(9, 7, 5, 0.76);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #25D8EC;
	--brand-secondary: #FF9D3D;
	--brand-accent: #FF9D3D;

	--text-primary: #F0E6DC;
	--text-secondary: #C2AE9B;
	--text-on-brand: #1A0F06;
	--text-on-status: #241B14;
	--text-disabled: #A08A76;
	--text-link: #25D8EC;
	--text-brand: #25D8EC;
	--text-accent: #FF9D3D;
	--text-success: #5FE3C7;
	--text-warning: #FFB347;
	--text-danger: #FF617E;
	--text-partial: #5FE3C7;

	--border-default: rgba(255, 181, 112, 0.18);
	--border-strong: rgba(255, 181, 112, 0.40);
	--border-width: .1rem;

	--status-success: #5FE3C7;
	--status-warning: #FFB347;
	--status-danger: #FF5C7A;
	--status-partial: #5FE3C7;
	--status-info: #25D8EC;

	--focus-ring-color: #FF9D3D;

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: square;
	--icon-join: miter;

	--font-display: 'Space Mono', 'Courier New', monospace;
	--font-body: 'Space Mono', monospace;
	--font-mono: 'Space Mono', 'Courier New', monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.55);
	--border-highlight: rgba(255, 157, 61, 0.10);
	--surface-blur: blur(1rem);
	--elevation-flat: none;
	--elevation-button: inset 0 .1rem 0 var(--border-highlight), 0 .1rem .2rem rgba(0, 0, 0, 0.50);
	--elevation-raised: inset 0 0 0 .1rem var(--border-default), inset 0 .1rem 0 var(--border-highlight), 0 .4rem 1.2rem -.4rem var(--shadow-dark-source);
	--elevation-inset: inset 0 .1rem .3rem rgba(0, 0, 0, 0.55);
	--elevation-overlay: 0 .4rem .8rem rgba(0, 0, 0, 0.50), 0 1.6rem 3.6rem -.8rem rgba(0, 0, 0, 0.70), 0 0 2rem rgba(255, 157, 61, 0.08);
	--elevation-glow: 0 0 1.2rem rgba(255, 157, 61, 0.22), inset 0 0 .6rem rgba(255, 157, 61, 0.08);
	--elevation-surround: 0 0 .4rem rgba(0, 0, 0, 0.50), 0 0 1.2rem .1rem rgba(255, 157, 61, 0.12);
	--surface-clip: none;

	--surface-page-backdrop: radial-gradient(ellipse at 50% 30%, rgba(255, 157, 61, 0.05) 0%, rgba(255, 157, 61, 0) 50%, rgba(0, 0, 0, 0.35) 100%);

	--chart-series-2: #62AFB3;
	--chart-series-3: #B98DC4;
	--chart-series-4: #D1B073;
	--chart-series-5: #D38E98;
	--chart-series-6: #8FA5B8;

}

@keyframes emberEnter {
	from {
		opacity: 0;
		transform: translateY(var(--motion-enter-distance));
	}

	55% {
		opacity: 1;
	}

	75% {
		opacity: .94;
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@media (prefers-reduced-motion: reduce) {
	:root[data-theme="ember"] {
		--motion-enter-name: motionEnter;
	}
}

/* Masthead — structural slot 10 */
:root[data-theme="ember"] .mastheadCover__wash {
	background-image:
		radial-gradient(ellipse at 50% 100%, color-mix(in srgb, var(--brand-accent) 28%, transparent), transparent 70%),
		linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 16%, transparent), color-mix(in srgb, var(--brand-secondary) 24%, transparent));
}

:root[data-theme="ember"] .mainHeader__view {
	border-bottom-color: transparent;
	background-image: linear-gradient(90deg, transparent, var(--brand-accent) 30%, var(--brand-accent) 70%, transparent);
	background-size: 100% .1rem;
	background-position: 0 100%;
	background-repeat: no-repeat;
	backdrop-filter: var(--surface-blur);
	-webkit-backdrop-filter: var(--surface-blur);
}

:root[data-theme="ember"] .onlineIndicator__header {
	font-family: var(--font-mono);
}

/**
* elegant.css — elegant theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* A quiet botanical palette: eucalyptus, ivory, pale sage and warm taupe.
* Fine serif headings, open spacing and matte paper surfaces carry the theme.
* Dark mode pairs deep eucalyptus surfaces with soft ivory and sage ink.
*
* Activated by the runtime gate (dt-runtime), which sets `data-theme` and
* `data-mode` on <html>. See knowledge-base/style/.
*
* @version 2026-Jun-19 Initial deep-theming version (was the modern old-money pass)
*/

:root[data-theme="elegant"] {
	--surface-page: #F8F9F6;
	--surface-card: #FFFFFF;
	--surface-raised: #FFFFFF;
	--surface-sunken: #EFF2ED;
	--surface-hover: #E7EDE7;
	--surface-selected: #CCD6CD;
	--surface-overlay: rgba(30, 39, 32, 0.45);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #526158;
	--brand-secondary: #847461;
	--brand-accent: #526158;

	--text-primary: #202420;
	--text-secondary: #505A52;
	--text-on-brand: #FFFFFF;
	--text-on-status: #FFFFFF;
	--text-disabled: #687168;
	--text-link: #3F5747;
	--text-brand: #3F5747;
	--text-accent: #655443;
	--text-success: #3F593D;
	--text-warning: #695025;
	--text-danger: #853F3A;
	--text-partial: #705034;

	--border-default: rgba(48, 61, 51, 0.10);
	--border-strong: rgba(48, 61, 51, 0.40);
	--border-width: .1rem;

	--status-success: #50694F;
	--status-warning: #81663B;
	--status-danger: #944F48;
	--status-partial: #856446;
	--status-info: #53686C;

	--focus-ring-color: #465A4B;

	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .125rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Baskervville', Georgia, serif;
	--font-body: 'Manrope', 'Inter', system-ui, sans-serif;
	--font-mono: 'Space Mono', ui-monospace, monospace;

	--radius-dense: .2rem;
	--radius-input: .2rem;
	--radius-button: .2rem;
	--radius-card: 0;
	--radius-pill: .2rem;
	--radius-sheet: .4rem;
	--radius-shell: 0;
	--radius-avatar: 999rem;

	--pad-cell: .4rem;
	--pad-dense: .8rem;
	--pad-row: 1.2rem;
	--pad-input: 1.4rem;
	--pad-input-inline: 1.8rem;
	--pad-button: 1.2rem;
	--pad-button-inline: 2.6rem;
	--pad-card: 2.4rem;
	--pad-sheet: 2.8rem;
	--pad-page: 2.4rem;
	--pad-shell: 4rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.4rem;
	--gap-tile: 2rem;
	--gap-section: 2.2rem;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.7rem;
	--font-size-subheading: 2.5rem;
	--font-size-heading: 3rem;
	--font-size-stat: 3.75rem;
	--font-size-display: 4.5rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 400;
	--font-weight-display: 400;
	--line-height-tight: 1.3;
	--line-height-body: 1.6;
	--line-height-relaxed: 1.7;
	--letter-spacing-display: -.035em;
	--letter-spacing-body: .005em;

	--motion-fast: 220ms;
	--motion-base: 420ms;
	--motion-slow: 600ms;
	--motion-enter-distance: .6rem;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
	--motion-enter-name: motionEnter;
	--sound-message-received: chime;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(30, 39, 32, 0.12);
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-raised: none;
	--elevation-inset: inset 0 .1rem .2rem rgba(30, 39, 32, 0.06);
	--elevation-overlay: 0 1.2rem 3.2rem rgba(30, 39, 32, 0.18);
	--elevation-glow: 0 0 1.2rem -.2rem rgba(70, 90, 75, 0.16);
	--elevation-surround: 0 0 .3rem rgba(30, 39, 32, 0.06), 0 .4rem 1.2rem var(--shadow-dark-source);

	--surface-page-backdrop: url('/assets/textures/elegant-laid-paper.svg');
	--surface-page-backdrop-size: 18rem 18rem;
	--surface-page-backdrop-repeat: repeat;
	--surface-card-texture: url('/assets/textures/elegant-laid-paper.svg');
	--surface-card-texture-size: 18rem 18rem;
	--surface-card-texture-repeat: repeat;

	--chart-line-shape: angular;
	--chart-area-opacity: .32;
	--chart-material: metallic;
	--chart-line-weight: 1.15;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.13;
	--chart-grid-opacity: 0.1;
	--chart-marker-shape: diamond;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 35%, var(--border-default));
	--chart-frame-texture: linear-gradient(120deg, color-mix(in srgb, var(--chart-series-1) 6%, transparent), transparent 35%, color-mix(in srgb, var(--chart-series-1) 4%, transparent)), var(--surface-card-texture);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(0deg, rgba(0, 0, 0, .25), rgba(255, 255, 255, .35) 45%, transparent 55%, rgba(255, 255, 255, .25));
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #917456;
	--chart-series-3: #7B768F;
	--chart-series-4: #4F7B83;
	--chart-series-5: #9A6870;
	--chart-series-6: #6A7857;

}

:root[data-theme="elegant"][data-mode="dark"] {
	--surface-card-texture: url('/assets/textures/elegant-paper-grain-dark.svg');
	--surface-page-backdrop: url('/assets/textures/elegant-paper-grain-dark.svg');
	--surface-page: #17211E;
	--surface-card: #2C3933;
	--surface-raised: #36483E;
	--surface-sunken: #111B16;
	--surface-hover: #394F43;
	--surface-selected: #43594D;
	--surface-overlay: rgba(9, 17, 13, 0.72);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #B8CBBE;
	--brand-secondary: #BCAD99;
	--brand-accent: #B8CBBE;

	--text-primary: #FAFCF9;
	--text-secondary: #C5D0C8;
	--text-on-brand: #1B2A21;
	--text-on-status: #1B2A21;
	--text-disabled: #A5B4AA;
	--text-link: #D4E4D8;
	--text-brand: #D4E4D8;
	--text-accent: #E2D2BC;
	--text-success: #BFDCB6;
	--text-warning: #E4C493;
	--text-danger: #FFC0B5;
	--text-partial: #E1C4A7;

	--border-default: rgba(230, 241, 233, 0.12);
	--border-strong: rgba(230, 241, 233, 0.36);
	--border-width: .1rem;

	--status-success: #ACCBB0;
	--status-warning: #DDC398;
	--status-danger: #E8AAA2;
	--status-partial: #CCB598;
	--status-info: #ACCDCB;

	--focus-ring-color: #D4E4D8;

	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .125rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Baskervville', Georgia, serif;
	--font-body: 'Manrope', 'Inter', system-ui, sans-serif;
	--font-mono: 'Space Mono', ui-monospace, monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(6, 15, 10, 0.32);
	--border-highlight: rgba(240, 248, 242, 0.05);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-raised: none;
	--elevation-inset: inset 0 .1rem .2rem rgba(6, 15, 10, 0.18);
	--elevation-overlay: 0 1.6rem 4rem rgba(6, 15, 10, 0.5);
	--elevation-glow: 0 0 1.2rem -.2rem rgba(184, 203, 190, 0.10);
	--elevation-surround: 0 0 .3rem rgba(12, 20, 15, 0.16), 0 .4rem 1.2rem var(--shadow-dark-source);

	--chart-series-2: #C1AA88;
	--chart-series-3: #A69CB8;
	--chart-series-4: #85ABB3;
	--chart-series-5: #C29BA0;
	--chart-series-6: #A5B594;

}

/* Card frames and section titles — ADR-0014 slots 1 and 4 */

:root[data-theme="elegant"] .pillBox:not(.chip) {
	border: var(--border-width) solid var(--border-default);
}

:root[data-theme="elegant"] .pillboxWithHeading__title {
	border-bottom-color: transparent;
	font-weight: var(--font-weight-display);
	font-size: var(--font-size-subheading);
}

/* Masthead — ADR-0014 slot 10 */

:root[data-theme="elegant"] .mastheadCover__view {
	background-color: var(--brand-primary);
	background-image: none;
}
:root[data-theme="elegant"] .mastheadCover__wash {
	background-image:
		var(--surface-card-texture),
		linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 35%, transparent), color-mix(in srgb, var(--brand-secondary) 20%, transparent));
	background-size: var(--surface-card-texture-size), auto;
	background-repeat: var(--surface-card-texture-repeat), no-repeat;
}

:root[data-theme="elegant"] .mainHeader__view {
	border-bottom-color: transparent;
	background-image: linear-gradient(var(--border-default), var(--border-default));
	background-size: 100% var(--border-width);
	background-position: 0 100%;
	background-repeat: no-repeat;
}

:root[data-theme="elegant"] .onlineIndicator__lamp {
	border-radius: var(--radius-avatar);
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: .2rem;
}

/* Picture lightbox — ADR-0014 slot 3 */

:root[data-theme="elegant"] .profileImageExpander__print,
:root[data-theme="elegant"] .profileImageExpander__initials {
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: var(--gap-inline);
}

:root[data-theme="elegant"] .profileImagesScrollArea__view,
:root[data-theme="elegant"] .profileImageExpander__close:not(:focus-visible),
:root[data-theme="elegant"] .profileImageExpander__step:not(:focus-visible) {
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: calc(-1 * var(--gap-tight));
}

/**
* minimalist.css — minimalist theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The production "minimalist" theme: editorial Swiss minimalism on a Tailwind
* neutral scale. White / soft-gray surfaces, deep-charcoal ink, a SINGLE blue
* accent (#2563EB) reserved for links + primary actions, Inter geometric sans
* throughout. Architectural sharp corners (≤4px), 1px hairline borders, and —
* critically — NO shadows: depth comes entirely from colour blocking + space
* (every elevation token resolves to `none`; the border carries structure).
* The DARK block keeps the discipline on a neutral near-black scale.
*
* Distinct from "modern" (pure greyscale, charcoal/inverted brand): minimalist
* keeps the same restraint but introduces the one blue hue.
*
* text-on-brand is white over the blue brand fill (≥AA). Activated by the
* runtime gate (dt-runtime): `data-theme="minimalist"` on <html>.
*
* @version 2026-Jun-19 Initial deep-theming version (user spec)
*/

:root[data-theme="minimalist"] {
	--surface-page: #FFFFFF;
	--surface-card: #F3F4F6;
	--surface-raised: #FFFFFF;
	--surface-sunken: #ECEDF0;
	--surface-hover: #ECEDF0;
	--surface-selected: #E3E5EA;
	--surface-overlay: rgba(17, 24, 39, 0.40);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #2563EB;
	--brand-secondary: #4B5563;
	--brand-accent: #2563EB;

	--text-primary: #111827;
	--text-secondary: #4B5563;
	--text-on-brand: #FFFFFF;
	--text-on-status: #F7F7F8;
	--text-disabled: #788192;
	--text-link: #1558E9;
	--text-brand: #1558E9;
	--text-accent: #1558E9;
	--text-success: #047351;
	--text-warning: #985404;
	--text-danger: #C61818;
	--text-partial: #BE2067;

	--border-default: #E5E7EB;
	--border-strong: #D1D5DB;
	--border-width: .1rem;

	--status-success: #047955;
	--status-warning: #A05804;
	--status-danger: #D21919;
	--status-partial: #C8226C;
	--status-info: #1F5FEA;

	--focus-ring-color: #2563EB;

	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: square;
	--icon-join: miter;

	--font-display: 'Inter', system-ui, 'Helvetica Neue', sans-serif;
	--font-body: 'Inter', system-ui, 'Helvetica Neue', sans-serif;
	--font-mono: 'Space Mono', ui-monospace, monospace;

	--radius-dense: .2rem;
	--radius-input: .4rem;
	--radius-button: .4rem;
	--radius-card: .4rem;
	--radius-pill: .4rem;
	--radius-sheet: .4rem;
	--radius-shell: .4rem;
	--radius-avatar: .4rem;

	--pad-cell: .4rem;
	--pad-dense: .6rem;
	--pad-row: 1rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.4rem;
	--pad-button: 1rem;
	--pad-button-inline: 2rem;
	--pad-card: 1.2rem;
	--pad-sheet: 1.8rem;
	--pad-page: 1.6rem;
	--pad-shell: 2.4rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .6rem;
	--gap-inline: .8rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.2rem;
	--gap-section: 1.2rem;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.4rem;
	--font-size-stat: 3rem;
	--font-size-display: 3.6rem;
	--font-weight-body: 400;
	--font-weight-medium: 400;
	--font-weight-heading: 700;
	--font-weight-display: 700;
	--line-height-tight: 1.2;
	--line-height-body: 1.35;
	--line-height-relaxed: 1.5;
	--letter-spacing-display: normal;
	--letter-spacing-body: .01em;

	--motion-fast: 140ms;
	--motion-base: 250ms;
	--motion-slow: 380ms;
	--motion-enter-distance: 0rem;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0, 0, 0.2, 1);
	--motion-enter-name: motionEnter;
	--sound-message-received: tick;

	--shadow-light-source: transparent;
	--shadow-dark-source: transparent;
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-raised: none;
	--elevation-inset: none;
	--elevation-overlay: none;
	--elevation-glow: none;
	--elevation-surround: none;

	--chart-line-shape: angular;
	--chart-area-opacity: .3;
	--chart-material: precise;
	--chart-line-weight: 1.25;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.1;
	--chart-grid-opacity: 0.1;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-flat);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: var(--border-default);
	--chart-frame-texture: none;
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-flat);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: none;
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

	--chart-series-2: #65758D;
	--chart-series-3: #26817C;
	--chart-series-4: #985C89;
	--chart-series-5: #A8752C;
	--chart-series-6: #6B639C;

}

:root[data-theme="minimalist"][data-mode="dark"] {
	--surface-page: #0B0C0E;
	--surface-card: #15171A;
	--surface-raised: #15171A;
	--surface-sunken: #0F1113;
	--surface-hover: #1B1E22;
	--surface-selected: #23262B;
	--surface-overlay: rgba(0, 0, 0, 0.60);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #2563EB;
	--brand-secondary: #9CA3AF;
	--brand-accent: #2563EB;

	--text-primary: #F3F4F6;
	--text-secondary: #9CA3AF;
	--text-on-brand: #FFFFFF;
	--text-on-status: #111827;
	--text-disabled: #657285;
	--text-link: #60A5FA;
	--text-brand: #5D8BF0;
	--text-accent: #5D8BF0;
	--text-success: #10B981;
	--text-warning: #F59E0B;
	--text-danger: #F15B5B;
	--text-partial: #ED549F;

	--border-default: rgba(243, 244, 246, 0.12);
	--border-strong: rgba(243, 244, 246, 0.22);
	--border-width: .1rem;

	--status-success: #10B981;
	--status-warning: #F59E0B;
	--status-danger: #EF4444;
	--status-partial: #EC4899;
	--status-info: #60A5FA;

	--focus-ring-color: #2563EB;

	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: square;
	--icon-join: miter;

	--font-display: 'Inter', system-ui, 'Helvetica Neue', sans-serif;
	--font-body: 'Inter', system-ui, 'Helvetica Neue', sans-serif;
	--font-mono: 'Space Mono', ui-monospace, monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: transparent;
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-raised: none;
	--elevation-inset: none;
	--elevation-overlay: none;
	--elevation-glow: none;
	--elevation-surround: none;

	--chart-series-2: #A0AEC0;
	--chart-series-3: #6CBBB5;
	--chart-series-4: #C392B8;
	--chart-series-5: #D4AB6B;
	--chart-series-6: #A59EC8;

}

/* Masthead slot (ADR-0014 slot 10): the cover picture goes greyscale under a
   flat brand block; the row sits on the page colour under a strong hairline
   with no lift; the lamp is a flat square. */
:root[data-theme="minimalist"] .mastheadCover__wash {
	backdrop-filter: blur(1.6rem) grayscale(1);
	-webkit-backdrop-filter: blur(1.6rem) grayscale(1);
	background-image: linear-gradient(color-mix(in srgb, var(--brand-primary) 70%, transparent), color-mix(in srgb, var(--brand-primary) 70%, transparent));
}

:root[data-theme="minimalist"] .mainHeader__view {
	background-color: var(--surface-page);
	border-bottom-color: var(--border-strong);
	box-shadow: none;
}

:root[data-theme="minimalist"] .onlineIndicator__lamp {
	border-radius: 0;
	background-image: none;
}

/**
 * fluid.css — Fluid theme: system typography, rounded surfaces and decelerating motion
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * @version 2026-September-16 Initial Version
 */

:root[data-theme="fluid"] {
	--surface-page: #F2F2F7;
	--surface-card: #FFFFFF;
	--surface-raised: #FFFFFF;
	--surface-sunken: #E7E7EE;
	--surface-hover: #F6F6F9;
	--surface-selected: #E1EBFB;
	--surface-overlay: rgba(17, 17, 26, .32);
	--surface-brandmark: #FFFFFF;
	--brand-primary: #0B62CE;
	--brand-secondary: #3B3FB8;
	--brand-accent: #0970D9;
	--text-primary: #11111A;
	--text-secondary: #55555F;
	--text-on-brand: #FFFFFF;
	--text-on-status: #FFFFFF;
	--text-disabled: #82828C;
	--text-link: #0B62CE;
	--text-brand: #0B62CE;
	--text-accent: #0A55B0;
	--text-success: #15612E;
	--text-warning: #7A4806;
	--text-danger: #A11F24;
	--text-partial: #543C9B;
	--border-default: rgba(17, 17, 26, .10);
	--border-strong: rgba(17, 17, 26, .22);
	--border-width: .1rem;
	--status-success: #1C7F3C;
	--status-warning: #9A5B08;
	--status-danger: #C0272D;
	--status-partial: #6A4FBF;
	--status-info: #0B62CE;
	--focus-ring-color: #0A6BD8;
	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .175rem;
	--icon-cap: round;
	--icon-join: round;
	--font-display: system-ui, -apple-system, 'Inter', sans-serif;
	--font-body: system-ui, -apple-system, 'Inter', sans-serif;
	--font-mono: ui-monospace, 'SF Mono', 'IBM Plex Mono', monospace;
	--radius-dense: .8rem;
	--radius-input: 1rem;
	--radius-button: 1rem;
	--radius-card: 1.8rem;
	--radius-pill: 999rem;
	--radius-sheet: 2.4rem;
	--radius-shell: 2.8rem;
	--radius-avatar: 999rem;
	--pad-cell: .6rem;
	--pad-dense: .8rem;
	--pad-row: 1.2rem;
	--pad-input: 1.2rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1.2rem;
	--pad-button-inline: 2rem;
	--pad-card: 2rem;
	--pad-sheet: 2.4rem;
	--pad-page: 2rem;
	--pad-shell: 2.8rem;
	--gap-hairline: .2rem;
	--gap-tight: .6rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.6rem;
	--gap-section: 2.8rem;
	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.4rem;
	--font-size-stat: 3rem;
	--font-size-display: 3.6rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 600;
	--font-weight-display: 600;
	--line-height-tight: 1.2;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.65;
	--letter-spacing-display: -.022em;
	--letter-spacing-body: 0em;
	--motion-fast: 160ms;
	--motion-base: 360ms;
	--motion-slow: 480ms;
	--motion-enter-distance: .8rem;
	--ease-standard: cubic-bezier(.32, .72, 0, 1);
	--ease-emphasized: cubic-bezier(.34, 1.26, .64, 1);
	--ease-enter: cubic-bezier(.2, .3, .3, 1);
	--motion-enter-name: fluidEnter;
	--sound-message-received: tick;
	--shadow-light-source: rgba(255, 255, 255, .9);
	--shadow-dark-source: rgba(17, 17, 26, .14);
	--border-highlight: rgba(255, 255, 255, .8);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem rgba(17, 17, 26, .10);
	--elevation-raised: 0 .1rem .2rem rgba(17, 17, 26, .06), 0 .8rem 2.4rem -.6rem rgba(17, 17, 26, .16);
	--elevation-inset: inset 0 .1rem .2rem rgba(17, 17, 26, .10);
	--elevation-overlay: 0 .2rem .6rem rgba(17, 17, 26, .10), 0 2.4rem 5.6rem -1.2rem rgba(17, 17, 26, .28);
	--elevation-glow: 0 0 0 .4rem rgba(10, 132, 255, .22);
	--elevation-surround: 0 0 0 .1rem rgba(17, 17, 26, .08), 0 .4rem 1.6rem -.4rem rgba(17, 17, 26, .18);
	--surface-clip: none;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-page-backdrop-size: cover;
	--surface-card-texture-repeat: no-repeat;
	--surface-card-texture-size: cover;
	--surface-page-backdrop: radial-gradient(120% 80% at 50% -10%, rgba(10, 132, 255, .10), transparent 60%);
	--surface-card-texture: none;
	--chart-line-shape: smooth;
	--chart-area-opacity: .42;
	--chart-material: glass;
	--chart-line-weight: 1.65;
	--chart-glow-strength: 0.45;
	--chart-wash-opacity: 0.23;
	--chart-grid-opacity: 0.08;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: radial-gradient(ellipse at 0% 0%, color-mix(in srgb, var(--chart-series-1) 14%, transparent), transparent 60%), linear-gradient(135deg, rgba(255, 255, 255, .1), transparent 55%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(110deg, rgba(255, 255, 255, .6), transparent 45%, rgba(0, 0, 0, .12));
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

	--chart-series-2: #A35490;
	--chart-series-3: #367C96;
	--chart-series-4: #9B773F;
	--chart-series-5: #6F7F45;
	--chart-series-6: #6B66A7;

}

:root[data-theme="fluid"][data-mode="dark"] {
	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .175rem;
	--icon-cap: round;
	--icon-join: round;
	--border-width: .1rem;
	--surface-blur: none;
	--surface-clip: none;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-page-backdrop-size: cover;
	--surface-card-texture-repeat: no-repeat;
	--surface-card-texture-size: cover;
	--elevation-flat: none;
	--surface-page: #000000;
	--surface-card: #1C1C1E;
	--surface-raised: #2C2C2E;
	--surface-sunken: #121214;
	--surface-hover: #242427;
	--surface-selected: #15325E;
	--surface-overlay: rgba(0, 0, 0, .64);
	--surface-page-backdrop: radial-gradient(120% 80% at 50% -10%, rgba(10, 132, 255, .18), transparent 60%);
	--surface-card-texture: none;
	--brand-primary: #0A84FF;
	--brand-secondary: #7D74F2;
	--brand-accent: #64D2FF;
	--text-primary: #F4F4F7;
	--text-secondary: #A5A5AF;
	--text-disabled: #7D7D88;
	--text-on-brand: #0A0D12;
	--text-link: #5AB0FF;
	--text-brand: #5AB0FF;
	--text-accent: #64D2FF;
	--border-default: rgba(244, 244, 247, .14);
	--border-strong: rgba(244, 244, 247, .28);
	--status-success: #2FA95A;
	--status-warning: #D18A1E;
	--status-danger: #E0565B;
	--status-partial: #9B87E8;
	--status-info: #0A84FF;
	--text-success: #5FD68A;
	--text-warning: #EFB765;
	--text-danger: #FF9A9E;
	--text-partial: #C3B4FF;
	--text-on-status: #10131A;
	--shadow-light-source: rgba(255, 255, 255, .06);
	--shadow-dark-source: rgba(0, 0, 0, .7);
	--focus-ring-color: #4DA6FF;
	--elevation-raised: inset 0 .1rem 0 rgba(255, 255, 255, .06), 0 .2rem .4rem rgba(0, 0, 0, .5), 0 1.2rem 3.2rem -.8rem rgba(0, 0, 0, .7);
	--elevation-button: inset 0 .1rem 0 rgba(255, 255, 255, .07), 0 .1rem .2rem rgba(0, 0, 0, .5);
	--elevation-inset: inset 0 .1rem .3rem rgba(0, 0, 0, .6);
	--elevation-overlay: inset 0 .1rem 0 rgba(255, 255, 255, .07), 0 .4rem 1rem rgba(0, 0, 0, .55), 0 3.2rem 6.4rem -1.6rem rgba(0, 0, 0, .8);
	--elevation-surround: 0 0 0 .1rem rgba(244, 244, 247, .10), 0 .4rem 1.6rem -.4rem rgba(0, 0, 0, .6);
	--elevation-glow: 0 0 0 .4rem rgba(10, 132, 255, .34);
	--surface-brandmark: #FFFFFF;
	--border-highlight: rgba(255, 255, 255, .08);
	--chart-series-2: #D794C6;
	--chart-series-3: #79BDD3;
	--chart-series-4: #D8B575;
	--chart-series-5: #B3C48B;
	--chart-series-6: #AAA6DF;

}

@keyframes fluidEnter {
	from {
		opacity: 0;
		transform: translateY(calc(var(--motion-enter-distance) * 1.5)) scale(.96);
	}

	40% {
		opacity: 1;
	}

	to {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
}

:root[data-theme="fluid"] .button:enabled:active {
	transform: scale(.97);
	transition-duration: var(--motion-fast);
}

@media (prefers-reduced-motion: reduce) {
	:root[data-theme="fluid"] {
		--motion-enter-name: motionEnter;
	}
	:root[data-theme="fluid"] .button:enabled:active {
		transform: none;
	}
}

/**
* perspective.css — perspective theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The production "perspective" theme: visionOS frosted glass. Translucent
* white (light) / slate (dark) panels floating over a neutral backdrop, with
* heavy `--surface-blur` backdrop-filter, soft real depth shadows, and large
* rounded (classic, NOT clip-path) corners. One calm blue brand. Manrope sans.
* Graduated from the styleBoard perspective candidate.
*
* The frost is the look: surfaces are translucent + blurred (`--surface-blur`
* on `.tile`), the hairline border defines the panel edge, and the depth comes
* from soft elevation shadows — not opacity alone.
*
* text-on-brand reads over brand-primary == brand-accent (the one blue): white
* on the deep blue (light) / dark ink on the lifted blue (dark) — both ≥AA.
*
* Activated by the runtime gate (dt-runtime): `data-theme="perspective"`
* (+ `data-mode="dark"`) on <html>. See knowledge-base/style/.
*
* @version 2026-Jun-19 Graduated from styleBoard perspective candidate
*/

:root[data-theme="perspective"] {
	--surface-page: #D9DDE3;
	--surface-card: rgba(255, 255, 255, 0.55);
	--surface-raised: rgba(255, 255, 255, 0.62);
	--surface-sunken: rgba(255, 255, 255, 0.30);
	--surface-hover: rgba(255, 255, 255, 0.35);
	--surface-selected: rgba(255, 255, 255, 0.55);
	--surface-overlay: rgba(20, 24, 35, 0.45);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #2F62E6;
	--brand-secondary: #6E9BFF;
	--brand-accent: #2F62E6;

	--text-primary: #1B1D21;
	--text-secondary: #5C606B;
	--text-on-brand: #FFFFFF;
	--text-on-status: #F7F7F8;
	--text-disabled: #757B88;
	--text-link: #1B52E1;
	--text-brand: #1B52E1;
	--text-accent: #1B52E1;
	--text-success: #266D41;
	--text-warning: #835517;
	--text-danger: #BD181E;
	--text-partial: #B1295C;

	--border-default: rgba(255, 255, 255, 0.45);
	--border-strong: rgba(255, 255, 255, 0.70);
	--border-width: .1rem;

	--status-success: #2A7847;
	--status-warning: #925F1A;
	--status-danger: #D11B21;
	--status-partial: #C32D65;
	--status-info: #2B5FE6;

	--focus-ring-color: #2F62E6;

	--icon-accent: var(--brand-secondary);
	--icon-fill: rgba(47, 98, 230, 0.10);
	--icon-stroke-width: .2rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Manrope', system-ui, sans-serif;
	--font-body: 'Manrope', system-ui, sans-serif;
	--font-mono: 'Space Mono', ui-monospace, monospace;

	--radius-dense: .6rem;
	--radius-input: 1.2rem;
	--radius-button: 1.4rem;
	--radius-card: 2rem;
	--radius-pill: 999rem;
	--radius-sheet: 2.4rem;
	--radius-shell: 2.8rem;
	--radius-avatar: 999rem;

	--pad-cell: .4rem;
	--pad-dense: .8rem;
	--pad-row: 1.2rem;
	--pad-input: 1.2rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1.2rem;
	--pad-button-inline: 2.4rem;
	--pad-card: 2rem;
	--pad-sheet: 2.4rem;
	--pad-page: 2rem;
	--pad-shell: 3.2rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.6rem;
	--gap-tile: 2rem;
	--gap-section: 2rem;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.4rem;
	--font-size-stat: 3rem;
	--font-size-display: 3.6rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 600;
	--font-weight-display: 700;
	--line-height-tight: 1.25;
	--line-height-body: 1.55;
	--line-height-relaxed: 1.7;
	--letter-spacing-display: normal;
	--letter-spacing-body: normal;

	--motion-fast: 220ms;
	--motion-base: 400ms;
	--motion-slow: 560ms;
	--motion-enter-distance: .5rem;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
	--motion-enter-name: motionEnter;
	--sound-message-received: ping;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(20, 24, 35, 0.18);
	--border-highlight: transparent;
	--surface-blur: blur(2rem);
	--elevation-flat: none;
	--elevation-button: 0 .2rem .6rem rgba(20, 24, 35, 0.12);
	--elevation-raised: 0 .8rem 3rem rgba(20, 24, 35, 0.18);
	--elevation-inset: inset 0 .1rem .3rem rgba(20, 24, 35, 0.10);
	--elevation-overlay: 0 1.4rem 4rem rgba(20, 24, 35, 0.26);
	--elevation-glow: 0 0 1.6rem -.2rem rgba(47, 98, 230, 0.35);
	--elevation-surround: 0 0 .6rem rgba(20, 24, 35, 0.10), 0 0 1.6rem .1rem var(--shadow-dark-source);

	--chart-line-shape: smooth;
	--chart-area-opacity: .42;
	--chart-material: glass;
	--chart-line-weight: 1.4;
	--chart-glow-strength: 0.35;
	--chart-wash-opacity: 0.22;
	--chart-grid-opacity: 0.1;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: radial-gradient(ellipse at 0% 0%, color-mix(in srgb, var(--chart-series-1) 14%, transparent), transparent 60%), linear-gradient(135deg, rgba(255, 255, 255, .1), transparent 55%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(110deg, rgba(255, 255, 255, .6), transparent 45%, rgba(0, 0, 0, .12));
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

	--chart-series-2: #7762B5;
	--chart-series-3: #337C88;
	--chart-series-4: #A7618F;
	--chart-series-5: #A17B40;
	--chart-series-6: #5A7D62;

}

:root[data-theme="perspective"][data-mode="dark"] {
	--surface-page: #1C1E24;
	--surface-card: rgba(40, 44, 54, 0.55);
	--surface-raised: rgba(48, 52, 64, 0.62);
	--surface-sunken: rgba(255, 255, 255, 0.05);
	--surface-hover: rgba(255, 255, 255, 0.08);
	--surface-selected: rgba(255, 255, 255, 0.14);
	--surface-overlay: rgba(0, 0, 0, 0.55);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #6E9BFF;
	--brand-secondary: #A9C2FF;
	--brand-accent: #6E9BFF;

	--text-primary: #F0F2F6;
	--text-secondary: #AFB3BD;
	--text-on-brand: #0E1014;
	--text-on-status: #1B1D21;
	--text-disabled: #8D929E;
	--text-link: #8FB2FF;
	--text-brand: #8FB2FF;
	--text-accent: #8FB2FF;
	--text-success: #69C88D;
	--text-warning: #E4AE64;
	--text-danger: #FF9699;
	--text-partial: #E89DB9;

	--border-default: rgba(255, 255, 255, 0.12);
	--border-strong: rgba(255, 255, 255, 0.24);
	--border-width: .1rem;

	--status-success: #4FBE7A;
	--status-warning: #E0A24E;
	--status-danger: #FF6B6F;
	--status-partial: #E07AA0;
	--status-info: #6E9BFF;

	--focus-ring-color: #6E9BFF;

	--icon-accent: var(--brand-secondary);
	--icon-fill: rgba(110, 155, 255, 0.14);
	--icon-stroke-width: .2rem;
	--icon-cap: round;
	--icon-join: round;

	--font-display: 'Manrope', system-ui, sans-serif;
	--font-body: 'Manrope', system-ui, sans-serif;
	--font-mono: 'Space Mono', ui-monospace, monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.50);
	--border-highlight: rgba(255, 255, 255, 0.10);
	--surface-blur: blur(2rem);
	--elevation-flat: none;
	--elevation-button: inset 0 .1rem 0 var(--border-highlight), 0 .2rem .6rem rgba(0, 0, 0, 0.40);
	--elevation-raised: inset 0 .1rem 0 var(--border-highlight), 0 .8rem 3rem rgba(0, 0, 0, 0.45);
	--elevation-inset: inset 0 .1rem .3rem rgba(0, 0, 0, 0.40);
	--elevation-overlay: inset 0 .1rem 0 rgba(255, 255, 255, 0.08), 0 1.4rem 4rem rgba(0, 0, 0, 0.55);
	--elevation-glow: 0 0 2rem -.2rem rgba(110, 155, 255, 0.35);
	--elevation-surround: 0 0 .6rem rgba(0, 0, 0, 0.45), 0 0 2rem .1rem var(--shadow-dark-source);

	--chart-series-2: #B59EE9;
	--chart-series-3: #79BDC8;
	--chart-series-4: #DDA3C8;
	--chart-series-5: #D7BA87;
	--chart-series-6: #A0C5A6;

}

/* Masthead slot (ADR-0014 slot 10): floating glass — a deeper blur on the cover
   picture, the translucent row blurred over the page with sheet corners and the
   raised shadow; the lamp is a pill. */
:root[data-theme="perspective"] .mastheadCover__wash {
	backdrop-filter: blur(2.4rem) saturate(1.2);
	-webkit-backdrop-filter: blur(2.4rem) saturate(1.2);
}

:root[data-theme="perspective"] .mainHeader__view {
	backdrop-filter: var(--surface-blur);
	-webkit-backdrop-filter: var(--surface-blur);
	border-bottom-color: var(--border-highlight);
	border-radius: 0 0 var(--radius-sheet) var(--radius-sheet);
	box-shadow: var(--elevation-raised);
}

:root[data-theme="perspective"] .onlineIndicator__lamp {
	border-radius: var(--radius-pill);
	width: 1.4rem;
}

/**
* power.css — power theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* Compact operations dashboard: indigo surfaces, warm orange actions and
* IBM Plex Mono. Light mode uses warm mineral surfaces and burnt orange.
* Activated by data-theme="power" and the optional data-mode="dark" gate.
* Design rationale: knowledge-base/style/theme-voices.md.
*
* @version 2026-Jun-28 Initial deep-theming version (typeui power brief; monochrome)
*/

:root[data-theme="power"] {
	--surface-page: #F5F2ED;
	--surface-card: #FAF8F4;
	--surface-raised: #FFFFFF;
	--surface-sunken: #EBE7E0;
	--surface-hover: #EEE9E1;
	--surface-selected: #E6DED3;
	--surface-overlay: rgba(40, 28, 16, 0.34);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #B84B1C;
	--brand-secondary: #6E665C;
	--brand-accent: #B84B1C;

	--text-primary: #221E1A;
	--text-secondary: #686057;
	--text-on-brand: #FFFFFF;
	--text-on-status: #FFFFFF;
	--text-disabled: #7F766B;
	--text-link: #AC3A0B;
	--text-brand: #AC3A0B;
	--text-accent: #A44408;
	--text-success: #126E35;
	--text-warning: #9E4908;
	--text-danger: #BD1F1F;
	--text-partial: #666157;

	--border-default: #DED8CF;
	--border-strong: #C4B9A9;
	--border-width: .1rem;

	--status-success: #15803D;
	--status-warning: #B45309;
	--status-danger: #DC2626;
	--status-partial: #7B7469;
	--status-info: #B8460F;

	--focus-ring-color: #B8460F;

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: square;
	--icon-join: round;

	--font-display: 'IBM Plex Mono', 'Space Mono', 'Courier New', monospace;
	--font-body: 'IBM Plex Mono', 'Space Mono', 'Courier New', monospace;
	--font-mono: 'IBM Plex Mono', 'Space Mono', ui-monospace, monospace;

	--radius-dense: .4rem;
	--radius-input: .8rem;
	--radius-button: .8rem;
	--radius-card: 1.2rem;
	--radius-pill: 999rem;
	--radius-sheet: 1.6rem;
	--radius-shell: 1.2rem;
	--radius-avatar: 999rem;

	--pad-cell: .4rem;
	--pad-dense: .6rem;
	--pad-row: 1rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.4rem;
	--pad-button: 1rem;
	--pad-button-inline: 2rem;
	--pad-card: 1.6rem;
	--pad-sheet: 1.8rem;
	--pad-page: 1.6rem;
	--pad-shell: 2.4rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .6rem;
	--gap-inline: .8rem;
	--gap-stack: 1rem;
	--gap-tile: 1.2rem;
	--gap-section: 1.6rem;

	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.4rem;
	--font-size-stat: 3rem;
	--font-size-display: 3.6rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 600;
	--font-weight-display: 700;
	--line-height-tight: 1.2;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.65;
	--letter-spacing-display: -.01em;
	--letter-spacing-body: normal;

	--motion-fast: 100ms;
	--motion-base: 180ms;
	--motion-slow: 300ms;
	--motion-enter-distance: .1rem;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0, 0, 0.1, 1);
	--motion-enter-name: motionEnter;
	--sound-message-received: tick;

	--shadow-light-source: rgba(255, 255, 255, 0.90);
	--shadow-dark-source: rgba(60, 40, 20, 0.18);
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem rgba(60, 40, 20, 0.08);
	--elevation-raised: 0 0 0 .1rem var(--border-default), 0 .3rem 1.2rem rgba(60, 40, 20, 0.06);
	--elevation-inset: inset 0 .1rem .3rem rgba(60, 40, 20, 0.10);
	--elevation-overlay: 0 1.6rem 4rem rgba(40, 28, 16, 0.22);
	--elevation-glow: 0 0 1.6rem rgba(184, 70, 15, 0.22);
	--elevation-surround: 0 0 .4rem rgba(60, 40, 20, 0.10), 0 0 1.2rem .1rem var(--shadow-dark-source);
	--chart-line-shape: smooth;
	--chart-area-opacity: .44;
	--chart-material: signal;
	--chart-line-weight: 1.6;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.2;
	--chart-grid-opacity: 0.22;
	--chart-marker-shape: square;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: linear-gradient(90deg, color-mix(in srgb, var(--chart-series-1) 8%, transparent), transparent 60%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: repeating-linear-gradient(0deg, transparent, transparent .3rem, color-mix(in srgb, var(--chart-series-1) 4%, transparent) .3rem, color-mix(in srgb, var(--chart-series-1) 4%, transparent) .4rem);
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-flat);
	--chart-mark-radius: var(--radius-dense);
	--chart-bar-texture: repeating-linear-gradient(135deg, transparent, transparent .3rem, rgba(255, 255, 255, .35) .3rem, rgba(255, 255, 255, .35) .4rem);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #427B73;
	--chart-series-3: #796D89;
	--chart-series-4: #92783F;
	--chart-series-5: #5F7791;
	--chart-series-6: #9A6161;

}

:root[data-theme="power"][data-mode="dark"] {
	--surface-page: #191B2B;
	--surface-card: #24273C;
	--surface-raised: #2C3046;
	--surface-sunken: #141725;
	--surface-hover: #30344B;
	--surface-selected: #44332E;
	--surface-overlay: rgba(12, 14, 24, 0.72);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #FF7A2E;
	--brand-secondary: #9496A8;
	--brand-accent: #FF7A2E;

	--text-primary: #F4F1EC;
	--text-secondary: #BDC0D0;
	--text-on-brand: #2B1400;
	--text-on-status: #221E1A;
	--text-disabled: #969BB3;
	--text-link: #FF7A2E;
	--text-brand: #FF7A2E;
	--text-accent: #FF7A2E;
	--text-success: #34D399;
	--text-warning: #FBBF24;
	--text-danger: #F87878;
	--text-partial: #B3B7C9;

	--border-default: rgba(213, 220, 255, 0.12);
	--border-strong: rgba(213, 220, 255, 0.24);
	--border-width: .1rem;

	--status-success: #34D399;
	--status-warning: #FBBF24;
	--status-danger: #F87171;
	--status-partial: #9496A8;
	--status-info: #7578F3;

	--focus-ring-color: #FF7A2E;

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: square;
	--icon-join: round;

	--font-display: 'IBM Plex Mono', 'Space Mono', 'Courier New', monospace;
	--font-body: 'IBM Plex Mono', 'Space Mono', 'Courier New', monospace;
	--font-mono: 'IBM Plex Mono', 'Space Mono', ui-monospace, monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.50);
	--border-highlight: rgba(255, 255, 255, 0.08);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: inset 0 .1rem 0 var(--border-highlight), 0 .1rem .2rem rgba(0, 0, 0, 0.25);
	--elevation-raised: inset 0 .1rem 0 var(--border-highlight), 0 0 0 .1rem var(--border-default), 0 .4rem 1.6rem rgba(0, 0, 0, 0.20);
	--elevation-inset: inset 0 .1rem .3rem rgba(0, 0, 0, 0.35);
	--elevation-overlay: 0 2.4rem 4.8rem rgba(0, 0, 0, 0.40);
	--elevation-glow: 0 0 1.6rem rgba(255, 122, 46, 0.25);
	--elevation-surround: 0 0 .4rem rgba(0, 0, 0, 0.40), 0 0 1.6rem .1rem var(--shadow-dark-source);

	--surface-page-backdrop: radial-gradient(ellipse at 50% 0%, rgba(99, 102, 241, 0.06) 0%, rgba(99, 102, 241, 0) 60%);
	--chart-series-2: #8CAFA5;
	--chart-series-3: #ADA2BC;
	--chart-series-4: #C9B47F;
	--chart-series-5: #94B0CA;
	--chart-series-6: #D19D9D;

}

:root[data-theme="power"] .pillboxWithHeading__title {
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-heading);
	letter-spacing: .06em;
	text-transform: uppercase;
}

:root[data-theme="power"] .button-darkBackground:hover,
:root[data-theme="power"] .button-darkBackground:focus-visible:not(.button-loading) {
	background-color: color-mix(in srgb, var(--brand-accent) 94%, var(--text-primary));
	color: var(--text-on-brand);
	border-color: var(--brand-accent);
}

:root[data-theme="power"] .tabHeaderBar__view {
	--tabHeaderBar-indicator-background-color: var(--brand-accent);
	--tabHeaderBar-tab-hover-color: var(--text-accent);
	--tabHeaderBar-tab-selected-color: var(--text-accent);
}

:root[data-theme="power"] .mainSearchBar__view::before,
:root[data-theme="power"] .mainSearchBar__view::after {
	content: none;
}

:root[data-theme="power"] .mainSearchBar__input {
	clip-path: none;
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-input);
	box-shadow: var(--elevation-inset);
	width: calc(100% - 5.9rem);
	right: 5.9rem;
	padding: .3rem var(--pad-dense); /* intentional literal: preserve the base field's vertical geometry */
}

:root[data-theme="power"] .mainSearchBar__input:focus-visible {
	border-color: var(--focus-ring-color);
}

:root[data-theme="power"] .mainSearchBar__button {
	clip-path: none;
	border-radius: var(--radius-button);
	box-shadow: var(--elevation-button);
}

:root[data-theme="power"] .mastheadCover__view {
	background-color: var(--surface-sunken);
	background-image: none;
}

:root[data-theme="power"] .mastheadCover__wash {
	background-image:
		repeating-linear-gradient(90deg, color-mix(in srgb, var(--text-secondary) 10%, transparent) 0 .1rem, transparent .1rem 2.4rem),
		repeating-linear-gradient(0deg, color-mix(in srgb, var(--text-secondary) 10%, transparent) 0 .1rem, transparent .1rem 2.4rem),
		linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 14%, transparent), color-mix(in srgb, var(--brand-secondary) 20%, transparent));
}

:root[data-theme="power"] .mainHeader__view {
	background-color: var(--surface-card);
	border-bottom-color: var(--border-strong);
	box-shadow: var(--elevation-button);
}

:root[data-theme="power"] .onlineIndicator__lamp {
	border-radius: 0;
}

/**
* regalia.css — regalia theme role-token overrides (deep theming)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* Regalia: dark-first navy and ivory, rounded framed panels, restrained brass
* rules, and finely drawn stationery icons. Playfair Display leads over Libre
* Baskerville; light mode uses warm paper and navy ink. Framed panels stand
* above a woven page texture. Accent fills are navy by day and ivory
* by night, paired with contrasting ink; status hues remain distinct.
* Structural paint stays in this file (decision 0014).
*
* @version 2026-August-31 Initial Version (#2042 — the eleventh theme)
*/

:root[data-theme="regalia"] {
	--surface-page: #F0EBE2;
	--surface-card: #FFFDF8;
	--surface-raised: #FFFFFF;
	--surface-sunken: #E8E0D3;
	--surface-hover: #F4EFE6;
	--surface-selected: #EAE2D4;
	--surface-overlay: rgba(18, 34, 56, 0.50);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #122238;
	--brand-secondary: #34465B;
	--brand-accent: #122238;

	--text-primary: #122238;
	--text-secondary: #495363;
	--text-on-brand: #F2EBDD;
	--text-on-status: #FFFFFF;
	--text-disabled: #767D8F;
	--text-link: #6E5522;
	--text-brand: #122238;
	--text-accent: #122238;
	--text-success: #49613D;
	--text-warning: #884E21;
	--text-danger: #944536;
	--text-partial: #72563C;

	--border-default: rgba(18, 34, 56, 0.26);
	--border-strong: rgba(18, 34, 56, 0.36);
	--border-width: .1rem;

	--status-success: #5E7A4E;
	--status-warning: #9C5A26;
	--status-danger: #9E4A3C;
	--status-partial: #916E4D;
	--status-info: #34465B;

	--focus-ring-color: #6E5522;

	--icon-accent: var(--text-link);
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: butt;
	--icon-join: round;

	--font-display: 'Playfair Display', 'Didot', 'Bodoni MT', Georgia, serif;
	--font-body: 'Libre Baskerville', Georgia, 'Times New Roman', serif;
	--font-mono: ui-monospace, 'Courier New', monospace;

	--radius-dense: .4rem;
	--radius-input: .8rem;
	--radius-button: .8rem;
	--radius-card: 1.6rem;
	--radius-pill: 1.6rem;
	--radius-sheet: 2rem;
	--radius-shell: .5rem;
	--radius-avatar: 999rem;

	--pad-cell: .4rem;
	--pad-dense: .7rem;
	--pad-row: 1.2rem;
	--pad-input: 1.3rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1.1rem;
	--pad-button-inline: 2.4rem;
	--pad-card: 2.4rem;
	--pad-sheet: 2.8rem;
	--pad-page: 2.4rem;
	--pad-shell: 4rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: .8rem;
	--gap-stack: 1.4rem;
	--gap-tile: 2rem;
	--gap-section: 2.6rem;

	--font-size-label: 1.1rem;
	--font-size-caption: 1.3rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.7rem;
	--font-size-subheading: 2.2rem;
	--font-size-heading: 3rem;
	--font-size-stat: 3.6rem;
	--font-size-display: 4.4rem;
	--font-weight-body: 400;
	--font-weight-medium: 700;
	--font-weight-heading: 500;
	--font-weight-display: 400;
	--line-height-tight: 1.25;
	--line-height-body: 1.65;
	--line-height-relaxed: 1.75;
	--letter-spacing-display: .015em;
	--letter-spacing-body: .01em;

	--motion-fast: 240ms;
	--motion-base: 460ms;
	--motion-slow: 680ms;
	--motion-enter-distance: .5rem;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	--ease-enter: cubic-bezier(0.2, 1, 0.36, 1);
	--motion-enter-name: regaliaEnter;
	--sound-message-received: bell;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(18, 34, 56, 0.16);
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem rgba(18, 34, 56, 0.08);
	--elevation-raised: 0 .3rem 1.2rem rgba(18, 34, 56, 0.12);
	--elevation-inset: inset 0 .1rem .2rem rgba(18, 34, 56, 0.08);
	--elevation-overlay: 0 .1rem 0 rgba(18, 34, 56, 0.20), 0 1.2rem 2.6rem rgba(18, 34, 56, 0.26);
	--elevation-glow: 0 0 0 .2rem rgba(110, 85, 34, 0.30), 0 0 1.2rem -.2rem rgba(110, 85, 34, 0.42);
	--elevation-surround: 0 0 .3rem rgba(18, 34, 56, 0.10), 0 0 .8rem .1rem var(--shadow-dark-source);

	--surface-page-backdrop: repeating-linear-gradient(45deg, rgba(18, 34, 56, 0.035) 0 .1rem, transparent .1rem .4rem);
	--surface-page-backdrop-size: auto;
	--surface-page-backdrop-repeat: repeat;

	--chart-line-shape: smooth;
	--chart-area-opacity: .4;
	--chart-material: metallic;
	--chart-line-weight: 1.25;
	--chart-glow-strength: 0.15;
	--chart-wash-opacity: 0.19;
	--chart-grid-opacity: 0.16;
	--chart-marker-shape: diamond;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 35%, var(--border-default));
	--chart-frame-texture: linear-gradient(120deg, color-mix(in srgb, var(--chart-series-1) 6%, transparent), transparent 35%, color-mix(in srgb, var(--chart-series-1) 4%, transparent)), var(--surface-card-texture);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(0deg, rgba(0, 0, 0, .25), rgba(255, 255, 255, .35) 45%, transparent 55%, rgba(255, 255, 255, .25));
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #947744;
	--chart-series-3: #4E7078;
	--chart-series-4: #836780;
	--chart-series-5: #A46451;
	--chart-series-6: #66734E;

}

:root[data-theme="regalia"][data-mode="dark"] {
	--surface-page: #080F1C;
	--surface-card: #1D2C40;
	--surface-raised: #25364A;
	--surface-sunken: #132236;
	--surface-hover: #2B3D53;
	--surface-selected: #1A3350;
	--surface-overlay: rgba(0, 0, 0, 0.60);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #D8CBB1;
	--brand-secondary: #E8DDC8;
	--brand-accent: #D8CBB1;

	--text-primary: #EEE5D4;
	--text-secondary: #C1B6A2;
	--text-on-brand: #101D2D;
	--text-on-status: #0B1422;
	--text-disabled: #8C97A4;
	--text-link: #CFBB94;
	--text-brand: #CFBB94;
	--text-accent: #CFBB94;
	--text-success: #9EB787;
	--text-warning: #DEA66A;
	--text-danger: #DA9586;
	--text-partial: #BFA188;

	--border-default: rgba(216, 203, 177, 0.32);
	--border-strong: rgba(216, 203, 177, 0.52);
	--border-width: .1rem;

	--status-success: #7E9B62;
	--status-warning: #D08A3E;
	--status-danger: #CD6F5B;
	--status-partial: #B79579;
	--status-info: #8FA3CE;

	--focus-ring-color: #D8CBB1;

	--icon-accent: var(--text-link);
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: butt;
	--icon-join: round;

	--font-display: 'Playfair Display', 'Didot', 'Bodoni MT', Georgia, serif;
	--font-body: 'Libre Baskerville', Georgia, 'Times New Roman', serif;
	--font-mono: ui-monospace, 'Courier New', monospace;

	--shadow-light-source: rgba(216, 203, 177, 0.06);
	--shadow-dark-source: rgba(0, 0, 0, 0.55);
	--border-highlight: rgba(216, 203, 177, 0.08);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: 0 .1rem .3rem rgba(0, 0, 0, 0.20);
	--elevation-raised: 0 .4rem 1.4rem rgba(0, 0, 0, 0.32);
	--elevation-inset: inset 0 .1rem .2rem rgba(0, 0, 0, 0.20);
	--elevation-overlay: 0 1.4rem 3rem rgba(0, 0, 0, 0.60);
	--elevation-glow: 0 0 0 .2rem rgba(216, 203, 177, 0.28), 0 0 1.4rem -.2rem rgba(216, 203, 177, 0.18);
	--elevation-surround: 0 0 0 .1rem rgba(216, 203, 177, 0.22), 0 0 1rem .1rem var(--shadow-dark-source);

	--surface-page-backdrop: repeating-linear-gradient(45deg, rgba(238, 229, 212, 0.035) 0 .1rem, transparent .1rem .4rem);
	--surface-page-backdrop-size: auto;
	--surface-page-backdrop-repeat: repeat;

	--chart-series-2: #A28C63;
	--chart-series-3: #86A7AC;
	--chart-series-4: #B9A0B6;
	--chart-series-5: #C39382;
	--chart-series-6: #A6B490;

}

/* ── structural claims (decision 0014) ── */

:root[data-theme="regalia"] .pillboxWithHeading__title {
	text-transform: uppercase;
	letter-spacing: .16em;
	font-family: var(--font-body);
	font-size: var(--font-size-caption);
	border-bottom: .1rem solid color-mix(in srgb, var(--text-link) 30%, transparent);
	padding-bottom: var(--gap-tight);
}

:root[data-theme="regalia"][data-mode="dark"] .tile:not([class*="__view-selected"]) {
	border-color: color-mix(in srgb, var(--brand-accent) 42%, transparent);
}

:root[data-theme="regalia"] .pillBox:not(.chip):not(:focus-visible) {
	outline: .1rem solid color-mix(in srgb, var(--text-link) 40%, transparent);
	outline-offset: -.5rem;
}

:root[data-theme="regalia"] .overlayPanel::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	background: linear-gradient(var(--brand-primary) 0 .4rem, transparent .4rem);
	pointer-events: none;
	z-index: 1;
}

/* ── entrance (stately: rise, no bounce, long settle) ── */

@keyframes regaliaEnter {
	from {
		opacity: 0;
		transform: translateY(var(--motion-enter-distance)) scale(.995);
	}

	to {
		opacity: 1;
		transform: translateY(0) scale(1);
	}
}

@media (prefers-reduced-motion: reduce) {
	:root[data-theme="regalia"] {
		--motion-enter-name: motionEnter;
	}
}

/* ── masthead (decision 0014, slot 10) ── */

:root[data-theme="regalia"] .mastheadCover__wash {
	background-image:
		linear-gradient(var(--text-link), var(--text-link)),
		var(--surface-page-backdrop),
		linear-gradient(135deg, color-mix(in srgb, var(--surface-card) 55%, transparent), color-mix(in srgb, var(--surface-page) 40%, transparent));
	background-size: 100% .1rem, auto, auto;
	background-position: 0 100%, 0 0, 0 0;
	background-repeat: no-repeat, repeat, no-repeat;
}

:root[data-theme="regalia"] .mainHeader__view {
	border-bottom-color: transparent;
	background-image: linear-gradient(var(--text-link), var(--text-link)), linear-gradient(var(--text-link), var(--text-link));
	background-size: 100% .1rem, 100% .1rem;
	background-position: 0 100%, 0 calc(100% - .4rem);
	background-repeat: no-repeat;
}

:root[data-theme="regalia"] .onlineIndicator__lamp {
	border-radius: 0;
	rotate: 45deg;
	scale: .8;
	background-image: none;
}

/* ---------------------------------------------------------------------------------------
 * Regalia picture lightbox (ADR-0014 slot 3) — the gilt mat: one gold rule floats around the
 * print, the tray sheet and the discs carry the same rule.
 * ------------------------------------------------------------------------------------- */

:root[data-theme="regalia"] .profileImageExpander__print,
:root[data-theme="regalia"] .profileImageExpander__initials {
	outline: var(--border-width) solid var(--text-link);
	outline-offset: var(--gap-tight);
}

:root[data-theme="regalia"] .profileImagesScrollArea__view,
:root[data-theme="regalia"] .profileImageExpander__close,
:root[data-theme="regalia"] .profileImageExpander__step {
	border-color: var(--text-link);
}

:root[data-theme="regalia"] .profileImagesScrollArea__view {
	border-top-width: calc(var(--border-width) * 2);
}

/**
* neovision.css — NeoVision: the black-edition editorial poster. A true-black gallery
* ground under light, wide, uppercase lettering, one hard diagonal cut on the masthead,
* and no colour anywhere the task does not need it. Claims decision-0014 slots 1, 3, 4,
* 5, 7, 8, 9 and 10; the structural blocks follow the two token blocks.
* Rationale: knowledge-base/style/theme-voices.md § neovision.
*
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-16 Graduated NeoVision from the style-board candidate
*/

:root[data-theme="neovision"] {
	--font-display: 'Hanken Grotesk', 'Helvetica Neue', system-ui, sans-serif;
	--font-body: 'Hanken Grotesk', 'Helvetica Neue', system-ui, sans-serif;
	--font-mono: 'IBM Plex Mono', ui-monospace, monospace;
	--font-size-label: 1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.6rem;
	--font-size-subheading: 2rem;
	--font-size-heading: 2.8rem;
	--font-size-stat: 3.6rem;
	--font-size-display: 4.4rem;
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 300;
	--font-weight-display: 200;
	--line-height-tight: 1.02;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.7;
	--letter-spacing-display: -.03em;
	--letter-spacing-body: normal;
	--radius-dense: .4rem;
	--radius-input: 1.2rem;
	--radius-button: 1.2rem;
	--radius-card: 1.8rem;
	--radius-pill: 999rem;
	--radius-sheet: 2rem;
	--radius-shell: 2rem;
	--radius-avatar: 999rem;
	--pad-cell: .6rem;
	--pad-dense: .8rem;
	--pad-row: 1.2rem;
	--pad-input: 1rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1rem;
	--pad-button-inline: 2rem;
	--pad-card: 2.2rem;
	--pad-sheet: 2.6rem;
	--pad-page: 2.4rem;
	--pad-shell: 3.2rem;
	--gap-hairline: .2rem;
	--gap-tight: .4rem;
	--gap-dense: .8rem;
	--gap-inline: 1.2rem;
	--gap-stack: 1.2rem;
	--gap-tile: 1.6rem;
	--gap-section: 3.2rem;
	--border-width: .1rem;
	--focus-ring-width: .2rem;
	--focus-ring-offset: .3rem;
	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: round;
	--icon-join: round;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-inset: none;
	--elevation-glow: none;
	--surface-blur: none;
	--surface-clip: none;
	--surface-page-backdrop: none;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-page-backdrop-size: cover;
	--surface-card-texture-repeat: no-repeat;
	--surface-card-texture-size: cover;
	--border-highlight: transparent;
	--motion-fast: 140ms;
	--motion-base: 260ms;
	--motion-slow: 420ms;
	--motion-enter-distance: .8rem;
	--motion-enter-name: motionEnter;
	--ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--ease-emphasized: cubic-bezier(0.16, 1, 0.3, 1);
	--ease-enter: cubic-bezier(0.16, 1, 0.3, 1);
	--surface-page: #FFFFFF;
	--surface-card: #FFFFFF;
	--surface-raised: #FFFFFF;
	--surface-sunken: #F1F1EF;
	--surface-hover: #F4F4F2;
	--surface-selected: #E6E6E3;
	--surface-overlay: rgba(10, 10, 10, 0.55);
	--surface-brandmark: #FFFFFF;
	--surface-card-texture: none;
	--brand-primary: #0A0A0A;
	--brand-secondary: #4A4A4A;
	--brand-accent: #0A0A0A;
	--text-primary: #0A0A0A;
	--text-secondary: #555553;
	--text-disabled: #70706F;
	--text-on-brand: #FFFFFF;
	--text-on-status: #F7F7F5;
	--text-link: #0A0A0A;
	--text-brand: #0A0A0A;
	--text-accent: #0A0A0A;
	--text-success: #1D3A2C;
	--text-warning: #46330F;
	--text-danger: #571F1F;
	--text-partial: #392B3F;
	--border-default: #D5D5D2;
	--border-strong: #2E2E2E;
	--status-success: #2E5743;
	--status-warning: #6A4C1C;
	--status-danger: #7B2E2E;
	--status-partial: #53405A;
	--status-info: #33566B;
	--focus-ring-color: #0A0A0A;
	--shadow-light-source: rgba(255, 255, 255, 0.7);
	--shadow-dark-source: rgba(10, 10, 10, 0.12);
	--elevation-raised: none;
	--elevation-overlay: 0 2rem 6rem rgba(10, 10, 10, 0.18);
	--elevation-surround: 0 0 0 .1rem rgba(10, 10, 10, 0.12);
	--sound-message-received: tick;
	--chart-line-shape: smooth;
	--chart-area-opacity: .36;
	--chart-material: polished;
	--chart-line-weight: 1.6;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.18;
	--chart-grid-opacity: 0.1;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: linear-gradient(145deg, color-mix(in srgb, var(--chart-series-1) 7%, transparent), transparent 65%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(90deg, transparent, rgba(255, 255, 255, .35) 45%, transparent);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

	--chart-series-2: #707070;
	--chart-series-3: #898989;
	--chart-series-4: #51515B;
	--chart-series-5: #7C7C8D;
	--chart-series-6: #8A8076;

}

:root[data-theme="neovision"][data-mode="dark"] {
	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .15rem;
	--icon-cap: round;
	--icon-join: round;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-inset: none;
	--elevation-glow: none;
	--surface-blur: none;
	--border-highlight: transparent;
	--surface-page: #080808;
	--surface-card: #131313;
	--surface-raised: #1D1D1D;
	--surface-sunken: #000000;
	--surface-hover: #202020;
	--surface-selected: #2B2B2B;
	--surface-overlay: rgba(0, 0, 0, 0.82);
	--surface-brandmark: #FFFFFF;
	--surface-card-texture: none;
	--brand-primary: #FFFFFF;
	--brand-secondary: #8C8C8C;
	--brand-accent: #FFFFFF;
	--text-primary: #F5F5F3;
	--text-secondary: #A2A2A0;
	--text-disabled: #818180;
	--text-on-brand: #080808;
	--text-on-status: #101010;
	--text-link: #FFFFFF;
	--text-brand: #FFFFFF;
	--text-accent: #FFFFFF;
	--text-success: #A9CCB9;
	--text-warning: #D8BE94;
	--text-danger: #DFAFAF;
	--text-partial: #C4B2C8;
	--border-default: #2C2C2C;
	--border-strong: #7A7A7A;
	--status-success: #9CC2AE;
	--status-warning: #CDB187;
	--status-danger: #D5A4A4;
	--status-partial: #B8A5BC;
	--status-info: #A2B8C6;
	--focus-ring-color: #FFFFFF;
	--shadow-light-source: rgba(255, 255, 255, 0.04);
	--shadow-dark-source: rgba(0, 0, 0, 0.5);
	--elevation-raised: none;
	--elevation-overlay: 0 2rem 6rem rgba(0, 0, 0, 0.66);
	--elevation-surround: 0 0 0 .1rem rgba(255, 255, 255, 0.09);
	--chart-series-2: #A2A2A2;
	--chart-series-3: #757575;
	--chart-series-4: #B8B8C3;
	--chart-series-5: #8D8DAB;
	--chart-series-6: #BAADA0;
}

/* Poster voice — the top heading rung only (decision 0016's voice channel). */
:root[data-theme="neovision"] .heading-larger:not(.styleBoardLanding__headline) {
	font-weight: var(--font-weight-display);
	line-height: var(--line-height-tight);
	text-transform: uppercase;
}

:root[data-theme="neovision"] .heading {
	font-weight: var(--font-weight-heading);
}

/* Slots 1 + 2 — card/pillBox frame and tile: the opposing broad/tight pair under an inset hairline. */
:root[data-theme="neovision"] :is(.pillBox, .tile):not(.chip, .button) {
	border-radius: var(--radius-card) var(--radius-dense) var(--radius-card) var(--radius-dense);
}

:root[data-theme="neovision"] .pillBox:not(.chip, .button) {
	box-shadow: inset 0 0 0 var(--border-width) var(--border-default);
}

/* Slot 4 — header underline: the eyebrow over a short leading rule. */
:root[data-theme="neovision"] .pillboxWithHeading__title {
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-body);
	text-transform: uppercase;
	letter-spacing: .16em;
	color: var(--text-secondary);
	border-bottom-color: transparent;
	background-image: linear-gradient(to right, var(--border-strong), var(--border-strong));
	background-size: var(--gap-section) var(--border-width);
	background-position: left bottom;
	background-repeat: no-repeat;
}

/* Chips — tracked caps under the panel pair, stated at the button rung its box can carry. */
:root[data-theme="neovision"] .chip {
	border-radius: var(--radius-button) var(--radius-dense) var(--radius-button) var(--radius-dense);
	text-transform: uppercase;
	letter-spacing: .1em;
}

/* Slot 5 — standalone actions: capsules, holding out every member of a set. */
:root[data-theme="neovision"] .button:not(.tabHeaderBar__tab, .backgroundToggleBar__tab, .toggleButtonBar__button, .fileViewer__ladderStop, .worksheetToolbar__groupToggle__option, .threadSidePanel__threadTile, .styleBoard__segmentButton) {
	border-radius: var(--radius-pill);
}

/* Slot 3 — entity-image silhouette: the card-rung plate under an inset ring. */
:root[data-theme="neovision"] .entityImageAndName__img,
:root[data-theme="neovision"] .entityImageAndName__imageNode,
:root[data-theme="neovision"] .profileImageExpander__print,
:root[data-theme="neovision"] .profileImageExpander__initials {
	border-radius: var(--radius-card);
}

:root[data-theme="neovision"] .entityImageAndName__imageNode::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: var(--radius-card);
	box-shadow: inset 0 0 0 var(--border-width) var(--border-strong);
	pointer-events: none;
}

/* Slot 7 — search field: the slanted ends cut back to a capsule pair. */
:root[data-theme="neovision"] .mainSearchBar__view::before,
:root[data-theme="neovision"] .mainSearchBar__view::after {
	content: none;
}

:root[data-theme="neovision"] .mainSearchBar__input {
	clip-path: none;
	border-radius: var(--radius-pill);
	box-shadow: inset 0 0 0 var(--border-width) var(--border-default);
	width: calc(100% - 5.9rem); /* intentional literal: 4.5rem button + 1rem right inset + .4rem gap, matching the de-slanted search geometry */
	right: 5.9rem;
	padding: .3rem var(--pad-input-inline); /* intentional literal: preserves the base input's vertical inset and outer height while removing its diagonal ends */
}

:root[data-theme="neovision"] .mainSearchBar__button {
	clip-path: none;
	border-radius: var(--radius-pill);
}

/* Slot 8 — tab bar: tracked caps, the current item a solid ink pill. */
:root[data-theme="neovision"] .tabHeaderBar__view {
	--tabHeaderBar-rail-border-color: transparent;
	--tabHeaderBar-indicator-thickness: 0;
	--tabHeaderBar-tab-radius: var(--radius-pill);
}

:root[data-theme="neovision"] .tabHeaderBar__tab {
	font-weight: var(--font-weight-medium);
	letter-spacing: .06em;
}

:root[data-theme="neovision"] .tabHeaderBar__tab[aria-selected='true'] {
	background-color: var(--brand-accent);
	color: var(--text-on-brand);
}

/* Slot 9 — segmented status control: a capsule track and knob. */
:root[data-theme="neovision"] .multiStepSlider__view-text :is(.multiStepSlider__track-text, .multiStepSlider__knob) {
	border-radius: var(--radius-pill);
}

:root[data-theme="neovision"] .multiStepSlider__view-text .multiStepSlider__track-text {
	box-shadow: inset 0 0 0 var(--border-width) var(--border-default);
}

/* Slot 10 — masthead: the hard cut, unblurred; the dark arm restated on specificity. */
:root[data-theme="neovision"] .mainHeader__view {
	border-radius: 0 0 var(--radius-shell) var(--radius-shell);
}

:root[data-theme="neovision"] .mastheadCover__view {
	background-image: linear-gradient(112deg, var(--brand-primary) 0 52%, var(--brand-secondary) 52% 53.5%, var(--surface-sunken) 53.5%);
}

:root[data-theme="neovision"] .mastheadCover__wash,
:root[data-theme="neovision"][data-mode="dark"] .mastheadCover__wash {
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
	background-image: linear-gradient(112deg, color-mix(in srgb, var(--brand-primary) 84%, transparent) 0 52%, color-mix(in srgb, var(--brand-secondary) 90%, transparent) 52% 53.5%, color-mix(in srgb, var(--surface-sunken) 88%, transparent) 53.5%);
}

/**
* dial.css — Dial theme: the weekDial instrument poster as a complete visual world
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* One warm print-gray sheet, near-black ink, one signal orange spent on marks and
* fills, mid-gray trace circles. Wallpoet casts the stencil on the theme-voice
* --font-poster (the two large heading rungs and the lockup), B612 tells on every
* display and body rung, B612 Mono measures. Flat print on .2rem working strokes: capsules and rounded
* plates, no lift, the dial trace drawn as the page backdrop and the masthead cover.
* Claims all ten decision-0014 slots; the structural blocks follow the two token
* blocks. Rationale: knowledge-base/style/theme-voices.md § dial.
*
* @version 2026-September-18 Initial Version (#2466)
*/

:root[data-theme="dial"] {
	--surface-page: #DEDDD8;
	--surface-card: #EBEAE5;
	--surface-raised: #F2F1EC;
	--surface-sunken: #D0CFC9;
	--surface-hover: #D6D5CF;
	--surface-selected: #F1D6C2;
	--surface-overlay: rgba(22, 21, 19, 0.55);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #E86A10;
	--brand-secondary: #F29A5E;
	--brand-accent: #E86A10;

	--text-primary: #161513;
	--text-secondary: #4E4D49;
	--text-on-brand: #161513;
	--text-on-status: #F2F1EC;
	--text-disabled: #74736E;
	--text-link: #8F3D05;
	--text-brand: #8F3D05;
	--text-accent: #8F3D05;
	--text-success: #244F2E;
	--text-warning: #5E3F00;
	--text-danger: #8E2418;
	--text-partial: #524290;

	--border-default: rgba(22, 21, 19, 0.30);
	--border-strong: #161513;
	--border-width: .2rem;

	--status-success: #285E36;
	--status-warning: #6E4A00;
	--status-danger: #9B2A1C;
	--status-partial: #5B4A98;
	--status-info: #3A5570;

	--focus-ring-color: #161513;

	--chart-gradient: linear-gradient(135deg, #E86A10 0%, #F29A5E 45%, #161513 100%);

	--scrollbar-thumb: var(--text-primary);
	--scrollbar-thumb-hover: var(--brand-accent);

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: butt;
	--icon-join: miter;

	--font-display: 'B612', 'Helvetica Neue', Arial, sans-serif;
	--font-poster: 'Wallpoet', 'B612', 'Arial Narrow', sans-serif;
	--font-body: 'B612', 'Helvetica Neue', Arial, sans-serif;
	--font-mono: 'B612 Mono', 'Courier New', monospace;

	--font-size-label: 1.1rem;
	--font-size-caption: 1.2rem;
	--font-size-body: 1.4rem;
	--font-size-lead: 1.7rem;
	--font-size-subheading: 2.1rem;
	--font-size-heading: 2.7rem;
	--font-size-stat: 3.4rem;
	--font-size-display: 4.4rem;
	--font-weight-body: 400;
	--font-weight-medium: 700;
	--font-weight-heading: 400;
	--font-weight-display: 400;
	--line-height-tight: 1.1;
	--line-height-body: 1.6;
	--line-height-relaxed: 1.7;
	--letter-spacing-display: .04em;
	--letter-spacing-body: 0em;

	--radius-dense: .6rem;
	--radius-input: 1.2rem;
	--radius-button: 2.5rem;
	--radius-card: 1.6rem;
	--radius-sheet: 2.4rem;
	--radius-shell: 2.4rem;
	--radius-pill: 999rem;
	--radius-avatar: 999rem;

	--pad-cell: .6rem;
	--pad-dense: 1rem;
	--pad-row: 1.1rem;
	--pad-input: 1.2rem;
	--pad-input-inline: 1.6rem;
	--pad-button: 1rem;
	--pad-button-inline: 2.2rem;
	--pad-card: 2rem;
	--pad-sheet: 2.6rem;
	--pad-page: 2rem;
	--pad-shell: 3.2rem;
	--gap-hairline: .2rem;
	--gap-tight: .6rem;
	--gap-dense: .9rem;
	--gap-inline: 1rem;
	--gap-stack: 1.4rem;
	--gap-tile: 1.8rem;
	--gap-section: 2.4rem;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(22, 21, 19, 0.30);
	--border-highlight: transparent;
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-raised: none;
	--elevation-inset: inset 0 .2rem 0 rgba(22, 21, 19, 0.22);
	--elevation-overlay: 0 0 0 .2rem #161513;
	--elevation-glow: 0 0 0 .3rem rgba(232, 106, 16, 0.55);
	--elevation-surround: 0 0 0 .2rem rgba(22, 21, 19, 0.30);

	--surface-clip: none;
	--surface-page-backdrop:
		radial-gradient(circle at 100% 0%, transparent 27.8rem, #A6A49D 27.8rem, #A6A49D 28rem, transparent 28rem),
		radial-gradient(circle at 100% 0%, transparent 35.8rem, rgba(166, 164, 157, 0.55) 35.8rem, rgba(166, 164, 157, 0.55) 36rem, transparent 36rem),
		radial-gradient(circle at 100% 0%, transparent 21.5rem, #161513 21.5rem, #161513 22.5rem, transparent 22.5rem);
	--surface-page-backdrop-size: 100% 100%;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-card-texture: none;
	--surface-card-texture-size: auto;
	--surface-card-texture-repeat: no-repeat;

	--motion-fast: 90ms;
	--motion-base: 160ms;
	--motion-slow: 260ms;
	--motion-enter-distance: .4rem;
	--motion-enter-name: dialEnter;
	--sound-message-received: tick;
	--ease-standard: cubic-bezier(0.2, 0, 0, 1);
	--ease-emphasized: cubic-bezier(0.3, 0, 0, 1);
	--ease-enter: cubic-bezier(0.1, 0, 0.2, 1);
	--chart-line-shape: smooth;
	--chart-area-opacity: .4;
	--chart-material: signal;
	--chart-line-weight: 1.3;
	--chart-glow-strength: 0;
	--chart-wash-opacity: 0.16;
	--chart-grid-opacity: 0.22;
	--chart-marker-shape: square;
	--chart-label-font: var(--font-mono);
	--chart-frame-elevation: var(--elevation-flat);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-border: color-mix(in srgb, var(--chart-series-1) 18%, var(--border-default));
	--chart-frame-texture: linear-gradient(90deg, color-mix(in srgb, var(--chart-series-1) 8%, transparent), transparent 60%);
	--chart-plot-surface: transparent;
	--chart-plot-texture: repeating-linear-gradient(0deg, transparent, transparent .3rem, color-mix(in srgb, var(--chart-series-1) 4%, transparent) .3rem, color-mix(in srgb, var(--chart-series-1) 4%, transparent) .4rem);
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-flat);
	--chart-mark-radius: var(--radius-dense);
	--chart-bar-texture: repeating-linear-gradient(135deg, transparent, transparent .3rem, rgba(255, 255, 255, .35) .3rem, rgba(255, 255, 255, .35) .4rem);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 9%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 1;

	--chart-series-2: #5D625C;
	--chart-series-3: #8A7653;
	--chart-series-4: #637B8B;
	--chart-series-5: #876673;
	--chart-series-6: #677D69;

}

:root[data-theme="dial"][data-mode="dark"] {
	--surface-page: #161513;
	--surface-card: #21201D;
	--surface-raised: #2A2926;
	--surface-sunken: #0E0D0C;
	--surface-hover: #2E2D29;
	--surface-selected: #4A2C17;
	--surface-overlay: rgba(0, 0, 0, 0.65);
	--surface-brandmark: #FFFFFF;

	--brand-primary: #E86A10;
	--brand-secondary: #DEDDD8;
	--brand-accent: #E86A10;

	--text-primary: #DEDDD8;
	--text-secondary: #B3B2AC;
	--text-on-brand: #161513;
	--text-on-status: #161513;
	--text-disabled: #8A8983;
	--text-link: #F5A66B;
	--text-brand: #F5A66B;
	--text-accent: #F5A66B;
	--text-success: #86C069;
	--text-warning: #E5B54D;
	--text-danger: #F28572;
	--text-partial: #B9A8F2;

	--border-default: rgba(222, 221, 216, 0.30);
	--border-strong: #DEDDD8;
	--border-width: .2rem;

	--status-success: #86C069;
	--status-warning: #E5B54D;
	--status-danger: #F28572;
	--status-partial: #B9A8F2;
	--status-info: #93B7E0;

	--focus-ring-color: #E86A10;

	--chart-gradient: linear-gradient(135deg, #E86A10 0%, #F29A5E 45%, #DEDDD8 100%);

	--scrollbar-thumb: var(--text-primary);
	--scrollbar-thumb-hover: var(--brand-accent);

	--icon-accent: var(--brand-accent);
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: butt;
	--icon-join: miter;

	--font-display: 'B612', 'Helvetica Neue', Arial, sans-serif;
	--font-poster: 'Wallpoet', 'B612', 'Arial Narrow', sans-serif;
	--font-body: 'B612', 'Helvetica Neue', Arial, sans-serif;
	--font-mono: 'B612 Mono', 'Courier New', monospace;

	--shadow-light-source: transparent;
	--shadow-dark-source: rgba(0, 0, 0, 0.50);
	--border-highlight: rgba(222, 221, 216, 0.06);
	--surface-blur: none;
	--elevation-flat: none;
	--elevation-button: none;
	--elevation-raised: none;
	--elevation-inset: inset 0 .2rem 0 rgba(0, 0, 0, 0.45);
	--elevation-overlay: 0 0 0 .2rem rgba(222, 221, 216, 0.80);
	--elevation-glow: 0 0 0 .3rem rgba(232, 106, 16, 0.55);
	--elevation-surround: 0 0 0 .2rem rgba(222, 221, 216, 0.30);

	--surface-clip: none;
	--surface-page-backdrop:
		radial-gradient(circle at 100% 0%, transparent 27.8rem, rgba(222, 221, 216, 0.22) 27.8rem, rgba(222, 221, 216, 0.22) 28rem, transparent 28rem),
		radial-gradient(circle at 100% 0%, transparent 35.8rem, rgba(222, 221, 216, 0.12) 35.8rem, rgba(222, 221, 216, 0.12) 36rem, transparent 36rem),
		radial-gradient(circle at 100% 0%, transparent 21.5rem, rgba(222, 221, 216, 0.80) 21.5rem, rgba(222, 221, 216, 0.80) 22.5rem, transparent 22.5rem);
	--surface-page-backdrop-size: 100% 100%;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-card-texture: none;
	--surface-card-texture-size: auto;
	--surface-card-texture-repeat: no-repeat;
	--chart-series-2: #C1BEB2;
	--chart-series-3: #99917E;
	--chart-series-4: #96B0C0;
	--chart-series-5: #BC9AA8;
	--chart-series-6: #9EB6A0;

}

:root[data-theme="dial"][data-viewport="phone"] {
	--surface-page-backdrop:
		radial-gradient(circle at 100% 0%, transparent 13.8rem, #A6A49D 13.8rem, #A6A49D 14rem, transparent 14rem),
		radial-gradient(circle at 100% 0%, transparent 17.8rem, rgba(166, 164, 157, 0.55) 17.8rem, rgba(166, 164, 157, 0.55) 18rem, transparent 18rem);
}

:root[data-theme="dial"][data-mode="dark"][data-viewport="phone"] {
	--surface-page-backdrop:
		radial-gradient(circle at 100% 0%, transparent 13.8rem, rgba(222, 221, 216, 0.22) 13.8rem, rgba(222, 221, 216, 0.22) 14rem, transparent 14rem),
		radial-gradient(circle at 100% 0%, transparent 17.8rem, rgba(222, 221, 216, 0.12) 17.8rem, rgba(222, 221, 216, 0.12) 18rem, transparent 18rem);
}

@keyframes dialEnter {
	from {
		opacity: 0;
		transform: translateY(var(--motion-enter-distance)) rotate(-1.2deg);
	}

	55% {
		opacity: 1;
	}

	to {
		opacity: 1;
		transform: translateY(0) rotate(0deg);
	}
}

/* ── structural claims (decision 0014) ── */

:root[data-theme="dial"] .pillBox:not(.chip):not(.button):not(:focus-visible) {
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: calc(-1 * var(--border-width));
}

:root[data-theme="dial"] .tile:not(.chip):not(.button)[class*="__view-selected"] {
	background-color: var(--surface-selected);
	border-color: var(--border-strong);
}

:root[data-theme="dial"] .entityDisplayImage__view:not(:focus-visible) {
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: calc(-1 * var(--border-width));
}

:root[data-theme="dial"] .entityImageAndName__img,
:root[data-theme="dial"] .entityImageAndName__imageNode {
	border-radius: var(--radius-avatar);
}

:root[data-theme="dial"] .entityImageAndName__imageNode:not(:has(.expandableEntityImage__view:focus-visible))::after {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	pointer-events: none;
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: calc(-1 * var(--border-width));
	background-image: radial-gradient(circle at 50% calc(100% - .9rem), var(--brand-accent) .4rem, transparent .5rem);
}

:root[data-theme="dial"] .profileImageExpander__print,
:root[data-theme="dial"] .profileImageExpander__initials {
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: 0;
	box-shadow: none;
}

:root[data-theme="dial"] .profileImagesScrollArea__view {
	border: var(--border-width) solid var(--border-strong);
	background-color: var(--surface-page);
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

:root[data-theme="dial"] .profileImagesScrollArea__imageFrame {
	border-radius: var(--radius-avatar);
}

:root[data-theme="dial"] .profileImageExpander__close:not(:focus-visible),
:root[data-theme="dial"] .profileImageExpander__step:not(:focus-visible) {
	outline: var(--border-width) solid var(--border-strong);
	outline-offset: calc(-1 * var(--border-width));
}

:root[data-theme="dial"] .pillboxWithHeading__title {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	font-family: var(--font-body);
	font-weight: var(--font-weight-medium);
	text-transform: uppercase;
	letter-spacing: .14em;
	border-bottom: var(--border-width) solid var(--text-primary);
	padding-bottom: var(--gap-tight);
}

:root[data-theme="dial"] .pillboxWithHeading__title::before {
	content: '';
	flex: none;
	width: 1rem;
	height: .8rem;
	background-color: var(--brand-accent);
	clip-path: polygon(50% 0, 100% 100%, 0 100%);
}

:root[data-theme="dial"] .button {
	font-family: var(--font-body);
	font-weight: var(--font-weight-medium);
	text-transform: uppercase;
	letter-spacing: .12em;
}

:root[data-theme="dial"] .button-lightBackground,
:root[data-theme="dial"] .button-darkBackground {
	border-color: var(--border-strong);
}

:root[data-theme="dial"] .overlayPanel::before {
	content: '';
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	height: .6rem;
	background-image: repeating-linear-gradient(135deg, var(--text-primary) 0 .3rem, transparent .3rem .7rem);
	z-index: 1;
	pointer-events: none;
}

:root[data-theme="dial"] .mainSearchBar__view::before,
:root[data-theme="dial"] .mainSearchBar__view::after {
	content: none;
}

:root[data-theme="dial"] .mainSearchBar__input {
	clip-path: none;
	border: var(--border-width) solid var(--border-strong);
	background-color: var(--surface-card);
	border-radius: var(--radius-pill);
	width: calc(100% - 1.4rem - max(4.5rem, var(--touch-target-primary)));
	right: calc(1.4rem + max(4.5rem, var(--touch-target-primary)));
	padding: .3rem var(--pad-dense); /* intentional literal: the .3rem vertical is the base rule's, kept so the input's outer box height is unchanged */
}

:root[data-theme="dial"] .mainSearchBar__input:focus-visible {
	border-color: var(--brand-primary);
}

:root[data-theme="dial"] .mainSearchBar__button {
	clip-path: none;
	border-radius: var(--radius-pill);
}

:root[data-theme="dial"] .tabHeaderBar__view {
	--tabHeaderBar-rail-border-color: var(--text-primary);
	--tabHeaderBar-indicator-background-color: var(--brand-accent);
	--tabHeaderBar-indicator-thickness: .4rem;
	--tabHeaderBar-indicator-radius: 0;
	--tabHeaderBar-tab-radius: var(--radius-pill);
}

:root[data-theme="dial"] .tabHeaderBar__tab {
	font-family: var(--font-mono);
	text-transform: uppercase;
	letter-spacing: .12em;
}

:root[data-theme="dial"] .multiStepSlider__view-text .multiStepSlider__track-text {
	border-radius: var(--radius-pill);
	background-color: var(--surface-page);
	box-shadow: 0 0 0 var(--border-width) var(--border-strong);
}

:root[data-theme="dial"] .multiStepSlider__view-text .multiStepSlider__knob {
	border-radius: var(--radius-pill);
	background-color: var(--brand-accent);
	box-shadow: none;
}

:root[data-theme="dial"] .multiStepSlider__view-text .multiStepSlider__stopLabel {
	font-family: var(--font-mono);
	font-weight: var(--font-weight-body);
	text-transform: uppercase;
	letter-spacing: .1em;
}

:root[data-theme="dial"] .mastheadCover__view {
	background-image: none;
	background-color: var(--surface-sunken);
}

:root[data-theme="dial"] .mastheadCover__wash {
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
	background-image:
		radial-gradient(circle at 84% 50%, var(--brand-accent) .5rem, transparent .6rem),
		radial-gradient(circle at 84% 50%, transparent 2.3rem, var(--text-primary) 2.3rem, var(--text-primary) 2.6rem, transparent 2.6rem),
		radial-gradient(circle at 84% 50%, transparent 3.9rem, var(--text-secondary) 3.9rem, var(--text-secondary) 4.1rem, transparent 4.1rem),
		linear-gradient(color-mix(in srgb, var(--surface-page) 84%, transparent), color-mix(in srgb, var(--surface-page) 84%, transparent));
}

:root[data-theme="dial"] .mainHeader__view {
	border-bottom-color: var(--text-primary);
}

:root[data-theme="dial"] .onlineIndicator__lamp {
	border-radius: var(--radius-pill);
	background-image: none;
	box-shadow: 0 0 0 var(--border-width) var(--surface-page), 0 0 0 calc(2 * var(--border-width)) var(--text-primary);
}

:root[data-theme="dial"] .onlineIndicator__header {
	font-family: var(--font-mono);
	text-transform: uppercase;
	letter-spacing: .12em;
}

/* ── voice claims (decision 0016) ── */

:root[data-theme="dial"] ::selection {
	background: var(--text-primary);
	color: var(--surface-page);
}

:root[data-theme="dial"][data-mode="dark"] ::selection {
	background: var(--brand-accent);
	color: var(--text-on-brand);
}

:root[data-theme="dial"] input,
:root[data-theme="dial"] textarea,
:root[data-theme="dial"] [contenteditable] {
	caret-color: var(--brand-accent);
}

:root[data-theme="dial"] .heading {
	font-family: var(--font-body);
	font-weight: var(--font-weight-medium);
}

:root[data-theme="dial"] .heading-large,
:root[data-theme="dial"] .heading-larger {
	font-family: var(--font-poster);
	font-weight: var(--font-weight-display);
	text-transform: uppercase;
}

:root[data-theme="dial"] .chip,
:root[data-theme="dial"] .chip .heading {
	font-family: var(--font-mono);
	text-transform: uppercase;
	letter-spacing: .08em;
}

:root[data-theme="dial"] .chip {
	border-color: var(--border-strong);
}

:root[data-theme="dial"] .styleBoardScene__statValue,
:root[data-theme="dial"] .taskEntryTile__total,
:root[data-theme="dial"] .taskTile__timer,
:root[data-theme="dial"] .teamMemberTile__timer,
:root[data-theme="dial"] .taskProgressSummary__percentageValue,
:root[data-theme="dial"] .taskProgressSummary__completedValue,
:root[data-theme="dial"] .projectProgressSummary__percentageValue,
:root[data-theme="dial"] .taskTimeSummary__remainingValue,
:root[data-theme="dial"] .projectTimeSummary__timeLeftValue,
:root[data-theme="dial"] .taskDeadlineSummary__daysLeftValue,
:root[data-theme="dial"] .projectDeadlineSummary__daysLeftValue,
:root[data-theme="dial"] .taskTimeSummary__total .headerWithSmallHeading__header,
:root[data-theme="dial"] .taskTimeSummary__consumed .headerWithSmallHeading__header,
:root[data-theme="dial"] .projectTimeSummary__total .headerWithSmallHeading__header,
:root[data-theme="dial"] .projectTimeSummary__consumed .headerWithSmallHeading__header,
:root[data-theme="dial"] .taskFinancialSummary__billed,
:root[data-theme="dial"] .projectFinancialSummary__billed {
	font-family: var(--font-mono);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
}

@media (prefers-reduced-motion: reduce) {
	:root[data-theme="dial"] {
		--motion-enter-name: motionEnter;
	}
}

/**
* app.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

/* Theme overrides — must precede any other style declarations.
   CSS spec: @import is only honored when it appears before any
   rule blocks (after @charset / @layer only). Putting it lower
   in the file silently invalidates the import. See
   knowledge-base/style/architecture.md for the multi-theme
   pattern. */

/* Single cascade-layer order for the whole bundle. Declaration only — later,
   lower-priority layers win over earlier ones. Wrapping existing rules into
   these layers is a separate bundle-wide pass (out of scope here). See
   knowledge-base/style/architecture.md. */
@layer reset, tokens, base, theme, state, utilities;

html {
	/* Fluid root size (desktop-preserving): 1rem = 8px at ≤320px viewport
	   rising to 10px at ≥800px, so desktops render exactly as the old
	   `font-size: 62.5%` did and only phone/small-tablet widths shrink.
	   Percentages resolve against the browser-initial 16px: 50% = 8px,
	   62.5% = 10px, preferred = 41.667% (6.667px) + 0.4167vw. */
	font-size: clamp(50%, 41.667% + 0.4167vw, 62.5%);
	/* -webkit-print-color-adjust: exact; */
}

body {
	margin: 0;
	font-family: var(--font-body);
	color: var(--text-primary);
	/* Body type floor. `html` is a fluid `clamp(50%, …, 62.5%)` (10px at desktop),
	   so without this every element that never sets its own `font-size` inherits
	   the 10px root — which is why so many components hardcoded a size just to opt
	   out of it. The SIZE floor is 1.4rem (not the roomier 1.6rem), deliberately
	   halving the jump; the LEADING is the retuned 1.5 per the roomy posture.
	   Those are two separate decisions — this comment used to read as if the
	   1.4 applied to both, which cost one integration round to disambiguate.
	   Separately revertible: if the contact sheet shows clipping in fixed-height
	   containers, revert these two lines FIRST. */
	font-size: var(--font-size-body);
	line-height: var(--line-height-body);
	letter-spacing: var(--letter-spacing-body);
	overflow: hidden;
	height: 100dvh;
	width: 100dvw;
	transition: all var(--transition-base), height 0s, width 0s;
}

[contenteditable] {
	user-select: text;
	-moz-user-select: text;
	-webkit-user-select: text;
}

* {
	background-color: transparent;
	margin: 0;
	padding: 0;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	/* Animate everything by default, timed by the themeable --transition-base
	   token. A scoped property list (background-color/color/border/box-shadow/
	   transform) was tried for paint perf, but it left opacity fades, layout,
	   and position changes snapping — too jumpy. Elements with their own
	   transition (e.g. the 3D depth cards) override this, so the broad default
	   doesn't lag their per-frame updates. font-size is excluded (the sanctioned
	   exclusion-list shape, not a property-list narrowing): the fluid `html`
	   clamp moves the rem basis on every resize, so every element inheriting it
	   would animate its computed size for the whole transition duration. */
	transition: all var(--transition-base), font-size 0s;
}

/* Focus-visible ring system (replaces the global `*:focus{outline:none}` kill
   switch). Mouse/pointer focus keeps the prior no-ring behavior; keyboard / AT
   focus gets the themeable ring. outline (not box-shadow) is used: it doesn't
   trigger layout and isn't clipped by overflow:hidden ancestors. WCAG 2.4.11. */
:focus:not(:focus-visible) {
	outline: none;
}

:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
	border-radius: inherit;
}

/* Honor user motion preference: neutralize transitions + animations app-wide.
   Covers the loading shimmer and the scoped transition above. WCAG 2.3.3. */
@media (prefers-reduced-motion: reduce) {

	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
}

:root {
	/* ============================================================
	   There is ONE token vocabulary: the role tokens. The legacy
	   `Capitalized_Snake` / `snake_case` aliases are retired, and
	   `retiredTokens.test.js` fails the build on any reintroduction —
	   necessary because a missing custom property fails SILENTLY: it is
	   invalid at computed-value time, so the property falls back to
	   inherited/initial and a colour just quietly goes transparent.

	   DELIBERATELY KEPT below, and this is the COMPLETE list: the `--Badge_*`
	   family (a real semantic layer — "retint badges without touching the
	   base palette" — and read from `baseElements.js`, so its legacy-style
	   naming is a separate consistency question, not debt), plus four
	   literal-valued app tokens: `--app-Blue`, `--app-Gray-mid`,
	   `--text-shadow-hover` and `--border-shorthand`. Every other legacy
	   token was removed outright with its consumers rewritten; there is no
	   deferred phase.

	   Why the retirement was safe, and why it beat a lint rule:
	   knowledge-base/style/tokens.md#legacy-aliases--retired
	   ============================================================ */
	/* Custom Colors */
	--app-Blue: rgb(119, 167, 244);
	--app-Gray-mid: rgb(166, 166, 166);
	/* Badge colors — the palette `getBadge` draws from (see BADGE_BACKGROUNDS in
	   baseElements.js). Each derives from a themeable role token via var(), so
	   badges re-theme with the active theme / per-entity customization; override
	   just these to retint badges without touching the base palette. That
	   independent-retint seam is why this family SURVIVED the retirement above —
	   it is a semantic layer, not an alias. */
	--Badge_Neutral_Background: transparent;
	--Badge_Highlight_Background: var(--brand-accent);
	--Badge_Success_Background: var(--status-success);
	--Badge_Warning_Background: var(--status-warning);
	--Badge_Partial_Background: var(--status-partial);
	--Badge_Danger_Background: var(--status-danger);
	/* Text drawn on top of a filled badge vs. the outline-only neutral badge.
	   The highlight badge fills with --brand-accent, not a status fill, so it
	   inks the BRAND on-fill role — one ink per fill family, each gated against
	   the fill it lands on. */
	--Badge_On_Fill_Font_Color: var(--text-on-status);
	--Badge_Highlight_Font_Color: var(--text-on-brand);
	--Badge_Neutral_Font_Color: var(--text-primary);
	/* intentional literal: text-shadow has no --elevation-* role to bridge onto */
	--text-shadow-hover: .15rem .15rem rgba(0, 0, 0, 0.075);
	/* Composite shorthand, not an alias — expanding it at its 36 call sites
	   would be strictly worse than keeping it, so it was RENAMED into the role
	   vocabulary (from `--default_border`) rather than retired. */
	--border-shorthand: var(--border-width) solid var(--border-default);

	/* ============================================================
	   DEEP-THEMING TOKEN SYSTEM (Phase 1, deep-theming plan).
	   Two tiers: `--_`-prefixed PRIMITIVES (fixed cascade floor,
	   never themed) and bare-kebab semantic ROLE tokens (themeable;
	   the CUSTOMIZABLE_STYLES candidate set). Role tokens alias into
	   primitives. The floor is its own default set — since #2076 every
	   theme, modern included, states its bespoke values over it.
	   Signal: bare role = themeable; `--_` = fixed.
	   See knowledge-base/style/architecture.md.
	   ============================================================ */

	/* --- PRIMITIVE FLOOR (--_, cascade-only) --- */
	--_grey-50: #fafafc;
	--_grey-100: #f1efef;
	--_grey-200: #e6e6e6;
	--_grey-300: #d9d9de;
	--_grey-400: #a6a6a6;
	--_grey-500: #8c8c8c;
	--_grey-600: #646464;
	--_grey-700: #3f4a5f;
	--_radius-none: 0;
	--_radius-sm: .5rem;
	--_radius-md: 1rem;
	--_radius-lg: 1.6rem;
	/* xl retuned 2.5rem → 2rem to give --radius-sheet a 20px rung; the old 2.5rem
	   is preserved as 2xl behind the new --radius-shell, so nothing is retired.
	   Free: --_radius-* has zero consumers outside this block and no theme file
	   re-declares a primitive. */
	--_radius-xl: 2rem;
	--_radius-2xl: 2.5rem;
	--_radius-full: 999rem;
	--_space-0: 0;
	--_space-05: .2rem;
	--_space-1: .8rem;
	--_space-2: 1rem;
	--_space-3: 1.2rem;
	--_space-4: 1.6rem;
	--_space-5: 2.4rem;
	--_space-6: 3.2rem;
	--_space-7: 4.8rem;
	/* Type ladder 10/12/14/16/20/24/30/36px. 2xs is new (the .7–.85rem cluster's
	   legibility floor); the top two rungs were pulled down so no gap above 12px
	   exceeds 25% — that is what lets every codemod collapse honour the drift cap. */
	--_text-2xs: 1rem;
	--_text-xs: 1.2rem;
	--_text-sm: 1.4rem;
	--_text-md: 1.6rem;
	--_text-lg: 2rem;
	--_text-xl: 2.4rem;
	--_text-2xl: 3rem;
	--_text-3xl: 3.6rem;
	/* Shadow casters. A layered shadow needs a tight contact layer plus a diffuse
	   ambient one; the cool tint (slate rather than pure black) is what keeps a
	   shadow from reading muddy over a tinted surface. */
	--_shadow-contact: rgba(15, 23, 42, .06);
	--_shadow-ambient: rgba(15, 23, 42, .10);
	--_shadow-key: rgba(15, 23, 42, .16);
	--_ease-standard: cubic-bezier(0.4, 0, 0.2, 1);
	--_ease-emphasized: cubic-bezier(0.2, 0, 0, 1);
	/* A true ease-out. --_ease-standard has an ease-IN front half and is wrong for
	   entrances (see --ease-enter). */
	--_ease-decelerate: cubic-bezier(0, 0, 0.2, 1);

	/* --- SEMANTIC ROLE TOKENS (themeable; floor defaults) --- */
	/* surfaces */
	--surface-page: rgb(250, 250, 250);
	--surface-card: #ffffff;
	--surface-raised: #ffffff;
	--surface-sunken: #f1eff6;
	--surface-hover: #F0E8FA;
	--surface-selected: #EADCFB;
	--surface-overlay: rgba(0, 0, 0, .3);
	/* The plate a third-party card-network mark sits on. The ONE role token that
	   deliberately does NOT track the theme: every theme declares it, and every
	   theme declares it light, because Visa's mark is blue-on-white, Amex's is
	   white-on-blue and Mastercard's circles assume a light ground — all three
	   forbid recolouring, and --surface-raised is near-black on three themes and
	   in every dark mode. Not in the StyleProperties catalog: a customer
	   recolouring a Visa plate is a trademark problem, not a preference.
	   See knowledge-base/style/tokens.md. */
	--surface-brandmark: #FFFFFF;
	/* menus (derived roles — knowledge-base/style/tokens.md § Menus) */
	--menu-surface: var(--surface-card);
	--menu-border-color: var(--border-default);
	--menu-elevation: var(--elevation-overlay);
	--menu-radius: var(--radius-card);
	--menu-option-hover: var(--surface-hover);
	--menu-option-selected: var(--surface-selected);
	--menu-check-ink: var(--text-accent);
	/* brand */
	--brand-primary: #9D33F2;
	--brand-secondary: #7C3AED;
	--brand-accent: #E61542;
	/* text */
	--text-primary: #3f4a5f;
	--text-secondary: #606273;
	--text-on-brand: #ffffff;
	--text-on-status: #F7F7F8;
	--text-disabled: #7E7E7E;
	--text-link: #8D11F0;
	--text-brand: #8D11F0;
	--text-accent: #C41238;
	/* Ink drawn over uncontrolled imagery (photos, video). Deliberately fixed
	   white in every theme and both modes, like --surface-brandmark.
	   See knowledge-base/style/tokens.md. */
	--text-on-media: #FFFFFF;
	--text-success: #466C30;
	--text-warning: #95510C;
	--text-danger: #C41238;
	--text-partial: #BF1B48;
	/* border */
	--border-default: rgba(0, 0, 0, .1);
	--border-strong: rgba(0, 0, 0, .2);
	--border-width: .1rem;
	/* status */
	--status-success: #4C7534;
	--status-warning: #A1570D;
	--status-danger: #D2133C;
	--status-partial: #CD1D4E;
	--status-info: #1164DD;
	/* focus ring (a11y, themeable; width never < 2px per WCAG 2.4.11) */
	--focus-ring-color: #297aef;
	--focus-ring-width: .2rem;
	--focus-ring-offset: .2rem;
	/* icon — drawn-glyph knobs. The three stroke knobs are INHERITED SVG
	   presentation properties, so they pierce the <use> shadow tree
	   (icon.css consumes them); accent/fill are read by inline style="var(…)"
	   layers inside the icon drawings. .2rem ≡ 2 SVG user units on the 24-grid at
	   the 10px desktop root.
	   Accent floors at currentColor so an un-themed icon stays monochrome
	   and state-driven coloring (disabled, danger, selected nav) survives. */
	--icon-accent: currentColor;
	--icon-fill: none;
	--icon-stroke-width: .2rem;
	--icon-cap: round;
	--icon-join: round;
	/* typography */
	--font-display: 'Poppins', system-ui, sans-serif;
	--font-body: 'Poppins', 'inter', helvetica, sans-serif;
	--font-mono: ui-monospace, 'Courier New', monospace;
	/* One role per ladder rung, so no component ever needs to reach for a --_
	   primitive. Names are functional, never value-named. */
	--font-size-label: var(--_text-2xs);
	--font-size-caption: var(--_text-xs);
	--font-size-body: var(--_text-sm);
	--font-size-lead: var(--_text-md);
	--font-size-subheading: var(--_text-lg);
	--font-size-heading: var(--_text-xl);
	--font-size-stat: var(--_text-2xl);
	--font-size-display: var(--_text-3xl);
	--font-weight-body: 400;
	--font-weight-medium: 500;
	--font-weight-heading: 600;
	--font-weight-display: 700;
	--line-height-tight: 1.2;
	--line-height-body: 1.5;
	--line-height-relaxed: 1.65;
	--letter-spacing-display: normal;
	--letter-spacing-body: normal;
	/* shape — radius roles. ROOMY posture: inputs/buttons 10px, cards 16px,
	   sheets 20px, outermost shells 25px — the targets knowledge-base/style/
	   modern.md already documents, which the shipped 5px/10px undershot.
	   --radius-dense is the mandatory dense-data-surface exception. */
	--radius-dense: var(--_radius-sm);
	--radius-input: var(--_radius-md);
	--radius-button: var(--_radius-md);
	--radius-card: var(--_radius-lg);
	--radius-sheet: var(--_radius-xl);
	--radius-shell: var(--_radius-2xl);
	--radius-pill: var(--_radius-full);
	--radius-avatar: var(--_radius-full);
	/* 50% remains distinct from a pill: on a non-square box it preserves an
	   ellipse rather than turning it into a stadium. */
	--radius-circle: 50%;
	/* elevation — full box-shadow value strings + themeable casters */
	--shadow-light-source: transparent;
	--shadow-dark-source: var(--_shadow-ambient);
	/* The dark-mode top highlight, exposed as a role so a theme can kill it
	   rather than fight a hardcoded rgba(255,255,255,…). Floor is transparent. */
	--border-highlight: transparent;
	/* Glassmorphism backdrop-filter — themes opt in (e.g. cyber/perspective glass);
	   floor is `none` so opaque themes pay no blur cost. Consumed by `.tile`. */
	--surface-blur: none;
	/* Selection/focus paint is an alpha overlay, not --surface-selected: themes
	   may make the latter opaque for selected rows. */
	--state-selection-highlight: color-mix(in srgb, var(--brand-accent) 25%, transparent);
	--elevation-flat: none;
	--elevation-button: 0 .1rem .2rem var(--_shadow-contact);
	--elevation-raised: 0 .1rem .2rem var(--_shadow-contact), 0 .4rem 1.2rem -.2rem var(--shadow-dark-source);
	--elevation-inset: inset 0 .1rem .2rem var(--_shadow-contact);
	--elevation-overlay: 0 .2rem .4rem var(--_shadow-contact), 0 1.6rem 3.2rem -.8rem var(--_shadow-key);
	--elevation-glow: 0 0 1.6rem -.2rem var(--brand-accent);
	/* The one OMNIDIRECTIONAL rung — no y-offset, so it reads as a ring around the
	   element rather than a drop beneath it. Exists because the legacy
	   --box-shadow-hover-far it backs is applied to round / knob surfaces (the
	   slider knob, the avatar in entityImageAndName, the notePad corner) where a
	   directional drop looks wrong; its pre-bridge literal was likewise offsetless
	   (`0 0 .8rem .1rem rgba(0,0,0,.3)`), so "far" always meant "spreads outward",
	   never "farther away". Keeps the .1rem spread that made it read as a ring.
	   Named for what it does (surrounds the box evenly) — NOT "halo", which means a
	   ring of LIGHT and is already what --elevation-glow above is for; this one is a
	   ring of shadow. Composed from the themeable --shadow-dark-source caster (5
	   themes retint it); the other themes fall through to the --_shadow-ambient
	   floor. NOT in the StyleProperties catalog — same as --elevation-flat /
	   --elevation-button; a theme wanting a different one overrides this role. */
	--elevation-surround: 0 0 .4rem var(--_shadow-contact), 0 0 1.2rem .1rem var(--shadow-dark-source);
	--surface-clip: none;
	--surface-page-backdrop: none;
	--surface-page-backdrop-size: cover;
	--surface-page-backdrop-repeat: no-repeat;
	--surface-card-texture: none;
	--surface-card-texture-size: auto;
	--surface-card-texture-repeat: repeat;
	/* data-viz — chart gradient (themeable; floor reuses the legacy purple).
	   The legacy --Chart_Gradient alias that used to front this was retired; chart
	   consumers now read this role token directly. */
	--chart-gradient: linear-gradient(135deg, #7C3AED 0%, #9D33F2 35%, #D946EF 70%, #E61542 100%);
	/* data-viz CATEGORICAL — the ordered set a segmented/categorical chart draws
	   from. Minted because TaskStatusBreakdown was pulling its three segments from
	   three UNRELATED role families (brand / badge / a legacy literal), so no theme
	   could restyle the chart coherently and one segment was theme-blind. Chart
	   consumers now read this one namespace.

	   `active` and `complete` deliberately alias the brand/status roles rather than
	   holding their own hex: that preserves today's rendering exactly AND keeps a
	   theme's accent change flowing through to the chart. `inactive` needs its own
	   value — it is the one that must NOT track a text or brand role.

	   Contrast-verified against BOTH card surfaces (WCAG 1.4.11 wants >= 3:1 for
	   non-text graphical objects): inactive is 4.83:1 on #ffffff and 6.76:1 on the
	   dark #1B1B20. The three are separated by HUE (magenta / green / slate), not by
	   luminance — adjacent-slice luminance ratios are 1.1-2.1:1, so a chart that
	   relies on lightness alone to separate series needs a legend or labels. */
	--chart-active: var(--brand-accent);
	--chart-complete: var(--status-success);
	--chart-inactive: #6B7280;
	--chart-series-1: var(--brand-accent);
	--chart-series-2: #EB6834;
	--chart-series-3: #1BAF7A;
	--chart-series-4: #EDA100;
	--chart-series-5: #4A3AA7;
	--chart-series-6: #E87BA4;
	/* density / spacing roles — one role per job, ordered tight → roomy, so no
	   component ever needs a --_space-* primitive. The *-inline pair exists
	   because axis-asymmetric control padding cannot be expressed as one scalar
	   (and a two-value shorthand would be mangled by the customize panel's
	   single-number length probe).
	   Canonical control composition:
	     padding: var(--pad-input) var(--pad-input-inline);
	     padding: var(--pad-button) var(--pad-button-inline);
	   --pad-cell / --gap-tight / --pad-row / --pad-shell exist because real dense
	   surfaces sit at 4–5px and real shells at 32px: a blanket 8px floor would
	   have EXPANDED the permission matrix and task rows. */
	--pad-cell: var(--_space-1);
	--pad-dense: var(--_space-2);
	--pad-row: var(--_space-3);
	--pad-input: var(--_space-3);
	--pad-input-inline: var(--_space-4);
	--pad-button: var(--_space-3);
	--pad-button-inline: var(--_space-5);
	--pad-card: var(--_space-4);
	--pad-sheet: var(--_space-5);
	--pad-page: var(--_space-5);
	--pad-shell: var(--_space-6);
	--gap-hairline: var(--_space-05);
	--gap-tight: var(--_space-1);
	--gap-dense: var(--_space-2);
	--gap-inline: var(--_space-2);
	--gap-stack: var(--_space-3);
	--gap-tile: var(--_space-4);
	--gap-section: var(--_space-5);
	--touch-target-primary: 3.2rem;
	--touch-target-minimum: 2.4rem;
	/* control heights */
	--control-height-smaller: 2.4rem;
	--control-height-small: 2.8rem;
	--control-height-medium: 3.2rem;
	--control-height-large: 3.6rem;
	--control-height-larger: 4rem;
	/* shell rhythm */
	--shell-tab-row-height: calc(var(--control-height-medium) + var(--pad-page));
	/* motion */
	--motion-fast: 200ms;
	--motion-base: 350ms;
	--motion-slow: 500ms;
	/* The ~4px entrance translate, tokenized so it is tunable in one place rather
	   than repeated at every entrance site. Pairs with --motion-base + --ease-enter. */
	--motion-enter-distance: .4rem;
	--motion-enter-name: motionEnter;
	/* sound */
	--sound-message-received: chime;
	--ease-standard: var(--_ease-standard);
	--ease-emphasized: var(--_ease-emphasized);
	/* Entrances only — never ease-in. */
	--ease-enter: var(--_ease-decelerate);
	--transition-base: var(--motion-base) var(--ease-standard);
	/* scrollbar — themeable role tokens; consumed by the scrollbar block below. */
	--scrollbar-thumb: var(--brand-accent);
	--scrollbar-thumb-hover: var(--brand-primary);
	--scrollbar-track: transparent;

	/* intentional literal: one row of buttons + gutter — consumed by DisplayOverlay's
	   `peekHeight: '--nav-rail-peek-height'` and by viewManager.css's phone-band
	   `:root[data-viewport="phone"] .viewManager__view` rule. */
	--nav-rail-peek-height: 7.5rem;
	--chart-ideal: var(--chart-series-3);
	--chart-line-shape: smooth;
	--chart-area-opacity: .4;
	--chart-material: polished;
	--chart-line-weight: 1.4;
	--chart-glow-strength: 0;
	--chart-wash-opacity: .16;
	--chart-grid-opacity: .12;
	--chart-marker-shape: ring;
	--chart-label-font: var(--font-body);
	--chart-frame-elevation: var(--elevation-raised);
	--chart-frame-surface: var(--surface-card);
	--chart-frame-texture: linear-gradient(145deg, color-mix(in srgb, var(--chart-series-1) 5%, transparent), transparent 55%);
	--chart-frame-border: var(--border-default);
	--chart-plot-surface: transparent;
	--chart-plot-texture: none;
	--chart-plot-elevation: var(--elevation-flat);
	--chart-mark-elevation: var(--elevation-button);
	--chart-mark-radius: var(--radius-pill);
	--chart-bar-texture: linear-gradient(90deg, transparent, rgba(255, 255, 255, .3) 45%, transparent);
	--chart-track-surface: color-mix(in srgb, var(--chart-series-1) 7%, transparent);
	--chart-track-elevation: var(--elevation-flat);
	--chart-ring-detail: 0;

}

/* Phone-band density step-down. 24px of page gutter per side costs ~12% of a
   320px viewport (the fluid root makes 1rem = 8px there, so --pad-page is 19px
   a side), which is a lot of screen to spend on nothing. One step down the
   ladder, once, in the floor — every view that reads --pad-page inherits it.
   Gated on the `data-viewport` attribute and NEVER on a width media query, per
   ratified decision 0004 (knowledge-base/decisions/0004-viewport-band-axis.md).

   This is a DEFAULT, not a floor — per-entity customization erases it. `pad-page`
   is an editable knob (`customizableStyles.js`), and `setStyle` writes role tokens
   as an INLINE style on `<html>`, which outranks every selector including this one.
   So an entity that customizes page padding keeps its chosen value at phone width
   too. That is the intended precedence (an explicit user choice beats a built-in
   default), but it does mean you cannot rely on this rule to bound the gutter on a
   customized entity — don't chase it as a cascade bug. */
:root[data-viewport="phone"] {
	--pad-page: var(--_space-4);
}

/*  */
[data-slot] {
	display: contents;
}

/* Scrollbar styling — 0.6rem (6px) width across all browsers, matching Firefox's
   native `scrollbar-width: auto` on Linux (measured against FF 148, 2026-Jul-15).
   Chromium + WebKit sized via `::-webkit-scrollbar`; Firefox uses its native width
   and only needs `scrollbar-color` for theming (scoped Firefox-only below).
   The standard `scrollbar-width` / `scrollbar-color` properties are NOT set on
   Chromium because (a) Chrome 121+ ignores `::-webkit-scrollbar-*` on any element
   where a standard scrollbar prop is non-initial, and (b) `scrollbar-color`
   inherits, so setting it on html would silently disable the webkit pseudos
   app-wide. Themes / dark mode adapt via the :root role tokens. */

*::-webkit-scrollbar {
	width: 0.6rem;
	height: 0.6rem;
}

*::-webkit-scrollbar-track {
	background: var(--scrollbar-track);
}

*::-webkit-scrollbar-thumb {
	background: color-mix(in srgb, var(--scrollbar-thumb) 42.5%, transparent);
	border-radius: 0.6rem;
}

*::-webkit-scrollbar-thumb:hover {
	background: var(--scrollbar-thumb-hover);
}

*::-webkit-scrollbar-corner {
	background: transparent;
}

/* Firefox theming — scoped via `@supports selector(::-moz-list-bullet)`, a
   Firefox-only pseudo, so Chromium never parses these declarations. */
@supports selector(::-moz-list-bullet) {
	html {
		scrollbar-width: auto;
		scrollbar-color: color-mix(in srgb, var(--scrollbar-thumb) 42.5%, transparent) var(--scrollbar-track);
	}
}

/* Cross-theme dark role-token overrides. */
:root[data-mode="dark"] {
	--surface-page: #0F0F12;
	--surface-card: #1B1B20;
	--surface-raised: #22222A;
	--surface-sunken: #141418;
	--surface-hover: #26262C;
	--surface-selected: #2E2E36;
	--surface-overlay: rgba(0, 0, 0, .5);
	--text-primary: #ffffff;
	--text-secondary: #9999A0;
	--text-on-brand: #ffffff;
	--text-on-status: #0F0F12;
	--text-disabled: #7A7A7A;
	--text-link: #BE79F6;
	--text-brand: #BE79F6;
	--text-accent: #F26B88;
	--text-success: #85BB65;
	--text-warning: #F2A65A;
	--text-danger: #F26B88;
	--text-partial: #F19BB3;
	--border-default: rgba(255, 255, 255, .08);
	--border-strong: rgba(255, 255, 255, .16);
	--border-highlight: rgba(255, 255, 255, .06);
	/* status */
	--status-success: #85BB65;
	--status-warning: #F2A65A;
	--status-danger: #EE4368;
	--status-partial: #F19BB3;
	--status-info: #297aef;
	--focus-ring-color: #6E9BFF;
	--shadow-dark-source: rgba(0, 0, 0, .5);
	--elevation-button: inset 0 .1rem 0 var(--border-highlight), 0 .1rem .2rem rgba(0, 0, 0, .45);
	--elevation-raised: inset 0 .1rem 0 var(--border-highlight), 0 .2rem .4rem rgba(0, 0, 0, .45), 0 .8rem 2.4rem -.4rem var(--shadow-dark-source);
	--elevation-inset: inset 0 .1rem .2rem rgba(0, 0, 0, .45);
	--elevation-overlay: inset 0 .1rem 0 rgba(255, 255, 255, .08), 0 .4rem .8rem rgba(0, 0, 0, .5), 0 2.4rem 4.8rem -1.2rem rgba(0, 0, 0, .7);
	--elevation-glow: 0 0 2rem -.2rem var(--brand-accent);
	--elevation-surround: 0 0 .4rem rgba(0, 0, 0, .45), 0 0 1.6rem .1rem var(--shadow-dark-source);
	--chart-inactive: #9CA3AF;
	--chart-series-2: #D95926;
	--chart-series-3: #199E70;
	--chart-series-4: #C98500;
	--chart-series-5: #9085E9;
	--chart-series-6: #D55181;
}

#root {
	width: 100dvw;
	height: 100dvh;
	transition: all var(--transition-base), height 0s, width 0s;
}

/* ── The landing shell (`data-shell="landing"`) ──
   Written only for the landing view and removed for every other one, so the app
   chrome is the untouched no-attribute default and this block is the whole delta:
   hide the chrome the landing replaces, and hand the scroll back to the document.
   Handing back the scroll retracts the app-wide `overflow: hidden` that was the
   only thing stopping a page from scrolling behind an open modal, so the landing
   re-locks it for itself while one is open.
   See knowledge-base/domain/landing-page.md. */
:root[data-shell='landing'] {
	--nav-rail-peek-height: 0rem;
}

:root[data-shell='landing'] .application__mainHeader,
:root[data-shell='landing'] .application__navigationRail,
:root[data-shell='landing'] .application__sideDock {
	display: none;
}

:root[data-shell='landing'] body,
:root[data-shell='landing'] #root {
	width: auto;
	height: auto;
	overflow: visible;
}

:root[data-shell='landing']:has(dialog[open]) body {
	overflow: hidden;
}

:root[data-shell='landing'] .application__view {
	display: block;
	width: auto;
	height: auto;
	min-height: 100dvh;
}

:root[data-shell='landing'] .viewManager__view,
:root[data-shell='landing'] .viewManager__mainPanel {
	width: auto;
	height: auto;
	overflow: visible;
	padding-bottom: 0;
}

@media print {
	* {
		break-after: auto;
		break-before: auto;
		break-inside: avoid;
		/* break-inside: page; */
		/* break-before: page;
         break-inside: page; */
		/* break-before: always;
        -webkit-region-break-inside: avoid; */
	}
}

/* Custom fonts

   Two registration paths exist and both must be kept in step:
   (a) the static @font-face blocks below — faces every document needs
       regardless of theme (the pre-theme floor, plus Inter and IBM Plex Mono);
   (b) the per-theme FontFace manifest at utilities/themes/themes.js
       (`fonts.assets[]`), registered by `ensureThemeFontsLoaded` during
       `setStyle` — theme-identity faces, fetched only for the applied theme.
   Adding a face to only one of the two is the classic "theme declares a family
   it never loads" bug. See knowledge-base/style/typography.md.

   Every block declares `font-display: swap`: the CSS default (`auto`) gives a
   block period of up to 3s, i.e. invisible text on first paint. */

/* Decorative faces — NO live CSS consumer today (the commented-out alternate
   body-font lines that used to reference them went out with the legacy alias
   retirement; the only other mentions are email inline styles where
   @font-face never applies). @font-face is lazy, so they cost no runtime bytes;
   retained because a per-entity `Body Font` customization is free-text CSS and
   could in principle name one. */
@font-face {
	font-family: 'Coda-Regular';
	src: url('./assets/fonts/Coda-Regular.ttf') format('truetype');
	font-display: swap;
}

@font-face {
	font-family: 'Coda-Heavy';
	src: url('./assets/fonts/Coda-Heavy.ttf') format('truetype');
	font-display: swap;
}

@font-face {
	font-family: 'Atomic-Age';
	src: url('./assets/fonts/atomicage-regular-webfont.woff') format('woff');
	font-display: swap;
}

@font-face {
	font-family: 'Acumin-Bold';
	src: url('./assets/fonts/Acumin-BdPro.otf') format('opentype');
	font-display: swap;
}

@font-face {
	font-family: 'Acumin';
	src: url('./assets/fonts/Acumin-RPro.otf') format('opentype');
	font-display: swap;
}

@font-face {
	font-family: 'Apex-Normal';
	src: url('./assets/fonts/ACPEX-NORMAL.ttf') format('truetype');
	font-display: swap;
}

@font-face {
	font-family: 'Oxta';
	src: url('./assets/fonts/Oxta.ttf') format('truetype');
	font-display: swap;
}

/* Inter (OFL) — variable weight axis 100-900, split latin / latin-ext by
   unicode-range so a boot that never renders an extended glyph downloads
   48 KB instead of the whole family. Sourced from @fontsource-variable/inter
   5.3.0 (upstream Inter v4.1). Verified by binary FeatureList probe: these
   subsets retain `tnum` (tabular figures); Google's subsetting drops Inter's
   `zero`/`cv01`, neither of which has a consumer here.
   `format('woff2')`, not fontsource's legacy `format('woff2-variations')` —
   the latter is only understood by browsers we no longer target. */
@font-face {
	font-family: 'Inter';
	src: url('./assets/fonts/inter/Inter-latin.woff2') format('woff2');
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Inter';
	src: url('./assets/fonts/inter/Inter-latin-ext.woff2') format('woff2');
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Inter';
	src: url('./assets/fonts/inter/Inter-latin-italic.woff2') format('woff2');
	font-weight: 100 900;
	font-style: italic;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Inter';
	src: url('./assets/fonts/inter/Inter-latin-ext-italic.woff2') format('woff2');
	font-weight: 100 900;
	font-style: italic;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* Poppins (OFL) — the pre-theme --font-body/--font-display floor: the face the
   brief pre-setStyle paint uses. All registered themes override both tokens, so this is
   the only surface it still reaches. Sourced from @fontsource/poppins 5.3.0; the
   1.29 MB of .ttf it replaces carried Devanagari shaping tables the Latin
   subsets correctly drop. Weights 400/500/600/700 only — no --font-weight-*
   token or CSS rule selects 800/900. */
@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-400.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-500.woff2') format('woff2');
	font-weight: 500;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-600.woff2') format('woff2');
	font-weight: 600;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-700.woff2') format('woff2');
	font-weight: 700;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-400-italic.woff2') format('woff2');
	font-weight: 400;
	font-style: italic;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-700-italic.woff2') format('woff2');
	font-weight: 700;
	font-style: italic;
	font-display: swap;
	unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-ext-400.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-ext-500.woff2') format('woff2');
	font-weight: 500;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-ext-600.woff2') format('woff2');
	font-weight: 600;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-ext-700.woff2') format('woff2');
	font-weight: 700;
	font-style: normal;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-ext-400-italic.woff2') format('woff2');
	font-weight: 400;
	font-style: italic;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

@font-face {
	font-family: 'Poppins';
	src: url('./assets/fonts/Poppins-latin-ext-700-italic.woff2') format('woff2');
	font-weight: 700;
	font-style: italic;
	font-display: swap;
	unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* IBM Plex Mono (OFL) — bundled locally for the power theme's full-mono type.
   Latin subset; weights 400/500/600/700. */
@font-face {
	font-family: 'IBM Plex Mono';
	src: url('./assets/fonts/IBMPlexMono-Regular.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: 'IBM Plex Mono';
	src: url('./assets/fonts/IBMPlexMono-Medium.woff2') format('woff2');
	font-weight: 500;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: 'IBM Plex Mono';
	src: url('./assets/fonts/IBMPlexMono-SemiBold.woff2') format('woff2');
	font-weight: 600;
	font-style: normal;
	font-display: swap;
}

@font-face {
	font-family: 'IBM Plex Mono';
	src: url('./assets/fonts/IBMPlexMono-Bold.woff2') format('woff2');
	font-weight: 700;
	font-style: normal;
	font-display: swap;
}

/* Standard `transform` only. The prior form declared `-webkit-transform` alone
   (unprefixed since 2013/2016, so every step was ignored by spec-compliant
   parsing) and wrote `translateX(-10)` / `translateX(10)` — a unitless non-zero
   length is invalid CSS, so those four steps were silently dropped and the cue
   only jittered at 75%/92%. Restoring them makes the shake read at its authored
   amplitude. The two prefixed duplicate blocks that followed are deleted. */
@keyframes shake {

	8%,
	41% {
		transform: translateX(-1rem);
	}

	25%,
	58% {
		transform: translateX(1rem);
	}

	75% {
		transform: translateX(-.5rem);
	}

	92% {
		transform: translateX(.5rem);
	}

	0%,
	100% {
		transform: translateX(0);
	}
}

@keyframes wander {

	0%,
	10% {
		transform: translate(.1rem, .1rem);
	}

	25% {
		transform: translate(.2rem, .2rem);
	}

	50% {
		transform: translate(.3rem, .1rem);
	}

	75% {
		transform: translate(.2rem, .0rem);
	}

	100% {
		transform: translate(.1rem, .1rem);
	}
}

@keyframes emptyStateDrawIn {
	from {
		opacity: 0;
		stroke-dasharray: 80; /* intentional literal: the dash length — every sprite stroke subpath measures under it (max 74), so each stroke finishes drawing before the release */
		stroke-dashoffset: 80;
	}

	to {
		opacity: 0.4;
		stroke-dasharray: 80;
		stroke-dashoffset: 0;
	}
}

@keyframes onlineIndicatorBreathe {

	0%,
	100% {
		opacity: 1;
	}

	50% {
		opacity: .55;
	}
}

@keyframes emojiBlink {
	0%, 36%, 42%, 76%, 82%, 100% { transform: scaleY(1); }
	39%, 79% { transform: scaleY(.12); }
}
@keyframes emojiLaugh {
	0%, 15%, 80%, 100% { transform: scale(1); }
	35%, 60% { transform: scale(1.08, .72); }
	47%, 70% { transform: scale(.98, 1.05); }
}
@keyframes emojiSmile {
	0%, 100% { transform: scale(1); }
	40%, 65% { transform: scale(1.12, 1.15); }
}
@keyframes emojiWink {
	0%, 25%, 70%, 100% { transform: scaleY(1); }
	40%, 55% { transform: scaleY(.3); }
}
@keyframes emojiLove {
	0%, 20%, 70%, 100% { transform: scale(1); }
	32%, 52% { transform: scale(1.12, 1.08); }
	42%, 62% { transform: scale(.98); }
}
@keyframes emojiTear {
	0%, 100% { transform: translateY(0) scale(.9); opacity: 1; }
	55% { transform: translateY(25%) scale(1); opacity: 1; }
	75% { transform: translateY(50%) scale(.75); opacity: 0; }
	76% { transform: translateY(-15%) scale(.65); opacity: 0; }
}
@keyframes emojiBrow {
	0%, 100% { transform: translateY(0); }
	35%, 65% { transform: translateY(-22%) rotate(-4deg); }
}
@keyframes emojiConsider {
	0%, 100% { transform: rotate(0); }
	40%, 60% { transform: rotate(-9deg) translateY(-6%); }
}
@keyframes emojiBreathe {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(.8, 1.2); }
}
@keyframes emojiHug {
	0%, 100% { transform: rotate(0); }
	40%, 60% { transform: rotate(-12deg) scale(1.08); }
}
@keyframes emojiGlint {
	0%, 100% { transform: scale(.85); opacity: .75; }
	45% { transform: scale(1.12); opacity: 1; }
	75% { transform: scale(.65); opacity: .4; }
}
@keyframes emojiThumb {
	0%, 100% { transform: scaleY(1); }
	40%, 65% { transform: scaleY(1.08) rotate(-5deg); }
}
@keyframes emojiFingers {
	0%, 100% { transform: skewX(0); }
	25%, 65% { transform: skewX(-9deg) scaleX(.96); }
	45%, 80% { transform: skewX(6deg) scaleX(1.02); }
}
@keyframes emojiSignal {
	0%, 100% { opacity: 1; }
	45%, 65% { opacity: .35; }
}
@keyframes emojiClapBack {
	0%, 70%, 100% { transform: rotate(0); }
	25%, 50% { transform: translateX(-10%) rotate(-12deg); }
	37%, 62% { transform: translateX(4%) rotate(4deg); }
}
@keyframes emojiClapFront {
	0%, 70%, 100% { transform: rotate(0); }
	25%, 50% { transform: translateX(12%) rotate(12deg); }
	37%, 62% { transform: translateX(-4%) rotate(-4deg); }
}
@keyframes emojiPray {
	0%, 100% { transform: rotate(0); }
	45%, 65% { transform: rotate(4deg); }
}
@keyframes emojiFlame {
	0%, 100% { transform: scale(1) skewX(0); }
	30% { transform: scale(.94, 1.06) skewX(3deg); }
	65% { transform: scale(1.03, .92) skewX(-3deg); }
}
@keyframes emojiUnderline {
	0%, 100% { transform: scaleX(1); }
	45% { transform: scaleX(.85); }
}
@keyframes emojiConfetti {
	0%, 100% { transform: translate(0, 0) scale(1); opacity: 1; }
	45% { transform: translate(8%, -12%) scale(1.12); opacity: 1; }
	70% { transform: translate(12%, 10%) scale(1); opacity: 0; }
	71% { transform: translate(-5%, 10%) scale(.75); opacity: 0; }
}
@keyframes emojiPupils {
	0%, 15%, 100% { transform: translateX(0); }
	30%, 50% { transform: translateX(-12%); }
	65%, 85% { transform: translateX(6%); }
}
@keyframes emojiJaw {
	0%, 100% { transform: translateY(0); }
	40%, 60% { transform: translateY(12%); }
}
@keyframes emojiEar {
	0%, 65%, 100% { transform: rotate(0); }
	30%, 50% { transform: rotate(10deg); }
	40%, 60% { transform: rotate(-3deg); }
}
@keyframes emojiTongue {
	0%, 100% { transform: scaleY(1); }
	45%, 65% { transform: scaleY(1.2); }
}
@keyframes emojiCheck {
	0%, 100% { transform: scale(1); }
	45% { transform: scale(.85); }
	65% { transform: scale(1.06); }
}
@keyframes emojiCross {
	0%, 100% { transform: scale(1); }
	35%, 65% { transform: scale(.88); }
}
@keyframes emojiLight {
	0%, 100% { opacity: 1; }
	45% { opacity: .65; }
}
@keyframes emojiBloom {
	0%, 100% { transform: scale(1); }
	45%, 65% { transform: scale(.88, .92); }
}
@keyframes emojiCheese {
	0%, 100% { transform: scaleY(1); }
	50% { transform: scaleY(1.35); }
}
@keyframes emojiSteam {
	0%, 100% { transform: translateY(0); opacity: .8; }
	60% { transform: translateY(-25%) skewX(8deg); opacity: .25; }
	75% { transform: translateY(-30%); opacity: 0; }
	76% { transform: translateY(10%); opacity: 0; }
}
@keyframes emojiFoam {
	0%, 100% { transform: scaleY(1); }
	50% { transform: scaleY(1.12); }
}

@keyframes permissionCellSettle {
	from {
		background-color: var(--surface-selected);
	}

	to {
		background-color: transparent;
	}
}

@keyframes punchCardGrow {
	from {
		transform: scaleY(0);
	}

	to {
		transform: scaleY(1);
	}
}

/**
* depth.css — app-wide [data-depth="3d"] gate for the ambient WebGL layer + card depth
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* Everything here is scoped under html[data-depth="3d"], written by
* Application.setStyle from the per-device depth preference (isDepth3d()).
* 2D sessions never match a single rule below — strictly additive.
*
* @version 2026-Jun-19 Initial Version (incorporation of the styleBoard 3D experiment)
*/

/* The Ambient3D canvas self-mounts to <body> with an inline z-index:0. In the
   app we push it BEHIND the content (negative z) and make the app's opaque
   background transparent so the room shows through. Ambient3D sets
   scene.background = --surface-page, so the page colour is preserved as the
   backdrop — only now it's a lit 3D room rather than a flat fill. */
html[data-depth="3d"] .ambient3d__canvas {
	z-index: -1 !important;
}

/* Only reveal the room when it actually mounts (WebGL present + 3D picked).
   AmbientBackground adds the canvas; if WebGL is absent the canvas never
   appears, so keep the app background opaque to avoid a bare white page. */
html[data-depth="3d"] body:has(.ambient3d__canvas) .application__view {
	background-color: transparent;
	background-image: none;
}

/* Establish a shared 3D context so card lifts read with perspective. */
html[data-depth="3d"] .application__view {
	perspective: 160rem;
}

/* ── Card depth ────────────────────────────────────────────────────────────
   Every card primitive (.pillBox) lifts off the page with a soft shadow when
   3D is on, and floats higher on hover. Needs no GPU — this is the visible
   2D↔3D difference on every screen. The cursor-tracking tilt + pinned-light
   directional shadow from the styleBoard sandbox are a follow-up (they need an
   app-root pointer driver + per-card hit-testing). */
html[data-depth="3d"] .pillBox {
	box-shadow: var(--elevation-raised);
	transition: transform var(--motion-base) var(--ease-standard), box-shadow var(--motion-base) var(--ease-enter);
}

html[data-depth="3d"] .pillBox:hover {
	transform: translateY(-.4rem);
	box-shadow: var(--elevation-overlay);
}

/* Opt-in extra-depth hook for non-pillBox containers. */
html[data-depth="3d"] .depthCard {
	box-shadow: var(--elevation-raised);
	transition: transform var(--motion-base) var(--ease-standard), box-shadow var(--motion-base) var(--ease-enter);
}

/**
 * baseElements.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2019-09-24 Initial Version
 */

/* #region toggle — the controlled switch (getToggle) */

.toggle {
	display: inline-flex;
	align-items: center;
	position: relative;
	/* intentional literal: fixed control dimensions, not spacing rhythm */
	width: 4.4rem;
	height: 2.4rem;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.toggle[disabled] {
	cursor: default;
}

.toggle__track {
	position: absolute;
	left: 0;
	right: 0;
	top: 50%;
	/* intentional literal: fixed control dimensions, not spacing rhythm */
	height: 2.4rem;
	translate: 0 -50%;
	border-radius: var(--radius-pill);
	background: var(--surface-sunken);
	box-shadow: var(--elevation-inset);
}

.toggle__knob {
	position: absolute;
	/* intentional literal: fixed control dimensions, not spacing rhythm */
	width: 1.8rem;
	height: 1.8rem;
	left: .3rem;
	border-radius: var(--radius-pill);
	background: var(--surface-raised);
	box-shadow: var(--elevation-button);
}

.toggle[data-toggle-state="on"] .toggle__track {
	background: var(--brand-accent);
}

.toggle[data-toggle-state="on"] .toggle__knob {
	transform: translateX(2rem);
}

.toggle[data-toggle-state="pending"] .toggle__track {
	background: var(--status-warning);
}

.toggle[data-toggle-state="pending"] .toggle__knob {
	transform: translateX(1rem);
}

.toggle[disabled] .toggle__track {
	background: var(--text-disabled);
}

.toggle-large {
	/* intentional literal: fixed control dimensions, not spacing rhythm */
	width: 5.6rem;
	height: 3rem;
}

.toggle-large .toggle__track {
	/* intentional literal: fixed control dimensions, not spacing rhythm */
	height: 3rem;
}

.toggle-large .toggle__knob {
	/* intentional literal: fixed control dimensions, not spacing rhythm */
	width: 2.4rem;
	height: 2.4rem;
}

.toggle-large[data-toggle-state="on"] .toggle__knob {
	transform: translateX(2.6rem);
}

.toggle-large[data-toggle-state="pending"] .toggle__knob {
	transform: translateX(1.3rem);
}

:root[data-viewport="phone"] .toggle {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

/* #endregion toggle */

.elementContainer {
	width: auto;
	height: auto;
}

/* Visually removed but still announced by assistive tech (the standard
   clip-pattern). For content whose VISUAL design already communicates what AT
   needs told explicitly: hidden legends, the app live region, etc. Never use
   display:none / visibility:hidden for that — those hide from AT too. */
.visuallyHidden {
	position: absolute;
	width: .1rem;
	height: .1rem;
	padding: 0;
	margin: -.1rem;
	/* intentional literal: fixed a11y clip-pattern hairline, not spacing rhythm */
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* getFieldset/getLegend (#731): strip the UA fieldset chrome so semantic
   grouping is layout-free — a fieldset drops into any existing grid/flex
   without visual change. min-inline-size unsets the UA min-content quirk
   that otherwise blocks fieldsets from shrinking inside grids. */
.fieldset {
	border: none;
	padding: 0;
	margin: 0;
	min-inline-size: 0;
}

.legend {
	padding: 0;
}

.summary {
	list-style: none;
	cursor: pointer;
}

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

.summary::marker {
	content: none;
}

.elementContainer-rounded {
	border-radius: var(--radius-card);
}

.elementContainer-imgBackground {
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
}

.elementContainer-leftBorder {
	border-left: var(--border-width) solid var(--border-default);
}

.elementContainer-topBorder {
	border-top: var(--border-width) solid var(--border-default);
}

.elementContainer-bottomBorder {
	border-bottom: var(--border-width) solid var(--border-default);
}

.elementContainer-rightBorder {
	border-right: var(--border-width) solid var(--border-default);
}

.elementContainer-allBorder {
	border: var(--border-width) solid var(--border-default);
}

.tileContainer {
	padding: var(--pad-card);
	border-radius: var(--radius-card);
	background-color: var(--surface-card);
	border-color: var(--border-default);
}

.tileContainer-hover {
	cursor: pointer;
}

.tileContainer-hover:hover {
	box-shadow: var(--elevation-raised);
	transform: scale(1.01);
}

.button {
	width: fit-content;
	height: fit-content;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	border: none;
	border-radius: var(--radius-button);
	cursor: pointer;
	font-family: var(--font-body);
	color: var(--text-primary);
	box-shadow: var(--elevation-button);
	padding: var(--pad-cell) var(--pad-button);
	gap: var(--gap-tight);
}

.button:disabled {
	color: var(--text-disabled);
	background-color: transparent;
	border-color: var(--border-default);
	box-shadow: var(--elevation-flat);
	pointer-events: none;
}

.button:active {
	box-shadow: var(--elevation-inset);
	text-shadow: none;
}

.button-lightBackground,
.button-darkBackground {
	border: var(--border-width) solid var(--border-default);
}

.button-darkBackground,
.button-lightBackground:hover,
.button-lightBackground:focus-visible:not(.button-loading) {
	background-color: var(--brand-accent);
	color: var(--text-on-brand);
	border-color: var(--brand-accent);
	--icon-accent: currentColor;
}

.button-darkBackground:hover,
.button-darkBackground:focus-visible:not(.button-loading) {
	background-color: transparent;
	color: var(--text-primary);
	border-color: var(--border-default);
}

.button-danger {
	border: var(--border-width) solid var(--status-danger);
	background-color: var(--status-danger);
	color: var(--text-on-status);
}

.button-danger:hover,
.button-danger:focus-visible:not(.button-loading) {
	background-color: transparent;
	color: var(--text-danger);
}

/* .button-darkBackground:after {
	content: '';
	position: absolute;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	background: rgba(0, 0, 0, 0.1);
	opacity: 0;
	border-radius: var(--radius-button);
	transition: all 0.3s;
	-webkit-transition: all 0.3s;
	-moz-transition: all 0.3s;
} */

/* .button-darkBackground:hover:after {
	opacity: 1;
} */

/* .button-darkBackground:hover { */

/* background-color: transparent;
    color: var(--text-secondary);
    box-shadow: var(--elevation-raised);
    -webkit-box-shadow: var(--elevation-raised);
    -moz-box-shadow: var(--elevation-raised); */

/* } */

.button-img {
	height: 2rem;
	width: 2rem;
	background-size: cover;
	background-repeat: no-repeat;
	background-position: center;
	padding: var(--pad-card);
}

.button-imgAndText {
	display: flex;
	gap: var(--gap-stack);
	justify-content: start;
	padding: var(--pad-dense) var(--pad-card);
}

.button-textOnly {
	font-size: var(--font-size-lead);
	padding-top: .3rem;
	/* intentional literal: optical baseline nudge, not spacing rhythm */
}

.button-textOnly:enabled:hover {
	box-shadow: none;
	text-shadow: var(--text-shadow-hover);
}

.button-textOnly:disabled {
	border: none;
}

/* Sizes — ordered after `.button-textOnly` so size wins the equal-specificity font-size tie when both classes apply. */

.button-small {
	font-size: var(--font-size-label);
}

.button-medium {
	font-size: var(--font-size-body);
}

.button-large {
	font-size: var(--font-size-subheading);
}

:root[data-viewport="phone"] .button-lightBackground,
:root[data-viewport="phone"] .button-darkBackground {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

.roundedCornerInput,
.dropdown {
	border: var(--border-width) solid var(--border-default);
	color: var(--text-primary);
	accent-color: var(--brand-primary);
	border-radius: var(--radius-input);
	font: inherit;
	font-family: var(--font-body);
	text-align: left;
	padding: var(--pad-input) var(--pad-input-inline);
	background: var(--surface-sunken);
	box-shadow: var(--elevation-inset);
}

.roundedCornerInput::placeholder,
.dropdown::placeholder {
	color: var(--text-secondary);
}

.roundedCornerInput:disabled,
.dropdown:disabled {
	color: var(--text-disabled);
	border-color: var(--border-default);
}

/* Native <select> (getDropdownMenu) carries no class — theme the bare element
   so it re-skins in every theme/mode instead of staying browser-native white.
   appearance:none drops the native chrome; a token-neutral chevron replaces it. */
select {
	appearance: none;
	-webkit-appearance: none;
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-input);
	color: var(--text-primary);
	font: inherit;
	font-family: var(--font-body);
	padding: var(--pad-input) var(--pad-input-inline);
	padding-right: 3.2rem;
	/* intentional literal: chevron clearance paired with `background-position: right 1.1rem`, not spacing rhythm */
	background-color: var(--surface-sunken);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%23888888' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1.1rem center;
	background-size: 1.1rem;
	box-shadow: var(--elevation-inset);
	cursor: pointer;
}

select:disabled {
	color: var(--text-disabled);
	cursor: not-allowed;
}

/* Open option list is OS-native; bg/color honored where the platform allows. */
.option {
	color: var(--text-primary);
	background: var(--surface-card);
}

.heading,
.stringNode,
.span,
.label {
	color: var(--text-primary);
}

.heading {
	font-family: var(--font-display);
	letter-spacing: var(--letter-spacing-display);
	text-align: center;
	width: auto;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.headingStyledInput {
	border: none;
	text-align: left;
	cursor: pointer;
}

.textEllipsis {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

/* .headingStyledInput:focus::placeholder {
    color: transparent;
} */

.editableHeading,
.editableBody {
	text-align: left;
	cursor: pointer;
	text-overflow: ellipsis;
	max-width: 100%;
}

.editableHeading:empty:before,
.editableBody:empty:before {
	content: attr(data-placeholder);
}

.editableHeading:focus:before,
.editableBody:focus:before {
	background-color: var(--state-selection-highlight);
}

.stringNode,
.span {
	font-family: var(--font-body);
	width: fit-content;
	height: fit-content;
	white-space: pre-wrap;
	text-align: left;
}

.badge {
	display: inline-flex;
	align-items: center;
	line-height: 1.5;
	padding: 0 var(--pad-dense);
	border: var(--border-shorthand);
	border-radius: var(--radius-pill);
	white-space: nowrap;
}

/* Backgrounds/text come from the --Badge_* constants in app.css, which derive
   from the themeable palette — so badges re-theme with the active theme /
   per-entity customization. Border matches the fill so each pill reads as a solid
   chip; the four status tones use the on-fill status ink, the highlight tone
   uses the brand on-fill ink (its fill is --brand-accent, not a status fill),
   and the outline-only neutral badge (transparent fill) keeps the standard
   font color. */
.badge-neutral {
	background: var(--Badge_Neutral_Background);
	color: var(--Badge_Neutral_Font_Color);
}

.badge-highlight {
	background: var(--Badge_Highlight_Background);
	border-color: var(--Badge_Highlight_Background);
	color: var(--Badge_Highlight_Font_Color);
}

.badge-success {
	background: var(--Badge_Success_Background);
	border-color: var(--Badge_Success_Background);
	color: var(--Badge_On_Fill_Font_Color);
}

.badge-warning {
	background: var(--Badge_Warning_Background);
	border-color: var(--Badge_Warning_Background);
	color: var(--Badge_On_Fill_Font_Color);
}

.badge-partial {
	background: var(--Badge_Partial_Background);
	border-color: var(--Badge_Partial_Background);
	color: var(--Badge_On_Fill_Font_Color);
}

.badge-danger {
	background: var(--Badge_Danger_Background);
	border-color: var(--Badge_Danger_Background);
	color: var(--Badge_On_Fill_Font_Color);
}

.stringNode-muted {
	opacity: 0.6;
	font-style: italic;
	text-align: center;
	display: block;
}

/* Empty-container placeholder: muted message + optional CTA. Stacks vertically
   and centers in whatever region hosts it. The flex/align stack applies to
   every consumer (bucket empties, dropdowns, TaskTime). */
.emptyState {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--gap-stack);
	width: 100%;
}

.emptyState__icon {
	opacity: 0.4;
	animation: emptyStateDrawIn calc(var(--motion-slow) * 2) var(--ease-standard) backwards;
}

.emptyState__action {
	flex: none;
}

.heading-smaller,
.stringNode-smaller,
.span-smaller,
.label-smaller,
.option-smaller,
.anchor-smaller {
	font-size: var(--font-size-label);
}

.heading-small,
.stringNode-small,
.span-small,
.label-small,
.option-small,
.anchor-small {
	font-size: var(--font-size-caption);
}

.heading-medium,
.stringNode-medium,
.span-medium,
.label-medium,
.option-medium,
.anchor-medium {
	font-size: var(--font-size-lead);
}

.heading-large,
.stringNode-large,
.span-large,
.label-large,
.option-large,
.anchor-large {
	font-size: var(--font-size-heading);
}

.heading-larger,
.stringNode-larger,
.span-larger,
.label-larger,
.option-larger,
.anchor-larger {
	font-size: var(--font-size-stat);
}

.input-smaller,
.input-small,
.input-medium,
.input-large,
.input-larger {
	padding-block: 0;
}

.input-smaller {
	height: var(--control-height-smaller);
}

.input-smaller:not(.headingStyledInput) {
	font-size: var(--font-size-label);
}

.input-small {
	height: var(--control-height-small);
}

.input-small:not(.headingStyledInput) {
	font-size: var(--font-size-caption);
}

.input-medium {
	height: var(--control-height-medium);
}

.input-medium:not(.headingStyledInput) {
	font-size: var(--font-size-body);
}

.input-large {
	height: var(--control-height-large);
}

.input-large:not(.headingStyledInput) {
	font-size: var(--font-size-lead);
}

.input-larger {
	height: var(--control-height-larger);
}

.input-larger:not(.headingStyledInput) {
	font-size: var(--font-size-subheading);
}

:root[data-viewport="phone"] .roundedCornerInput:not([type="range"]):not([type="color"]) {
	min-height: var(--touch-target-primary);
}

.errorNotice {
	color: var(--text-danger);
}

.heading-light,
.stringNode-light,
.span-light,
.label-light,
.option-light {
	font-weight: 300;
}

.heading-normal,
.stringNode-normal,
.span-normal,
.label-normal,
.option-normal {
	font-weight: 400;
}

.heading-bold,
.stringNode-bold,
.span-bold,
.label-bold,
.option-bold {
	font-weight: 500;
}

.heading-inverted,
.stringNode-inverted,
.span-inverted,
.input-inverted,
.label-inverted,
.chip-inverted,
.icon-inverted,
.option-inverted {
	color: var(--text-on-brand);
}

.checkbox {
	appearance: none;
	-webkit-appearance: none;
	margin: 0;
	flex-shrink: 0;
	position: relative;
	display: inline-block;
	background: var(--surface-sunken);
	border: var(--border-width) solid var(--border-default);
	border-radius: min(var(--radius-dense), 25%); /* intentional literal: a quarter of the side, because any radius at or above half the box is a disc and reads as a radio */
	box-shadow: var(--elevation-inset);
	cursor: pointer;
	transition: background var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

/* Checkmark — themed ink on the brand fill, revealed on :checked. Absolutely
   positioned so the % size resolves against the (definite) box, not a
   content-sized grid track (which collapsed it to 0). */
.checkbox::after {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	width: 58%;
	height: 58%;
	transform: translate(-50%, -50%) scale(0);
	transition: transform var(--motion-fast) var(--ease-standard);
	background: var(--text-on-brand);
	clip-path: polygon(14% 44%, 0 65%, 50% 100%, 100% 16%, 80% 0%, 43% 62%);
}

.checkbox:checked {
	background: var(--brand-primary);
	border-color: var(--brand-primary);
}

.checkbox:checked::after {
	transform: translate(-50%, -50%) scale(1);
}

.checkbox:disabled {
	cursor: not-allowed;
	opacity: 0.5;
}

.checkbox-small {
	height: 1.2rem;
	width: 1.2rem;
}

.checkbox-medium {
	height: 1.5rem;
	width: 1.5rem;
}

.checkbox-large {
	height: 2.2rem;
	width: 2.2rem;
}

.checkbox-larger {
	height: 3rem;
	width: 3rem;
}

.scrollArea {
	overflow: hidden;
	display: block;
	scroll-behavior: smooth;
	height: 100%;
	min-height: 0;
	scrollbar-gutter: stable both-edges;
}

.scrollArea:hover {
	overflow-y: auto;
}

:where(:root[data-scrollbar-gutter="fallback"]) .scrollArea,
:where(:root[data-scrollbar-gutter="fallback"]) .scrollArea:hover {
	overflow-y: scroll;
}

:where(:root[data-scrollbar-gutter="fallback"]) .scrollArea:not(:hover)::-webkit-scrollbar-thumb {
	background: transparent;
}

.scrollbarProbe {
	position: absolute;
	inset-block-start: -100rem;
	inset-inline-start: 0;
	width: 10rem;
	height: 10rem;
	visibility: hidden;
	pointer-events: none;
}

.scrollbarProbe-gutter {
	overflow: hidden;
	scrollbar-gutter: stable both-edges;
}

.scrollbarProbe-scroll {
	overflow-y: scroll;
}

.listItem {
	margin: var(--gap-stack) var(--pad-card);
	font-size: var(--font-size-body);
}

.option {
	margin: var(--gap-stack) var(--pad-card);
	cursor: pointer;
}

.pillBox {
	display: block;
	padding: var(--pad-card);
	background-color: var(--surface-card);
	background-image: var(--surface-card-texture, none);
	background-repeat: var(--surface-card-texture-repeat, repeat);
	background-size: var(--surface-card-texture-size, auto);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	clip-path: var(--surface-clip, none);
}

/* #region card — getCard: a media + body surface that can be a radio choice */
.card {
	display: flex;
	flex-direction: column;
	position: relative;
	min-width: 0;
	background-color: var(--surface-card);
	background-image: var(--surface-card-texture, none);
	background-repeat: var(--surface-card-texture-repeat, repeat);
	background-size: var(--surface-card-texture-size, auto);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	clip-path: var(--surface-clip, none);
	overflow: hidden;
}

.card-selectable {
	cursor: pointer;
	text-align: left;
	transition: border-color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard);
}

.card-selectable:hover {
	border-color: var(--border-strong);
	box-shadow: var(--elevation-surround);
	transform: translateY(-.1rem);
}

.card-selectable:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
}

.card-selected,
.card-selected:hover {
	border-color: var(--brand-primary);
	background-color: var(--surface-selected);
	box-shadow: var(--elevation-raised), 0 0 0 var(--border-width) var(--brand-primary);
	transform: none;
}

.card__media {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 0;
	background-color: var(--surface-sunken);
	border-bottom: var(--border-width) solid var(--border-default);
}

.card__body {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	padding: var(--pad-card);
	min-width: 0;
}

.card__title {
	margin: 0;
	text-align: left;
	font-family: var(--font-display);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-heading);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
	text-wrap: balance;
}

.card__text {
	margin: 0;
	font-family: var(--font-body);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-body);
	color: var(--text-secondary);
}

.card__check {
	position: absolute;
	top: var(--pad-dense);
	right: var(--pad-dense);
	display: grid;
	place-items: center;
	width: 2.2rem;
	height: 2.2rem;
	border-radius: var(--radius-circle);
	background-color: var(--brand-primary);
	color: var(--text-on-brand);
	box-shadow: var(--elevation-button);
	opacity: 0;
	transform: scale(.6);
	transition: opacity var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-emphasized);
}

.card-selected .card__check {
	opacity: 1;
	transform: scale(1);
}

.card__check .icon__view {
	width: 1.4rem;
	height: 1.4rem;
}
/* #endregion */

/* Chip: compact pillBox variant — thin-border outline instead of the raised
   pillBox surface. inline-flex so chip rows wrap naturally. */
.chip {
	height: fit-content;
	width: fit-content;
	display: inline-flex;
	align-items: center;
	padding: 0 var(--pad-dense);
	background: transparent;
	box-shadow: none;
	border: var(--border-width) solid var(--border-default);
}

.img {
	width: auto;
	height: auto;
}

.img-round {
	border-radius: var(--radius-avatar);
}

.textArea {
	width: 100%;
	height: 3rem;
	display: block;
	background: var(--surface-sunken);
	color: var(--text-primary);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-input);
	box-shadow: var(--elevation-inset);
	padding: var(--pad-input) var(--pad-input-inline);
	font: inherit;
	font-family: var(--font-body);
	margin: var(--gap-stack) 0;
}

.textArea::placeholder {
	color: var(--text-secondary);
}

/* Looks like a link out of the box — underline + brand color + pointer. Font size
 * comes from the `anchor-${size}` class (see the size groups above), so no size is
 * hard-coded here (a hard-coded value here would win by source order and defeat it). */
.anchor,
.anchor:visited {
	text-decoration: underline;
	color: var(--text-link);
	width: fit-content;
	cursor: pointer;
}

.anchor:active,
.anchor:hover {
	color: var(--text-accent);
}

.link {
	text-decoration: none;
	color: inherit;
}

.iframe {
	height: 100%;
	width: 100%;
}

.hiddenUpload {
	display: none;
}

.colorInput {
	border: none;
	/* display: none; */
	opacity: 0;
	height: 100%;
	width: 100%;
}

.colorInput-visible {
	height: 2rem;
	width: 2rem;
	display: block;
	border-radius: var(--radius-pill);
	box-shadow: var(--elevation-raised);
}

.colorInput-visible:active,
.colorInput-visible:active .colorInput-visible {
	box-shadow: none;
}

.sliderContainer {
	position: relative;
	height: 1.8rem;
	width: 15rem;
	display: block;
}

/* The range input itself is the TRACK — flatten the inherited
   roundedCornerInput/input-medium border+padding so only the rail shows. */
.sliderInput {
	appearance: none;
	-webkit-appearance: none;
	margin: 0;
	padding: 0;
	border: none;
	min-height: 0;
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	inset-inline: 0;
	width: 100%;
	height: .6rem;
	background: var(--surface-sunken);
	box-shadow: var(--elevation-inset);
	border-radius: var(--radius-pill);
	cursor: pointer;
}

/* Filled portion (JS sets width to value%). */
.sliderProgress {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	inset-inline-start: 0;
	height: .6rem;
	background: var(--brand-primary);
	border-radius: var(--radius-pill);
	pointer-events: none;
}

.sliderInput::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	cursor: pointer;
	background: var(--brand-primary);
	height: 1.6rem;
	width: 1.6rem;
	border-radius: var(--radius-avatar);
	border: 0.2rem solid var(--surface-card);
	box-shadow: var(--elevation-raised);
	transition: transform var(--motion-fast) var(--ease-standard);
}

.sliderInput::-moz-range-thumb {
	appearance: none;
	cursor: pointer;
	background: var(--brand-primary);
	height: 1.6rem;
	width: 1.6rem;
	border-radius: var(--radius-avatar);
	border: 0.2rem solid var(--surface-card);
	box-shadow: var(--elevation-raised);
	transition: transform var(--motion-fast) var(--ease-standard);
}

.sliderInput::-webkit-slider-thumb:hover {
	transform: scale(1.12);
}

.sliderInput::-moz-range-thumb:hover {
	transform: scale(1.12);
}

.tile {
	display: flex;
	position: relative;
	height: fit-content;
	padding: var(--pad-dense) var(--pad-card);
	background-color: var(--surface-card);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-flat);
	clip-path: var(--surface-clip, none);
	-webkit-backdrop-filter: var(--surface-blur, none);
	backdrop-filter: var(--surface-blur, none);
}

.tile-bordered {
	border: var(--border-width) solid var(--border-default);
}

/*#region: progress bar */
.progressBarContainer {
	background-color: var(--surface-sunken);
	border-radius: var(--radius-input);
	width: 100%;
	height: .6rem;
}

.progressBar {
	background-color: var(--brand-primary);
	height: 100%;
	border-radius: inherit;
	display: block;
}

/*#endregion: progress bar */
.headerWithSmallHeading__smallHeading {
	display: block;
	white-space: nowrap;
	text-overflow: ellipsis;
	line-height: 1rem;
}

.headerWithSmallHeading__header {
	display: block;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	line-height: 2rem;
}

:user-invalid {
	border-color: var(--status-danger);

	&[type="file"] {
		color: var(--text-danger);
	}
}

.loadingPlaceholder {
	height: 1.5rem;
	min-width: 9rem;
	position: relative;
	border-radius: var(--radius-card);
	background-color: var(--surface-hover);
	overflow: hidden;
}

.loadingPlaceholder-input {
	background-color: var(--surface-selected);
	height: var(--control-height-medium);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-input);
}

.loadingPlaceholder::after {
	content: '';
	animation: slide 1s linear infinite;
	border-radius: var(--radius-card);
	position: absolute;
	background-image: linear-gradient(to right, var(--surface-hover), var(--surface-selected), var(--surface-hover));
	height: 100%;
	width: 50%;
}

.loadingPlaceholder-input::after {
	background-image: linear-gradient(to right, var(--surface-selected), var(--surface-hover), var(--surface-selected));
}

/* Round modifier for avatar / icon-circle skeletons — square + fully rounded so
   it mirrors an EntityDisplayImage / card icon while sharing the one shimmer. */
.loadingPlaceholder-circle {
	min-width: 0;
	width: 3.6rem;
	height: 3.6rem;
	flex-shrink: 0;
	border-radius: var(--radius-avatar);
}

/* Skeleton card — mirrors the locked detail-card stack (icon circle + label,
   tall value, supporting line(s)) so loading → loaded doesn't reflow. Surface +
   pad come from role tokens, never literals. */
.skeletonCard {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	background: var(--surface-sunken);
	border-radius: var(--radius-card);
}

.skeletonCard__header {
	display: flex;
	align-items: center;
	gap: var(--gap-stack);
}

.skeletonCard__label {
	height: 1.2rem;
	min-width: 6rem;
	flex: 1;
}

.skeletonCard__value {
	height: 3rem;
	min-width: 7rem;
}

.skeletonCard__supporting {
	height: 1.2rem;
	min-width: 5rem;
}

/* Skeleton row — avatar circle + two stacked text lines, mirroring a tile/list
   row so list loading → loaded doesn't reflow. */
.skeletonRow {
	display: flex;
	align-items: center;
	gap: var(--gap-stack);
	padding: var(--pad-dense) var(--pad-card);
}

.skeletonRow__lines {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	flex: 1;
	min-width: 0;
}

.skeletonRow__line {
	height: 1.2rem;
	min-width: 0;
	width: 70%;
}

.skeletonRow__line--sub {
	height: 1rem;
	width: 45%;
}

.form {
	position: relative;
}

.form-label {
	position: absolute;
	justify-self: end;
	font-size: var(--font-size-label);
	color: var(--text-danger);
	right: 0;
}

:root[data-viewport="phone"] .form-label {
	font-size: var(--font-size-caption);
}

/* Shimmer sweep. Pure `transform` so it stays on the compositor — animating
   `left` here forced a layout + paint pass every frame, forever, once per
   skeleton on screen. Endpoints are equivalent, not merely similar: the
   pseudo-element is `width: 50%` of its parent with no `left` (static position
   `left: 0`), and percentage `translateX` resolves against the element's OWN
   width, so -100% of own = the old -50% of parent and 300% of own = the old
   150%. The base rule at `.loadingPlaceholder::after` needs no change. */
@keyframes slide {
	0% {
		transform: translateX(-100%);
	}

	100% {
		transform: translateX(300%);
	}
}

/* Reduced-motion guard: the shimmer animation rides on `.loadingPlaceholder::after`
   (and inherits to the `-circle` modifier) — kill it for users who opt out of
   motion. The placeholder still reads as a muted surface block, just static. */
@media (prefers-reduced-motion: reduce) {

	.loadingPlaceholder,
	.loadingPlaceholder::after,
	.loadingPlaceholder-circle,
	.loadingPlaceholder-circle::after {
		animation: none;
	}
}

/**
* compoundElements.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.imgWithHeading-view {
	display: flex;
	flex-direction: column;
}

.imgWithHeading-pic {
	height: 5rem;
	width: auto;
}

.barSeparatedDateTime-view {
	display: flex;
	height: 2rem;
	width: auto;
	align-self: top;
}

/* intentional literal (the three margins below): 1-2px optical baseline alignment
   of the |-separated date/time trio, not spacing rhythm — a spacing token would
   break the alignment. The `auto` legs are positional, not rhythm. */
.barSeparatedDateTime-bar {
	height: 100%;
	margin: .2rem .5rem auto .5rem;
}

.barSeparatedDateTime-date {
	margin: .1rem 0 auto auto;
}

.barSeparatedDateTime-time {
	margin: .1rem auto auto 0;
}

.initialsRoundHeading__view {
	display: flex;
	border-radius: var(--radius-avatar);
	background-color: var(--surface-raised);
	color: var(--text-primary);
	height: fit-content;
	width: fit-content;
	align-items: center;
	justify-content: center;
}

/* intentional literal (the five -<size> paddings below): per-size OPTICAL tuning
   that keeps a `fit-content` box circular under --radius-avatar. The block axis is
   non-monotonic (.2 .2 .5 .4 .2), which is what proves it is optical rather than a
   spacing ladder — uniform tokens would break circularity at every size. */
.initialsRoundHeading__view-smaller {
	padding: .2rem .6rem;
}

.initialsRoundHeading__view-small {
	padding: .2rem .7rem;
}

.initialsRoundHeading__view-medium {
	padding: .5rem 1rem;
}

.initialsRoundHeading__view-large {
	padding: .4rem 1rem;
}

.initialsRoundHeading__view-larger {
	padding: .2rem 1.2rem;
}

/* Sibling of initialsRoundHeading: a round image leaf. No background-color — it
   stays transparent until getRoundImage paints a loaded picture, so when it is
   layered over an initials placeholder the initials show through as the fallback. */
.roundImage__view {
	background-position: center;
	background-repeat: no-repeat;
	border-radius: var(--radius-avatar);
}

.roundImage__view-small {
	height: 2.5rem;
	width: 2.5rem;
}

.roundImage__view-medium {
	height: 3rem;
	width: 3rem;
}

.roundImage__view-large {
	height: 4rem;
	width: 4rem;
}

.roundImage__view-larger {
	height: 5rem;
	width: 5rem;
}

/* Round figure: a round container layering the initials placeholder with a
   getRoundImage overlay (.roundFigure__image) that covers it once a picture loads.
   .roundFigure__image is shared with EntityDisplayImage's reactive layering, so the
   overlay positioning lives in one place. */
.roundFigure__view {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: var(--radius-avatar);
	background-color: var(--surface-sunken);
	box-shadow: var(--elevation-inset);
	overflow: hidden;
}

.roundFigure__view-pictured {
	background-color: transparent;
	box-shadow: none;
}

.roundFigure__view-small {
	height: 2.5rem;
	width: 2.5rem;
}

.roundFigure__view-medium {
	height: 3rem;
	width: 3rem;
}

.roundFigure__view-large {
	height: 4rem;
	width: 4rem;
}

.roundFigure__view-larger {
	height: 5rem;
	width: 5rem;
}

.roundFigure__image {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
}

.getIconHeadingTab__tabButtons {
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	gap: var(--gap-stack);
}

.getIconHeadingTab__tabIcon {
	margin: auto;
}

.getIconHeadingTab__tabButtonText {
	position: relative;
	top: .2rem;
	margin-right: auto;
}

/* Dialog */

.dialog__view {
	display: block;
	width: 100dvw;
	height: 100dvh;
}

.dialog__view-translucentBlack {
	background-color: var(--surface-overlay);
}

.dialog__content {
	padding: var(--pad-sheet);
	max-width: 50rem;
	position: absolute;
	display: grid;
	grid-template-areas: 'dialog__content_text dialog__content_text' '. dialog__content_button';
	grid-template-columns: repeat(2, 1fr);
	grid-template-rows: 1fr auto;
	left: 50%;
	top: 10rem;
	transform: translate(-50%, -50%);
}

.dialog__heading {
	grid-area: dialog__content_text;
}

.dialog__commitButton {
	margin-left: var(--gap-section);
}

.buttons__container {
	grid-area: dialog__content_button;
	margin: auto 1rem auto auto;
	/* intentional literal: positional (`auto` centering) margin, not spacing rhythm */
}

:root[data-viewport="phone"] .dialog__button,
:root[data-viewport="phone"] .dialog__commitButton {
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
}

/* Show Msg */

.showMsg {
	position: absolute;
	top: 3rem;
	right: 0;
	transform: translateX(110%);
	box-shadow: var(--elevation-overlay);
	padding: var(--pad-button) var(--pad-card);
	cursor: pointer;
}

.showMsg-visible {
	transform: translateX(-5rem);
}

/* Custom Tile */

.customTile__tiles {
	padding: 0;
	border-radius: var(--radius-shell);
}

.customTile__headerContainer {
	width: 100%;
	background-color: var(--surface-sunken);
	display: flex;
	align-items: center;
	border-radius: var(--radius-shell) var(--radius-shell) 0 0;
	padding: var(--pad-button) 0;
}

.customTile__heading {
	color: var(--text-on-brand);
	font-size: var(--font-size-heading);
	font-weight: 600;
	margin-left: var(--gap-section);
}

/* Search Bar */

.searchBar {
	padding-right: 2.5rem;
	/* intentional literal: clearance for the searchBar__view::after glyph inset `right: 1rem` (searchBar.css), not spacing rhythm */
	background-color: var(--surface-sunken);
	width: 100%;
}

.getTextEditArea__container {
	height: 5rem;
	width: 10rem;
}

/**
* pillboxWithHeading.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

/* One stable structure painting from tokens. The cyber neon frame is inherited
   from the shared `.pillBox` structural block in themes/cyber.css (ADR-0014) —
   no per-theme variant block here. */
.pillboxWithHeading__view {
	position: relative;
	display: grid;
	gap: var(--gap-stack);
	grid-template-rows: auto 1fr;
	padding: var(--pad-card);
}

.pillboxWithHeading__title {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-dense);
	text-align: left;
}

/**
* expandableTileContainer.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.expandableTileContainer__view {
    display: flex;
}

.expandableTileContainer__background {
    position: fixed;
    width: 100dvw;
    height: 100dvh;
    z-index: 2;
    top: 0;
    left: 0;
}

.expandableTileContainer__tileContainer {
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: visible;
}

/* `transition: none`, not the old `.0001s` fake-instant: the two `-expanded-*`
   modifiers below are same-specificity rules declared later and are applied
   together with this one by ExpandableTileContainer.js, so they win and the
   expand still animates. Spelling the intent as `none` keeps the behavior
   identical today and survives a future class-order flip. */
.expandableTileContainer__tileContainer-expanded {
    transition: none;
    z-index: 10;
    overflow: hidden;
}

/* TODO: these animate `top`/`left`/`height`/`width` (written in px by
   ExpandableTileContainer.js:59-87), forcing layout + paint every frame. The
   real fix is FLIP — measure, then animate `transform: translate() scale()` —
   which needs the JS rewritten. Halving the duration halves the cost. */
.expandableTileContainer__tileContainer-expanded-fixed {
    transition: all var(--motion-slow) var(--ease-enter);
    position: fixed;
}

.expandableTileContainer__tileContainer-expanded-absolute {
    transition: all var(--motion-slow) var(--ease-enter);
    position: absolute;
}
/**
* entityDisplayImage.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-07-30 Initial Version
*/

.entityDisplayImage__view {
	position: relative;
	background-position: center;
	background-repeat: no-repeat;
	border-radius: var(--radius-circle);
	cursor: pointer;
	border: .1rem solid transparent;
	background-color: var(--surface-sunken);
	box-shadow: var(--elevation-inset);
	overflow: hidden;
	align-items: center;
	justify-content: center;
	display: flex;
}

/* The avatar's image overlay is shared with getRoundFigure (.roundFigure__image,
   positioned in compoundElements.css). The view is position:relative above so that
   overlay anchors to it; the initials layer shows through until a picture loads.
   The cyber angular silhouette is a structural block in themes/cyber.css (ADR-0014). */

.entityDisplayImage__view-small {
	height: 2.5rem;
	width: 2.5rem;
}

.entityDisplayImage__view-medium {
	height: 3rem;
	width: 3rem;
}

.entityDisplayImage__view-large {
	height: 4rem;
	width: 4rem;
}

.entityDisplayImage__view-larger {
	height: 5rem;
	width: 5rem;
}

.entityDisplayImage__view-pictured {
	background-color: transparent;
	box-shadow: none;
}

.entityDisplayImage__view-highlighted {
	border-color: var(--brand-accent);
}

.entityDisplayImage__view-hover {
	box-shadow: var(--elevation-overlay);
}

.entityDisplayImage__view-activatable:hover {
	border-color: var(--brand-accent);
}

.entityDisplayImage__view-activatable:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
}

/**
* icon.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-05-28 Initial Version
*/

.icon__view {
	fill: currentColor;
	transition: 0s;
	display: flex;
	align-items: center;
	justify-content: center;
	width: fit-content;
	position: relative;
}

/* Clickable icons are real <button>s (#731). Reset the UA button chrome so the
   button variant renders byte-identical to the historical div; :where() keeps
   specificity at zero so any existing .icon__view override still wins. Only the
   clickable variant is a pointer target, so cursor rides here (non-clickable
   icons used to get a misleading pointer cursor). */
.icon__view:where(button) {
	appearance: none;
	background: none;
	border: none;
	padding: 0;
	margin: 0;
	font: inherit;
	color: inherit;
	text-align: inherit;
	cursor: pointer;
}

.icon__view:where(button):disabled {
	cursor: default;
}

.icon__badge {
	position: absolute;
	top: -.8rem;
	left: -.8rem;
	background: var(--brand-primary);
	color: var(--text-on-brand);
	border-radius: var(--radius-card);
	min-width: 1.6rem;
	height: 1.6rem;
	padding: 0 var(--pad-cell);
	font-size: var(--font-size-label);
	line-height: 1.6rem;
	text-align: center;
}

.icon__badge-hidden {
	display: none;
}

.icon__svg {
	fill: inherit;
	stroke-width: var(--icon-stroke-width);
	stroke-linecap: var(--icon-cap);
	stroke-linejoin: var(--icon-join);
	transition: 0s;
	height: 100%;
	width: 100%;
}

.icon__heading {
	color: currentColor;
	display: none;
}

.icon__svg-smaller,
.icon__view-smaller {
	height: 1rem;
	width: 1rem;
}

.icon__svg-small,
.icon__view-small {
	height: 1.2rem;
	width: 1.2rem;
}

.icon__svg-medium,
.icon__view-medium {
	height: 1.5rem;
	width: 1.5rem;
}

.icon__svg-large,
.icon__view-large {
	height: 2rem;
	width: 2rem;
}

.icon__svg-larger,
.icon__view-larger {
	height: 2.5rem;
	width: 2.5rem;
}

.icon__svg-splash,
.icon__view-splash {
	height: 20rem;
	width: 20rem;
	max-width: 100%;
	max-height: 100%;
}

.icon__svg-disabled {
	opacity: 0.6;
	pointer-events: none;
}
/**
 * floatingExpandablePanel.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2020-04-10 Initial Version
 */

.floatingExpandablePanel__view {
	height: auto;
	width: fit-content;
	/* max(content, anchor) — dropdowns match trigger width, wider content wins. */
	min-width: anchor-size(width);
	/* Fixed (not absolute): position-try-fallbacks checks overflow against the containing block; fixed makes that the viewport. */
	position: fixed;
	position-try-fallbacks: flip-block, flip-inline, flip-block flip-inline;
	box-shadow: var(--elevation-overlay);
	border-radius: var(--radius-card);
	background-color: var(--surface-card);
	-webkit-backdrop-filter: var(--surface-blur);
	backdrop-filter: var(--surface-blur);
	z-index: 2;
	/* Neutralize UA <dialog> styles (margin auto, border solid, padding 1em, inset-inline 0, color CanvasText). */
	/* margin-inline: 0 keeps the panel flush with the anchor's inline edge; a uniform margin misaligns it. */
	margin-block: 0.25rem; /* intentional literal: anchor-positioning offset between trigger and popover — positioning, not density */
	margin-inline: 0;
	border: none;
	padding: 0;
	inset: auto;
	color: inherit;
	/* UA caps an open dialog at calc((100% - 6px) - 2em) of its containing block — the real height budget is the JS-set maxHeight on __expandArea. */
	max-width: none;
	max-height: none;
	transition: clip-path var(--motion-base) var(--ease-enter);
}

/* Scoped to open state — an unconditional display:grid would override the UA's closed display:none and leak the collapsed panel. */
.floatingExpandablePanel__view:popover-open,
.floatingExpandablePanel__view[open] {
	display: grid;
	clip-path: inset(-8rem);
}

@starting-style {
	.floatingExpandablePanel__view:popover-open,
	.floatingExpandablePanel__view[open] {
		clip-path: inset(-8rem -8rem 100% -8rem);
	}

	.floatingExpandablePanel__view.floatingExpandablePanel__anchor-topLeft:popover-open,
	.floatingExpandablePanel__view.floatingExpandablePanel__anchor-topRight:popover-open,
	.floatingExpandablePanel__view.floatingExpandablePanel__anchor-topLeft[open],
	.floatingExpandablePanel__view.floatingExpandablePanel__anchor-topRight[open] {
		clip-path: inset(100% -8rem -8rem -8rem);
	}
}

.floatingExpandablePanel__expandArea {
	max-height: 0;
	width: 100%;
	overflow: hidden;
	border-radius: var(--radius-card);
}

/* Each anchor variant picks a cell of the 3×3 position-area grid; the shared position-try-fallbacks (on the base rule) flips block/inline/both on overflow. */
.floatingExpandablePanel__anchor-bottomLeft {
	position-area: bottom span-right;
}

.floatingExpandablePanel__anchor-bottomRight {
	position-area: bottom span-left;
}

.floatingExpandablePanel__anchor-topLeft {
	position-area: top span-right;
}

.floatingExpandablePanel__anchor-topRight {
	position-area: top span-left;
}

.floatingExpandablePanel__closeButton {
	width: 2rem;
	height: 2rem;
	display: flex;
	align-items: center;
	justify-content: center;
	position: absolute;
	top: 0;
	right: 0;
	z-index: 3;
	transform: translate(50%, -50%);
	border-radius: var(--radius-shell);
	background-color: var(--surface-sunken);
}

/* Hover-reveal is a hover-capable-only affordance (#1641): only devices that
   CAN hover hide the close button behind it — touch devices see it always. */
@media (hover: hover) {
	.floatingExpandablePanel__closeButton {
		opacity: 0;
	}

	.floatingExpandablePanel__view:hover .floatingExpandablePanel__closeButton {
		opacity: 1;
	}
}

/*  */

/* .floatingExpandablePanel__view:focus .floatingExpandablePanel__expandArea {
    width: fit-content;
    max-height: 20rem;
    padding: 0.5rem;
} */

/**
* floatingLabel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-11 Initial Version — the child's view is a pointer-transparent overlay filling the host field; the frame and label it holds keep painting from the host's own `<prefix>__frame` / `<prefix>__placeholderNode` rules
*/

.floatingLabel__view {
	position: absolute;
	inset: 0;
	pointer-events: none;
}

/**
* toggleTextButton.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.toggleTextButton__view {
    cursor: pointer;
}
/**
* addTimeIcon.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-18 Initial Version
*/

.addTimeIcon__view, .addTimeIcon__plusSign {
    height: 2.1rem;
    width: 2.1rem;
    background-color: var(--brand-accent);
    border-radius: var(--radius-shell);
    position: relative;
    border: var(--border-width) solid var(--surface-card);
}

.addTimeIcon__view::before, .addTimeIcon__view::after {
    content: '';
    position: absolute;
    border-radius: var(--radius-shell);
    background-color: var(--text-on-brand);
    height: 40%;
    width: .1rem;
    transform: translate(.95rem, .3rem);
}

.addTimeIcon__view::after {
    height: 30%;
    transform: translate(.7rem, .85rem) rotate(75deg);
}

.addTimeIcon__plusSign {
    background-color: var(--status-success);
    height: 1rem;
    width: 1rem;
    position: absolute;
    transform: translate(1.1rem, 1.1rem);
}

.addTimeIcon__plusSign::before, .addTimeIcon__plusSign::after {
    content: '';
    position: absolute;
    border-radius: var(--radius-shell);
    background-color: var(--text-on-status);
    height: 50%;
    width: .1rem;
    transform: translate(.35rem, .2rem);
}

.addTimeIcon__plusSign::after {
    transform: translate(.35rem, .2rem) rotate(90deg);
}

/**
* playPauseToggleButton.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

/* One stable structure painting from tokens; the cyber angular container +
   neon frame is a structural block in themes/cyber.css (ADR-0014). */
.playPauseToggleButton__view {
	display: grid;
	align-content: center;
	justify-content: center;
	height: 2.1rem;
	width: 2.1rem;
	padding-left: .2rem; /* intentional literal: 2px optical centring for the clip-path triangle inside a 2.1rem box, not spacing rhythm */
	background-color: var(--text-disabled);
	border-radius: var(--radius-shell);
}

.playPauseToggleButton__noPadding {
	padding: 0;
}

.playPauseToggleButton__backgroundColor {
	background-color: var(--brand-accent);
}

.playPauseToggleButton__view:disabled {
	background-color: var(--text-disabled);
}

.playPauseToggleButton__view-disabled {
	opacity: .6;
	pointer-events: none;
}

.playPauseToggleButton__stop {
	margin: auto;
	height: 1rem;
	width: 1rem;
	background-color: var(--text-on-brand);
	clip-path: polygon(0 0, 100% 50%, .0rem 100%);
	-webkit-clip-path: polygon(0 0, 100% 50%, .0rem 100%);
	-moz-clip-path: polygon(0 0, 100% 50%, .0rem 100%);
}

.playPauseToggleButton__play {
	clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
	-webkit-clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
	-moz-clip-path: polygon(0 0, 100% 0, 100% 100%, 0% 100%);
}

/**
* checkmark.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-11 Initial Version
*/

.checkmark__view {
	display: inline-block;
	border: var(--border-shorthand);
	border-radius: var(--radius-dense);
	padding: .5rem; /* intentional literal: fixed 2.1rem box under border-box — growing this squeezes the 1.4rem glyph */
	height: 2.1rem;
	width: 2.1rem;
	cursor: pointer;
	appearance: none;
}

.checkmark__checkbox {
	appearance: none;
	display: none;
}

.checkmark__checkmark {
	position: relative;
	display: inline-block;
	width: 1.4rem;
	height: 1.4rem;
}

.checkmark__checkmarkStart {
	position: absolute;
	left: 0;
	top: 50%;
	height: 50%;
	width: .2rem;
	background-color: var(--text-disabled);
	content: "";
	transform: translate(.2rem, -.3rem) rotate(-45deg);
	transform-origin: left bottom;
}

.checkmark__checkmarkEnd {
	position: absolute;
	left: 0;
	bottom: 0;
	height: .2rem;
	width: 100%;
	background-color: var(--text-disabled);
	content: "";
	transform: translate(.2rem, -.3rem) rotate(-45deg);
	transform-origin: left bottom;
}

.checkmark__view-checked {
	background-color: var(--status-success);

	.checkmark__checkmarkEnd {
		background-color: var(--text-on-status);
	}

	.checkmark__checkmarkStart {
		background-color: var(--text-on-status);
	}
}

/**
* scrollArea.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

/* .scrollArea__view {
    overflow: scroll;
    height: 100%;
    display: flex;
}

.scrollArea__scrollArea {
    display: block;
    scroll-behavior: smooth;
    height: fit-content;
} */

.scrollArea-horizontalView {
    display: grid;
    grid-template-areas: 'scrollArea_leftScroll scrollArea-scrollArea scrollArea_rightScroll';
    grid-template-columns: 0rem 1fr 0rem;
    grid-template-rows: 1fr;
    width: 100%;
    position: relative;
}

.scrollArea__scrollAreaContainer {
    display: flex;
    width: 100%;
    height: 100%;
    position: absolute;
    overflow: scroll;
    /* -webkit-mask-image: -webkit-linear-gradient(left, transparent, black 10%, black 90%, transparent);
    -moz-mask-image: -webkit-linear-gradient(left, transparent 1rem, black 10%, black 90%, transparent);
    mask-image: -webkit-linear-gradient(left, transparent 1rem, black 10%, black 90%, transparent); */
}

.scrollArea-scrollArea {
    /* grid-area: scrollArea-scrollArea;
    height: 100%;
    display: grid;
    grid-auto-flow: column;
    width: 100%;
    justify-content: center;
    grid-template-columns: repeat(auto-fit, 10rem); */

    /* scroll-snap-type: x mandatory;
    left: 0;
    position: absolute;
    justify-content: start;
    -webkit-mask-image: -webkit-linear-gradient(left, transparent 1rem, black 10%, black 90%, transparent);
    -moz-mask-image: -webkit-linear-gradient(left, transparent 1rem, black 10%, black 90%, transparent);
    mask-image: -webkit-linear-gradient(left, transparent 1rem, black 10%, black 90%, transparent); */
    height: 100%;
    width: 100%;
    display: flex;
    width: fit-content;
    position: absolute;
}
.scrollArea__node {
    transition: opacity 0s;
}
.scrollArea__leftScroller, .scrollArea__rightScroller {
    height: 100%;
    width: 7rem;
    display: flex;
    align-items: center;
    position: absolute;
    justify-content: center;
    pointer-events: none;
    overflow: hidden;
}
.scrollArea__leftScroller>*, .scrollArea__rightScroller>* {
    margin: auto;
    z-index: 1;
}
.scrollArea__leftScroller {
    grid-area: scrollArea_leftScroll;
    border-radius: 0 var(--radius-card) var(--radius-card) 0;
    left: 0;
}
.scrollArea__slideLeftIcon, .scrollArea__slideRightIcon {
    fill: color-mix(in srgb, var(--text-on-media) 40%, transparent);
    pointer-events: fill;
}
.scrollArea__slideLeftIcon {
    transform: scaleX(-1);
}
.scrollArea__rightScroller {
    grid-area: scrollArea_rightScroll;
    border-radius: var(--radius-card) 0 0 var(--radius-card);
    right: 0;
}
/**
* editButton.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-16 Initial Version
*/

.editButton__view {
    border: var(--border-shorthand);
    border-radius: var(--radius-shell);
    padding: .5rem; /* intentional literal: fixed 2.1rem box under border-box — growing this squeezes the 1.4rem pen */
    height: 2.1rem;
    width: 2.1rem;
    background-color: var(--surface-sunken);
}

.editButton__pen {
    position: relative;
    display: inline-block;
    width: 1.4rem;
    height: 1.4rem;
}

.editButton__pen::before {
    position: absolute;
    transform: translate(-.25rem, .7rem) rotate(-45deg);
    content: "";
    border-top: .2rem solid transparent;
    border-bottom: .2rem solid transparent;
    border-right: .3rem solid var(--text-primary);
}

.editButton__pen::after {
    position: absolute;
    left: 0;
    bottom: 0;
    height: .4rem;
    width: calc(100% - .2rem);
    background-color: var(--text-primary);
    content: "";
    transform: translate(.2rem, -.5rem) rotate(-45deg);
    transform-origin: left bottom;
    border-radius: 0 var(--radius-button) var(--radius-button) 0;
}

/**
* toggleButtonBar.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.toggleButtonBar__view {
	width: fit-content;
	height: 2rem;
	display: flex;
}

.toggleButtonBar__button {
	cursor: pointer;
}

.toggleButtonBar__button:hover,
.toggleButtonBar__button:focus {
	transform: scale(1.1);
}

.toggleButtonBar__button[aria-selected="false"] {
	color: var(--text-secondary);
}

.toggleButtonBar__buttonSelector>:not(:first-child) {
	border-left: .1rem solid var(--border-default);
	padding-left: var(--pad-card);
}

.toggleButtonBar__buttonSelector>:not(:last-child) {
	margin-right: var(--gap-tile);
}

/**
* backgroundToggleBar.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-17 Initial Version
*/

.backgroundToggleBar__view {
	--backgroundToggleBar-control-height: var(--control-height-medium);
	position: relative;
	width: fit-content;
}

.backgroundToggleBar__view-smaller {
	--backgroundToggleBar-control-height: var(--control-height-smaller);
}

.backgroundToggleBar__view-small {
	--backgroundToggleBar-control-height: var(--control-height-small);
}

.backgroundToggleBar__view-medium {
	--backgroundToggleBar-control-height: var(--control-height-medium);
}

.backgroundToggleBar__view-large {
	--backgroundToggleBar-control-height: var(--control-height-large);
}

.backgroundToggleBar__view-larger {
	--backgroundToggleBar-control-height: var(--control-height-larger);
}

.backgroundToggleBar__view-stretch {
	width: 100%;
}

.backgroundToggleBar__view-stretch .backgroundToggleBar__tab {
	flex: 1 1 auto;
}

.backgroundToggleBar__buttonSelector {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	height: var(--backgroundToggleBar-control-height);
	border: var(--border-shorthand);
	border-color: var(--surface-sunken);
	background-color: var(--surface-sunken);
	border-radius: var(--radius-button);
}

.backgroundToggleBar__tab {
	position: relative;
	cursor: pointer;
	height: auto;
	align-self: stretch;
	font-weight: 500;
	display: flex;
	align-items: center;
	justify-content: center;
	white-space: nowrap;
	color: var(--text-secondary);
	background-color: transparent;
	box-shadow: none;
}

.backgroundToggleBar__tab:hover,
.backgroundToggleBar__tab:focus-visible,
.backgroundToggleBar__tab[aria-selected="true"] {
	color: var(--text-primary);
}

.backgroundToggleBar__tab:active {
	box-shadow: none;
}

.backgroundToggleBar__view-collapsible .backgroundToggleBar__tab {
	max-width: 24rem;
	overflow: hidden;
	transition: max-width var(--motion-base) var(--ease-standard), padding var(--motion-base) var(--ease-standard), opacity var(--motion-fast) var(--ease-standard);
}

.backgroundToggleBar__view-collapsed .backgroundToggleBar__buttonSelector {
	gap: 0;
}

.backgroundToggleBar__view-collapsed .backgroundToggleBar__tab:not([aria-selected="true"]) {
	max-width: 0;
	padding-inline: 0;
	opacity: 0;
	pointer-events: none;
}

.backgroundToggleBar__cursor {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 0;
	border-radius: var(--radius-button);
	box-shadow: var(--elevation-raised);
	background-color: var(--surface-card);
	transition: all var(--motion-fast) var(--ease-standard);
}

.backgroundToggleBar__cursor-instant {
	transition-duration: 0s;
}

/*#region Size Modifiers*/
.backgroundToggleBar__tab-smaller {
	font-size: var(--font-size-label);
	padding: 0 var(--pad-dense);
}

.backgroundToggleBar__tab-small {
	font-size: var(--font-size-caption);
	padding: 0 var(--pad-dense);
}

.backgroundToggleBar__tab-medium {
	font-size: var(--font-size-body);
	padding: 0 var(--pad-dense);
}

.backgroundToggleBar__tab-large {
	font-size: var(--font-size-lead);
	padding: 0 var(--pad-dense);
}

.backgroundToggleBar__tab-larger {
	font-size: var(--font-size-subheading);
	padding: 0 var(--pad-card);
}

:root[data-viewport="phone"] {
	.backgroundToggleBar__buttonSelector {
		height: auto;
	}

	.backgroundToggleBar__tab {
		min-height: var(--touch-target-primary);
	}
}

/**
* filterGroupSheet.css — the filter popover's body: the head row, the catalog bars side by side,
* the captioned checklists with a capped scroll height.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-13 Initial Version (#2343)
*/

.filterGroupSheet__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-cell);
	min-width: 0;
}

.filterGroupSheet__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.filterGroupSheet__title {
	margin: 0;
}

.filterGroupSheet__catalogs {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: var(--gap-tile);
}

.filterGroupSheet__group {
	display: grid;
	gap: var(--gap-dense);
	min-width: 0;
}

.filterGroupSheet__group-catalog {
	flex: 0 1 auto;
	max-width: 100%;
}

.filterGroupSheet__toggleBar {
	max-width: 100%;
	overflow-x: auto;
}

.filterGroupSheet__captionRow {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.filterGroupSheet__caption {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-weight: 500;
}

.filterGroupSheet__count,
.filterGroupSheet__empty {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
}

.filterGroupSheet__scrollArea {
	display: block;
	height: auto;
	max-height: 14rem;
	overflow-y: auto;
	padding: var(--pad-cell);
	border-radius: var(--radius-input);
	background-color: var(--surface-sunken);
}

.filterGroupSheet__option {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
	min-height: var(--control-height-smaller);
	padding: 0 var(--pad-dense);
	border-radius: var(--radius-button);
	cursor: pointer;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	color: var(--text-secondary);
}

.filterGroupSheet__option + .filterGroupSheet__option {
	margin-top: var(--gap-hairline);
}

.filterGroupSheet__option:hover,
.filterGroupSheet__option-picked {
	color: var(--text-primary);
}

.filterGroupSheet__option:hover {
	background-color: var(--surface-hover);
}

.filterGroupSheet__option-picked {
	background-color: var(--surface-card);
	box-shadow: var(--elevation-raised);
}

.filterGroupSheet__checkbox {
	flex: none;
}

:root[data-viewport="phone"] {
	.filterGroupSheet__option {
		min-height: var(--touch-target-primary);
	}

	.filterGroupSheet__scrollArea {
		max-height: 40dvh;
	}
}

/**
* refineBar.css — the search field beside the funnel on one control-height rung, and the filter
* popover the funnel opens, painted from the menu roles like the dropdown family's sheet.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-13 Initial Version (#2343)
*/

.refineBar__view {
	--refineBar-control-height: var(--control-height-small);
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
}

.refineBar__view-smaller {
	--refineBar-control-height: var(--control-height-smaller);
}

.refineBar__view-small {
	--refineBar-control-height: var(--control-height-small);
}

.refineBar__view-medium {
	--refineBar-control-height: var(--control-height-medium);
}

.refineBar__view-large {
	--refineBar-control-height: var(--control-height-large);
}

.refineBar__view-larger {
	--refineBar-control-height: var(--control-height-larger);
}

.refineBar__search {
	flex: 1 1 0;
	min-width: 0;
}

.refineBar__funnel {
	flex: none;
	width: var(--refineBar-control-height);
	height: var(--refineBar-control-height);
	border-radius: var(--radius-input);
	background-color: var(--surface-sunken);
	color: var(--text-secondary);
	position: relative;
	transition: color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.refineBar__funnel:hover,
.refineBar__funnel:focus-visible,
.refineBar__funnel-open {
	color: var(--text-primary);
	background-color: var(--surface-hover);
}

.refineBar__funnel .icon__badge {
	top: -.4rem;
	left: auto;
	right: -.4rem;
}

.refineBar__view .refineBar__panel {
	min-width: 24rem;
	max-width: calc(100dvw - 2 * var(--pad-page));
	background-color: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	border-radius: var(--menu-radius);
	border: var(--border-width) solid var(--menu-border-color);
}

@supports (width: anchor-size(width)) {
	.refineBar__view .refineBar__panel {
		width: anchor-size(width);
	}
}

.refineBar__panel .floatingExpandablePanel__expandArea {
	border-radius: var(--menu-radius);
	overflow-y: auto;
}

.refineBar__panel:focus-visible {
	outline: none;
}

:root[data-viewport="phone"] {
	.refineBar__funnel {
		min-width: var(--touch-target-primary);
		min-height: var(--touch-target-primary);
	}

	.refineBar__view .refineBar__panel {
		min-width: 0;
	}
}

/**
* expandButton.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-16 Initial Version
*/

.expandButton__view {
    border: var(--border-shorthand);
    border-radius: var(--radius-shell);
    padding: .5rem; /* intentional literal: fixed 2.1rem box under border-box — growing this squeezes the 1.4rem arrows */
    height: 2.1rem;
    width: 2.1rem;
    background-color: var(--surface-sunken);
}

.expandButton__upperArrow {
    position: relative;
    display: inline-block;
    height: 1.4rem;
}

.expandButton__upperArrow::before {
    transition: all var(--motion-fast) var(--ease-standard);
    position: absolute;
    border-radius: 50%; /* intentional literal: 50% on a non-square box (0.1rem × 45%) is an ellipse, not a stadium */
    left: 0;
    top: 50%;
    height: 45%;
    width: 0.1rem;
    background-color: var(--surface-sunken);
    content: "";
    transform: translate(.5rem, -1rem) rotate( 80deg);
}

.expandButton__upperArrow::after {
    transition: all var(--motion-fast) var(--ease-standard);
    position: absolute;
    border-radius: 50%; /* intentional literal: 50% on a non-square box (0.1rem × 45%) is an ellipse, not a stadium */
    left: 0;
    top: 50%;
    height: 45%;
    width: 0.1rem;
    background-color: var(--surface-sunken);
    content: "";
    transform: translate(0.8rem, -.8rem) rotate( 180deg);
}

.expandButton__lowerArrow {
    position: relative;
    display: inline-block;
    height: 1.4rem;
}

.expandButton__lowerArrow::before {
    transition: all var(--motion-fast) var(--ease-standard);
    position: absolute;
    border-radius: 50%; /* intentional literal: 50% on a non-square box (0.1rem × 45%) is an ellipse, not a stadium */
    left: 0;
    top: 50%;
    height: 45%;
    width: 0.1rem;
    background-color: var(--surface-sunken);
    content: "";
    transform: translate(.05rem, -.4rem) rotate(180deg);
}

.expandButton__lowerArrow::after {
    transition: all var(--motion-fast) var(--ease-standard);
    position: absolute;
    border-radius: 50%; /* intentional literal: 50% on a non-square box (0.1rem × 45%) is an ellipse, not a stadium */
    left: 0;
    top: 50%;
    height: 45%;
    width: 0.1rem;
    background-color: var(--surface-sunken);
    content: "";
    transform: translate(0.3rem, -.15rem) rotate( 80deg);
}

/* Expanded */

.expandButton-expanded {
    background-color: var(--brand-accent);
}

.expandButton__upperArrow-expanded::before {
    transform: translate(.5rem, -1rem) rotate( 180deg);
}

.expandButton__upperArrow-expanded::after {
    transform: translate(0.8rem, -.8rem) rotate( 80deg);
}

.expandButton__lowerArrow-expanded::before {
    transform: translate(.05rem, -.4rem) rotate( 80deg);
}

.expandButton__lowerArrow-expanded::after {
    transform: translate(0.3rem, -.15rem) rotate( 180deg);
}
/**
* entityTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.entityTile__view {
    cursor: pointer;
    display: grid;
    gap: var(--gap-stack);
    grid-template-columns: auto 1fr;
    align-items: center;
}

.entityTile__heading {
    text-align: left;
}
/**
* expandableEntityImage.css
* @author Jorge Pacheco <jorge.pacheco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-16 Initial Version
*/

.expandableEntityImage__view {
	position: relative;
	display: block;
	width: 100%;
	height: 100%;
	overflow: hidden;
	border-radius: var(--radius-card);
	cursor: pointer;
	outline-offset: var(--focus-ring-offset);
	transition: border-radius var(--motion-base) var(--ease-standard), box-shadow var(--motion-base) var(--ease-standard), clip-path var(--motion-base) var(--ease-standard);
}

.expandableEntityImage__image {
	width: 100%;
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	background-position: center;
	background-repeat: no-repeat;
	transition: opacity var(--motion-fast) var(--ease-standard), scale var(--motion-base) var(--ease-standard);
}

.expandableEntityImage__view-lifted .expandableEntityImage__image {
	opacity: 0;
}

.expandableEntityImage__heading {
	width: 100%;
	height: 100%;
	padding: 0;
	border-radius: 0;
}

.expandableEntityImage__hint {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	color: var(--text-on-media);
	fill: currentColor;
	background-color: var(--surface-overlay);
	opacity: 0;
	transition: opacity var(--motion-fast) var(--ease-standard);
	pointer-events: none;
}

.expandableEntityImage__hintGlyph {
	width: 2.8rem;
	height: 2.8rem;
	translate: 0 .3rem;
	transition: translate var(--motion-base) var(--ease-enter);
}

.expandableEntityImage__view:focus-visible .expandableEntityImage__hint {
	opacity: 1;
}

.expandableEntityImage__view:focus-visible .expandableEntityImage__hintGlyph {
	translate: 0 0;
}

@media (hover: hover) {
	.expandableEntityImage__view:hover .expandableEntityImage__hint {
		opacity: 1;
	}

	.expandableEntityImage__view:hover .expandableEntityImage__hintGlyph {
		translate: 0 0;
	}

	.expandableEntityImage__view:hover .expandableEntityImage__image {
		scale: 1.04;
	}
}

.expandableEntityImage__view-lifted .expandableEntityImage__hint {
	opacity: 0;
}

/**
* profileImagesScrollArea.css
* @author Jorge Pacheco <jorge.pacheco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-24 Initial Version
*/

.profileImagesScrollArea__view {
	position: relative;
	display: grid;
	row-gap: var(--gap-dense);
	width: fit-content;
	min-width: min(100%, 44rem);
	max-width: min(100%, 100rem);
	margin-top: calc(-1 * var(--pad-shell));
	padding: var(--pad-card);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-sheet);
	background-color: color-mix(in srgb, var(--surface-card) 40%, transparent);
	backdrop-filter: blur(2.4rem) saturate(1.2);
	-webkit-backdrop-filter: blur(2.4rem) saturate(1.2);
	color: var(--text-primary);
	box-shadow: var(--elevation-overlay);
	transition: opacity var(--motion-slow) var(--ease-enter), translate var(--motion-slow) var(--ease-enter);
	transition-delay: var(--motion-base);
}

@starting-style {
	.profileImageExpander__lightbox[open] .profileImagesScrollArea__view {
		opacity: 0;
		translate: 0 calc(var(--motion-enter-distance) * 6);
	}
}

.profileImageExpander__lightbox-landing .profileImagesScrollArea__view {
	opacity: 0;
	translate: 0 calc(var(--motion-enter-distance) * 3);
	transition-delay: 0s;
}

.profileImagesScrollArea__header {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	column-gap: var(--gap-section);
	row-gap: var(--gap-tight);
	min-height: max(3.2rem, var(--touch-target-minimum));
}

.profileImagesScrollArea__titles {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	column-gap: var(--gap-inline);
	row-gap: var(--gap-hairline);
	min-width: 0;
}

.profileImagesScrollArea__title {
	margin: 0;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
}

.profileImagesScrollArea__status {
	color: var(--text-primary);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-tight);
	transition: opacity var(--motion-fast) var(--ease-standard);
}

.profileImagesScrollArea__status-empty {
	opacity: 0;
}

.profileImagesScrollArea__actions {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--gap-tight);
	margin-left: auto;
}

.profileImagesScrollArea__actions-hidden {
	display: none;
}

.profileImagesScrollArea__deleteButton {
	color: var(--text-danger);
	border: var(--border-width) solid var(--border-default);
}

.profileImagesScrollArea__deleteButton:focus-visible {
	border-color: var(--status-danger);
}

@media (hover: hover) {
	.profileImagesScrollArea__deleteButton:hover {
		border-color: var(--status-danger);
	}
}

.profileImagesScrollArea__view .profileImagesScrollArea__scrollAreaSA {
	display: flex;
	align-items: stretch;
	gap: var(--gap-inline);
	height: auto;
	margin-inline: calc(-1 * var(--pad-dense));
	padding: var(--gap-tight) var(--pad-dense) var(--pad-dense);
	overflow-x: auto;
	scrollbar-gutter: auto;
	scroll-snap-type: x proximity;
	scroll-padding-inline: var(--pad-dense);
	mask-image: linear-gradient(to right, transparent, black calc(var(--pad-dense) - var(--gap-hairline) * 2), black calc(100% - var(--pad-dense) + var(--gap-hairline) * 2), transparent);
}

.profileImagesScrollArea__imageFrame {
	position: relative;
	flex: none;
	width: 7.2rem;
	height: 7.2rem;
	border-radius: var(--radius-button);
	background-color: var(--surface-sunken);
	background-size: cover;
	background-position: center;
	outline: var(--border-width) solid var(--border-default);
	outline-offset: calc(-1 * var(--border-width));
	cursor: pointer;
	scroll-snap-align: start;
	transition: outline-color var(--motion-fast) var(--ease-standard), outline-offset var(--motion-fast) var(--ease-standard), translate var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard);
}

.profileImagesScrollArea__imageFrame:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
}

@media (hover: hover) {
	.profileImagesScrollArea__imageFrame:hover {
		outline-color: var(--border-strong);
		translate: 0 -.2rem;
		box-shadow: var(--elevation-button);
	}
}

.profileImagesScrollArea__highlightedImage {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--brand-primary);
}

@media (hover: hover) {
	.profileImagesScrollArea__highlightedImage:hover {
		box-shadow: inset 0 0 0 var(--focus-ring-width) var(--brand-primary), var(--elevation-button);
	}
}

.profileImagesScrollArea__imageFrame-add {
	display: grid;
	place-content: center;
	justify-items: center;
	row-gap: var(--gap-hairline);
	color: var(--text-secondary);
	fill: currentColor;
	background-color: var(--surface-card);
	outline-style: dashed;
	outline-color: var(--border-strong);
}

.profileImagesScrollArea__imageFrame-add:focus-visible {
	outline-style: solid;
}

@media (hover: hover) {
	.profileImagesScrollArea__imageFrame-add:hover {
		color: var(--text-primary);
		background-color: var(--surface-hover);
	}
}

.profileImagesScrollArea__addGlyph {
	width: 2rem;
	height: 2rem;
}

.profileImagesScrollArea__addLabel {
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
}

.profileImagesScrollArea__imageFrame-initials {
	display: grid;
	place-items: center;
	background-color: var(--surface-raised);
	overflow: hidden;
}

.profileImagesScrollArea_initialsRoundHeading {
	width: 100%;
	height: 100%;
	padding: 0;
	border-radius: 0;
	background-color: transparent;
}

.profileImagesScrollArea__currentTag {
	position: absolute;
	inset: auto 0 0 0;
	padding: var(--gap-hairline) var(--pad-cell);
	border-radius: 0 0 var(--radius-button) var(--radius-button);
	background-color: var(--surface-overlay);
	color: var(--text-on-media);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	text-align: center;
	letter-spacing: var(--letter-spacing-body);
	pointer-events: none;
}

.profileImagesScrollArea__pickMark {
	position: absolute;
	top: var(--gap-hairline);
	right: var(--gap-hairline);
	display: grid;
	place-items: center;
	width: 2.2rem;
	height: 2.2rem;
	border-radius: var(--radius-pill);
	background-color: var(--brand-primary);
	color: var(--text-on-brand);
	fill: currentColor;
	box-shadow: var(--elevation-button);
	outline: var(--border-width) solid var(--surface-card);
	pointer-events: none;
	animation: profileImagesPickMarkIn var(--motion-base) var(--ease-enter) backwards;
}

.profileImagesScrollArea__pickGlyph {
	width: 1.2rem;
	height: 1.2rem;
}

@keyframes profileImagesPickMarkIn {
	from {
		opacity: 0;
		transform: scale(.6);
	}

	to {
		opacity: 1;
		transform: none;
	}
}

:root[data-viewport="phone"] .profileImagesScrollArea__view {
	width: 100%;
	padding: var(--pad-dense) var(--pad-dense) var(--pad-cell);
}

:root[data-viewport="phone"] .profileImagesScrollArea__actions .button {
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .profileImagesScrollArea__imageFrame {
	width: 6.4rem;
	height: 6.4rem;
}

/**
* dropdownTextField.css
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-18 Initial Version
*/

.dropdownTextField__view {
	--dropdownTextField-option-size: var(--font-size-body);
	--dropdownTextField-check-size: 1.4rem;
	--dropdownTextField-control-height: var(--control-height-medium);
	display: flex;
	align-items: center;
	box-sizing: border-box;
	min-height: var(--dropdownTextField-control-height);
	width: 100%;
	min-width: 0;
	position: relative;
	cursor: text;
	border-radius: var(--radius-input);
	background: var(--surface-sunken);
}

.dropdownTextField__view-smaller {
	--dropdownTextField-option-size: var(--font-size-label);
	--dropdownTextField-check-size: 1rem;
	--dropdownTextField-control-height: var(--control-height-smaller);
}

.dropdownTextField__view-small {
	--dropdownTextField-control-height: var(--control-height-small);
	--dropdownTextField-option-size: var(--font-size-caption);
	--dropdownTextField-check-size: 1.2rem;
}

.dropdownTextField__view-large {
	--dropdownTextField-control-height: var(--control-height-large);
	--dropdownTextField-option-size: var(--font-size-lead);
	--dropdownTextField-check-size: 1.6rem;
}

.dropdownTextField__view-larger {
	--dropdownTextField-control-height: var(--control-height-larger);
	--dropdownTextField-option-size: var(--font-size-subheading);
	--dropdownTextField-check-size: 1.8rem;
}

.dropdownTextField__frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	border: var(--border-shorthand);
	border-radius: var(--radius-input);
	transition: clip-path var(--motion-base) var(--ease-standard) var(--motion-fast), border-color var(--motion-fast) var(--ease-standard);
}

.dropdownTextField__frame::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow: var(--elevation-inset);
}

.dropdownTextField__frame-open {
	transition: clip-path var(--motion-base) var(--ease-standard) 0s, border-color var(--motion-fast) var(--ease-standard);
}

.dropdownTextField__view:hover .dropdownTextField__frame {
	border-color: var(--border-strong);
}

.dropdownTextField__view:has(.dropdownTextField__input:focus) .dropdownTextField__frame {
	border-color: var(--brand-primary);
}

.dropdownTextField__view-disabled .dropdownTextField__frame {
	border-color: var(--border-default);
}

.dropdownTextField__view:has(.dropdownTextField__input:focus-visible) .dropdownTextField__frame {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--focus-ring-color);
}

.dropdownTextField__view-disabled {
	opacity: .5;
	cursor: not-allowed;
	pointer-events: none;
}

.dropdownTextField__view .dropdownTextField__input {
	width: 100%;
	border: none;
	inset: 0;
	background: transparent;
	box-shadow: none;
	outline: none;
	height: auto;
	align-self: stretch;
	font-size: var(--dropdownTextField-option-size);
	padding: 0 var(--pad-input-inline);
}

.dropdownTextField__input:not(:focus) {
	text-overflow: ellipsis;
}

.dropdownTextField__input:-webkit-autofill,
.dropdownTextField__input:-webkit-autofill:hover,
.dropdownTextField__input:-webkit-autofill:focus,
.dropdownTextField__input:-webkit-autofill:active {
	transition: background-color 5000s ease-in-out 0s;
}

.dropdownTextField__placeholderNode {
	position: absolute;
	left: var(--pad-input-inline);
	right: var(--pad-input-inline);
	top: 50%;
	translate: 0 -50%;
	transition: top var(--motion-base) var(--ease-standard), left var(--motion-base) var(--ease-standard), right var(--motion-base) var(--ease-standard), font-size var(--motion-base) var(--ease-standard), translate var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
	line-height: 1.1;
	text-align: start;
	color: var(--text-secondary);
	overflow: hidden;
	display: flex;
	align-items: baseline;
	pointer-events: none;
}

.dropdownTextField__placeholderText {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.dropdownTextField__placeholderNode-shrunk {
	top: 0;
	left: 1.5rem;
	right: 2rem;
	font-size: var(--font-size-label);
	transition: top var(--motion-base) var(--ease-standard) var(--motion-fast), left var(--motion-base) var(--ease-standard) var(--motion-fast), right var(--motion-base) var(--ease-standard) var(--motion-fast), font-size var(--motion-base) var(--ease-standard) var(--motion-fast), translate var(--motion-base) var(--ease-standard) var(--motion-fast), color var(--motion-fast) var(--ease-standard);
}

.dropdownTextField__view:has(.dropdownTextField__input:focus) .dropdownTextField__placeholderNode-shrunk {
	color: var(--text-brand);
}

.dropdownTextField__placeholderNodeProxy {
	opacity: 0;
	position: fixed;
	font-size: var(--font-size-label);
}

.dropdownTextField__required {
	color: var(--text-danger);
	margin-left: var(--gap-hairline);
	flex: none;
}

.dropdownTextField__view .dropdownTextField__panel {
	width: var(--dropdownTextField-field-width, auto);
	min-width: 16rem;
	max-width: calc(100dvw - 2 * var(--pad-page));
	background-color: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	border-radius: var(--menu-radius);
	border: var(--border-width) solid var(--menu-border-color);
}

.dropdownTextField__panel .floatingExpandablePanel__expandArea {
	border-radius: var(--menu-radius);
}

@supports (width: anchor-size(width)) {
	.dropdownTextField__view .dropdownTextField__panel {
		width: anchor-size(width);
	}
}

.dropdownTextField__expandedArea {
	height: 100%;
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	padding: 0;
	box-sizing: border-box;
}

.dropdownTextField__scrollArea {
	height: 100%;
	padding: var(--gap-hairline) 0;
}

.dropdownTextField__option {
	display: block;
	position: relative;
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	padding: var(--pad-cell) calc(var(--pad-dense) + var(--dropdownTextField-check-size) + var(--gap-inline)) var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-button);
	font-family: var(--font-body);
	font-size: var(--dropdownTextField-option-size);
	font-weight: var(--font-weight-body);
	letter-spacing: var(--letter-spacing-body);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
	text-align: start;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard);
}

.dropdownTextField__check {
	position: absolute;
	right: var(--pad-dense);
	top: 50%;
	translate: 0 -50%;
	width: var(--dropdownTextField-check-size);
	height: var(--dropdownTextField-check-size);
	color: var(--menu-check-ink);
	pointer-events: none;
	opacity: 0;
	scale: .6;
	transition: opacity var(--motion-fast) var(--ease-standard), scale var(--motion-base) var(--ease-enter);
}

.dropdownTextField__option[aria-selected="true"] > .dropdownTextField__check {
	opacity: 1;
	scale: 1;
}

.dropdownTextField__option:hover,
.dropdownTextField__currentOption {
	background-color: var(--menu-option-hover);
}

.dropdownTextField__currentOption {
	box-shadow: inset 0 0 0 var(--border-width) var(--focus-ring-color);
}

.dropdownTextField__option[aria-selected="true"] {
	background-color: var(--menu-option-selected);
	font-weight: var(--font-weight-medium);
}


.dropdownTextField__option-placeholder {
	color: var(--text-secondary);
	cursor: default;
}

.dropdownTextField__option-placeholder > .dropdownTextField__check {
	display: none;
}

.dropdownTextField__option-placeholder:hover {
	background-color: transparent;
}

:root[data-viewport="phone"] {

	.dropdownTextField__view,
	.dropdownTextField__option {
		min-height: var(--touch-target-primary);
	}

	.dropdownTextField__placeholderNode-shrunk,
	.dropdownTextField__placeholderNodeProxy {
		font-size: var(--font-size-caption);
	}
}

/**
* teamMemberTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.teamMemberTile__view {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-dense);
	width: 100%;
	padding: var(--pad-dense);
	color: var(--text-primary);
	line-height: var(--line-height-tight);
	transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

.teamMemberTile__view[role="button"] {
	cursor: pointer;
}

@media (hover: hover) {
	.teamMemberTile__view[role="button"]:hover {
		background-color: var(--surface-hover);
	}
}

.teamMemberTile__view-selected {
	border-color: var(--brand-accent);
}

.teamMemberTile__view::after {
	opacity: 1;
}

.teamMemberTile__view:has(.teamMemberTile__share) {
	row-gap: var(--gap-tight);
}

.teamMemberTile__view:has(.teamMemberTile__share) .teamMemberTile__avatar {
	grid-row: 1 / span 2;
}

.teamMemberTile__infoContainer {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.teamMemberTile__displayNameRow {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.teamMemberTile__displayName,
.teamMemberTile__meta {
	display: block;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	transition: none;
}

.teamMemberTile__displayName {
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
}

.teamMemberTile__meta {
	font-size: var(--font-size-caption);
	color: var(--text-secondary);
}

.teamMemberTile__live {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	justify-self: end;
}

.teamMemberTile__liveDot {
	flex: 0 0 auto;
	width: .6rem;
	height: .6rem;
	border-radius: var(--radius-circle);
	background: var(--text-success);
}

.teamMemberTile__timer {
	margin: 0;
	font-size: var(--font-size-body);
	font-variant-numeric: tabular-nums;
	color: var(--text-primary);
	white-space: nowrap;
}

.teamMemberTile__live-idle .teamMemberTile__timer {
	color: var(--text-secondary);
}

.teamMemberTile__share {
	grid-column: 2 / -1;
	display: block;
	height: .3rem;
	border-radius: var(--radius-pill);
	background: var(--surface-sunken);
	overflow: hidden;
}

.teamMemberTile__shareFill {
	display: block;
	width: 100%;
	height: 100%;
	background: var(--brand-primary);
	transform-origin: left;
	transition: transform var(--motion-base) var(--ease-standard);
}

.teamMemberTile__statusBadge {
	flex: 0 0 auto;
	padding: var(--gap-hairline) var(--pad-cell);
	border: var(--border-width) solid var(--border-strong);
	border-radius: var(--radius-dense);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	color: var(--text-secondary);
	white-space: nowrap;
}

.teamMemberTile__view-former .teamMemberTile__displayName,
.teamMemberTile__view-inactive .teamMemberTile__displayName {
	font-weight: var(--font-weight-body);
	color: var(--text-secondary);
}

.teamMemberTile__view-former .teamMemberTile__avatar,
.teamMemberTile__view-inactive .teamMemberTile__avatar {
	opacity: .6;
}

.teamMemberTile__view-former .teamMemberTile__shareFill {
	background: var(--text-disabled);
}

/**
* workingNowList.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-08 Initial Version (#2203)
*/

.workingNowList__view {
	display: flex;
	flex-direction: column;
	min-width: 0;
	max-height: 100%;
}

.workingNowList__scrollArea {
	min-height: 0;
	display: flex;
	flex-direction: column;
	padding: var(--gap-hairline) 0;
}

.workingNowList__view .workingNowList__row {
	padding: var(--pad-dense) var(--pad-row);
	border: 0;
	border-radius: 0;
	background: transparent;
	box-shadow: none;
}

.workingNowList__view [data-slot]+[data-slot] .workingNowList__row {
	border-top: var(--border-width) solid var(--border-default);
}

.workingNowList__empty {
	display: block;
	padding: var(--pad-row);
	color: var(--text-secondary);
}

/**
* workingNowPill.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-08 Initial Version (#2203): a success-tinted pill — live dot, "N working", a chevron that flips while the panel is open
*/

.workingNowPill__view {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--gap-inline);
	padding: 0 var(--pad-button-inline);
	border: .1rem solid color-mix(in srgb, var(--text-success) 45%, transparent);
	border-radius: var(--radius-pill);
	background: color-mix(in srgb, var(--status-success) 14%, transparent);
	color: var(--text-success);
}

.workingNowPill__view[hidden] {
	display: none;
}

.workingNowPill__dot {
	flex: 0 0 auto;
	width: .7rem;
	height: .7rem;
	border-radius: var(--radius-circle);
	background: var(--text-success);
}

.workingNowPill__button {
	display: inline-flex;
	flex-direction: row-reverse;
	align-items: center;
	gap: var(--gap-tight);
	min-height: var(--touch-target-minimum);
	min-width: var(--touch-target-minimum);
	padding: var(--pad-dense) 0;
	border: 0;
	background: transparent;
	color: var(--text-success);
	font: inherit;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	cursor: pointer;
}

.workingNowPill__button .icon__view {
	transition: transform var(--motion-fast) var(--ease-standard);
}

.workingNowPill__button-expanded .icon__view {
	transform: rotate(180deg);
}

/**
 * notificationTile.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-05-07 Initial Version
*/

.notificationTile__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	margin-bottom: var(--gap-dense);
	background: var(--surface-sunken);
}

.notificationTile__view-unread {
	background: var(--surface-raised);
	border-color: var(--border-strong);
}

.notificationTile__title {
	font-weight: var(--font-weight-medium);
}

.notificationTile__view-unread .notificationTile__title {
	font-weight: var(--font-weight-heading);
}

.notificationTile__details {
	color: var(--text-secondary);
}

.notificationTile__status {
	color: var(--text-secondary);
	font-style: italic;
}

.notificationTile__actionsContainer {
	display: flex;
	gap: var(--gap-inline);
	justify-content: flex-end;
}

/**
* inputWithHeading.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-18 Initial Version
*/

.inputWithHeading__view {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
}

.inputWithHeading-heading {
	text-align: left;
}
/**
* checkboxWithLabel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.checkBoxWithLabel__view {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	cursor: pointer;
}

.checkBoxWithLabel__label {
	text-align: left;
	margin-top: .1rem; /* intentional literal: optical alignment of the label baseline with the 1em box */
}

/**
* inputFieldTextArea.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-05-26 Initial Version
*/

.inputFieldTextArea__view {
	text-align: center;
	width: 100%;
}

.inputFieldTextArea__view>* {
	color: currentColor;
	background-color: transparent;
	border: none;
	width: 100%;
	text-align: center;
	-webkit-box-shadow: none;
	box-shadow: none;
	height: auto;
	margin: 0;
	padding: 0;
}

.inputFieldTextArea__heading {
	width: 100%;
	cursor: pointer;
}

.inputFieldTextArea__input::placeholder {
	color: currentColor;
}

.inputFieldTextArea__input-small {
	font-size: var(--font-size-caption);
}

.inputFieldTextArea__input-med {
	font-size: var(--font-size-lead);
}

.inputFieldTextArea__input-large {
	font-size: var(--font-size-heading);
}

.inputFieldTextArea__view-alternateColor {
	color: var(--text-on-brand);
}

/**
* calendar.css — the calendar frame: head band, weekday bar over the rail corner, the body, and
* the pointer gate while a day is open.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-15 Initial Version
*/

.calendar__view {
	height: 100%;
	width: 100%;
	min-height: 0;
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	background-color: var(--surface-page);
}

.calendar__header {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	column-gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-page);
}

.calendar__modeToggle {
	justify-self: start;
}

.calendar__titleCluster {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

.calendar__title {
	margin: 0;
	min-width: 18rem;
	text-align: center;
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
	letter-spacing: var(--letter-spacing-display);
}

.calendar__step {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-minimum);
	min-height: var(--touch-target-minimum);
	border-radius: var(--radius-button);
	color: var(--text-secondary);
	transition: color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.calendar__step:hover {
	color: var(--text-primary);
	background-color: var(--surface-hover);
}

.calendar__stepGlyph-previous {
	transform: scaleX(-1);
}

.calendar__today {
	justify-self: end;
}

.calendar__weekdays {
	display: grid;
	grid-template-columns: 3.6rem repeat(7, minmax(0, 1fr));
	align-items: end;
	padding: 0 var(--pad-page);
}

.calendar__weekdays>* {
	margin: 0;
	padding: var(--pad-cell) 0;
	text-align: center;
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	color: var(--text-secondary);
}

.calendar__railCorner {
	color: var(--text-disabled);
}

.calendarMonth__view,
.calendarWeek__view {
	margin: 0 var(--pad-page) var(--pad-dense);
}

.calendar__view-dayExpanded .calendar__header,
.calendar__view-dayExpanded .calendar__weekdays,
.calendar__view-dayExpanded .calendarMonth__weekNumber,
.calendar__view-dayExpanded .calendarDay__view:not(.calendarDay__view-expanded) {
	pointer-events: none;
}

:root[data-viewport="phone"] .calendar__header {
	grid-template-columns: 1fr auto;
	grid-template-areas: "title title" "toggle today";
	row-gap: var(--gap-tight);
	padding: var(--pad-dense);
}

:root[data-viewport="phone"] .calendar__titleCluster {
	grid-area: title;
	justify-content: space-between;
}

:root[data-viewport="phone"] .calendar__title {
	min-width: 0;
	flex: 1;
}

:root[data-viewport="phone"] .calendar__modeToggle {
	grid-area: toggle;
}

:root[data-viewport="phone"] .calendar__today {
	grid-area: today;
}

:root[data-viewport="phone"] .calendar__weekdays {
	grid-template-columns: max(2.4rem, var(--touch-target-minimum)) repeat(7, minmax(0, 1fr));
	padding: 0 var(--pad-dense);
}

:root[data-viewport="phone"] .calendarMonth__view,
:root[data-viewport="phone"] .calendarWeek__view {
	margin: 0 var(--pad-dense) var(--pad-dense);
}

/**
* calendarMonth.css — the month matrix: week rows on a hairline ground, the rail's week-number buttons.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-15 Initial Version
*/

.calendarMonth__view {
	position: relative;
	min-height: 0;
	display: flex;
	flex-direction: column;
	row-gap: var(--border-width);
	background-color: var(--border-default);
	border-top: var(--border-shorthand);
	border-bottom: var(--border-shorthand);
}

.calendarMonth__row {
	flex: 1 1 0;
	min-height: 0;
	display: grid;
	grid-template-columns: 3.6rem repeat(7, minmax(0, 1fr));
	column-gap: var(--border-width);
}

.calendarMonth__weekNumber {
	min-width: 0;
	padding: var(--pad-cell) 0;
	border: none;
	border-radius: 0;
	background-color: var(--surface-page);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
	text-align: center;
	display: flex;
	justify-content: center;
	align-items: flex-start;
	cursor: pointer;
	transition: color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.calendarMonth__weekNumber-current {
	color: var(--text-brand);
}

.calendarMonth__weekNumber:hover {
	color: var(--text-brand);
	background-color: var(--surface-hover);
}

.calendarMonth__weekNumber:focus-visible {
	outline-offset: calc(-1 * var(--focus-ring-width));
}

:root[data-viewport="phone"] .calendarMonth__row {
	grid-template-columns: max(2.4rem, var(--touch-target-minimum)) repeat(7, minmax(0, 1fr));
}

/**
* calendarDay.css — a day cell: the flat surface, the weekend wash, the blank, the number and its
* today disc, the clipped content well, and the cell's expanded geometry.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-15 Initial Version
*/

.calendarDay__view {
	min-height: 0;
	min-width: 0;
	height: 100%;
	display: flex;
}

.calendarDay__view-expanded {
	transition: none;
	z-index: 1;
	background-color: var(--surface-raised);
	box-shadow: var(--elevation-overlay);
	border: var(--border-shorthand);
	border-radius: var(--radius-sheet);
}

.calendarDay__view-expandedAbsolute {
	transition: all var(--motion-slow) var(--ease-enter);
	position: absolute;
	display: flex;
	overflow: hidden;
}

.calendarDay__sheetBody {
	height: 100%;
	width: 100%;
	min-height: 0;
}

.calendarDay__cell {
	flex: 1 1 0;
	min-width: 0;
	min-height: 0;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	row-gap: var(--gap-hairline);
	padding: var(--pad-cell);
	background-color: var(--surface-card);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.calendarDay__cell:hover {
	background-color: var(--surface-hover);
}

.calendarDay__cell:focus-visible {
	outline-offset: calc(-1 * var(--focus-ring-width));
}

.calendarDay__cell-weekend {
	background-color: var(--surface-sunken);
}

.calendarDay__cell-blank {
	background-color: var(--surface-page);
	cursor: default;
}

.calendarDay__number {
	justify-self: end;
	min-width: 2.4rem;
	height: 2.4rem;
	display: grid;
	place-items: center;
	border-radius: var(--radius-circle);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	color: var(--text-secondary);
}

.calendarDay__cell-today .calendarDay__number-today {
	background-color: var(--brand-primary);
	color: var(--text-on-brand);
	font-weight: var(--font-weight-medium);
}

.calendarDay__content {
	min-height: 0;
	overflow: hidden;
	mask-image: linear-gradient(to bottom, black calc(100% - 1.2rem), transparent);
}

.calendarDay__view-week .calendarDay__cell {
	padding: var(--pad-dense) var(--pad-cell);
	row-gap: var(--gap-tight);
}

:root[data-viewport="phone"] .calendarDay__cell {
	padding: var(--pad-cell) .3rem; /* intentional literal: seven phone cells share the row; a role pad on the inline axis would crowd the day disc */
}

:root[data-viewport="phone"] .calendarDay__number {
	min-width: 2rem;
	height: 2rem;
	font-size: var(--font-size-label);
}

/**
* calendarDayExpandedView.css — the day sheet's chrome: dated head over a hairline, the close control, the body well.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-15 Initial Version
*/

.calendarDayExpandedView__view {
	width: 100%;
	height: 100%;
	min-height: 0;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
}

.calendarDayExpandedView__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: var(--pad-row) var(--pad-sheet);
	border-bottom: var(--border-shorthand);
}

.calendarDayExpandedView__title {
	margin: 0;
	min-width: 0;
	text-align: start;
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
	letter-spacing: var(--letter-spacing-display);
}

.calendarDayExpandedView__close {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
	border-radius: var(--radius-button);
	color: var(--text-secondary);
	transition: color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.calendarDayExpandedView__close:hover {
	color: var(--text-primary);
	background-color: var(--surface-hover);
}

.calendarDayExpandedView__body {
	min-height: 0;
	display: grid;
}

.calendarDayExpandedView__empty {
	padding: var(--pad-sheet);
}

:root[data-viewport="phone"] .calendarDayExpandedView__head {
	padding: var(--pad-dense) var(--pad-dense) var(--pad-dense) var(--pad-card);
}

/**
* calendarWeek.css — the week row: the lit rail number beside seven cells on a hairline ground.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-15 Initial Version
*/

.calendarWeek__view {
	position: relative;
	min-height: 0;
	display: grid;
	grid-template-columns: 3.6rem repeat(7, minmax(0, 1fr));
	grid-template-rows: minmax(0, 1fr);
	column-gap: var(--border-width);
	background-color: var(--border-default);
	border-top: var(--border-shorthand);
	border-bottom: var(--border-shorthand);
}

.calendarWeek__weekNumber {
	padding: var(--pad-cell) 0;
	background-color: var(--surface-page);
	color: var(--text-brand);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
	text-align: center;
}

:root[data-viewport="phone"] .calendarWeek__view {
	grid-template-columns: max(2.4rem, var(--touch-target-minimum)) repeat(7, minmax(0, 1fr));
}

/**
* deadlineDayCensus.css — the deadline calendar's cell content: one row per due item with a kind mark, the phone tally.
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-11 Initial Version (#2311)
*/

.deadlineDayCensus__view {
	min-width: 0;
}

.deadlineDayCensus__rows {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.deadlineDayCensus__row {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
	font-size: var(--font-size-label);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
}

.deadlineDayCensus__mark {
	flex: none;
	width: .6rem;
	height: .6rem;
	border-radius: var(--radius-circle);
}

.deadlineDayCensus__mark-task {
	background-color: var(--status-info);
}

.deadlineDayCensus__mark-project {
	background-color: var(--status-warning);
}

.deadlineDayCensus__title {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.deadlineDayCensus__row-done .deadlineDayCensus__title,
.deadlineDayCensus__row-archived .deadlineDayCensus__title {
	color: var(--text-secondary);
	text-decoration: line-through;
}

.deadlineDayCensus__more {
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	color: var(--text-secondary);
}

.deadlineDayCensus__tally {
	display: none;
	flex-wrap: wrap;
	gap: var(--gap-tight);
}

.deadlineDayCensus__tallyItem {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-hairline);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
	color: var(--text-secondary);
}

:root[data-viewport="phone"] .deadlineDayCensus__rows {
	display: none;
}

:root[data-viewport="phone"] .deadlineDayCensus__tally {
	display: flex;
}

/**
* deadlineDaySheet.css — the deadline calendar's day sheet: the kind filter with counts, time groups, item rows.
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-11 Initial Version (#2311)
*/

.deadlineDaySheet__view {
	height: 100%;
	min-height: 0;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
}

.deadlineDaySheet__filters {
	display: flex;
	gap: var(--gap-tight);
	padding: var(--pad-dense) var(--pad-sheet);
	border-bottom: var(--border-shorthand);
}

.deadlineDaySheet__filter {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	min-height: var(--touch-target-minimum);
	padding: var(--pad-cell) var(--pad-dense);
	border: none;
	border-radius: var(--radius-pill);
	background-color: transparent;
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	cursor: pointer;
	transition: color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.deadlineDaySheet__filter:hover {
	color: var(--text-primary);
	background-color: var(--surface-hover);
}

.deadlineDaySheet__filter-active {
	color: var(--text-primary);
	background-color: var(--surface-selected);
}

.deadlineDaySheet__filterCount {
	font-variant-numeric: tabular-nums;
	color: var(--text-disabled);
}

.deadlineDaySheet__filter-active .deadlineDaySheet__filterCount {
	color: var(--text-brand);
}

.deadlineDaySheet__list {
	padding: var(--pad-dense) var(--pad-sheet) var(--pad-sheet);
	display: flex;
	flex-direction: column;
	gap: var(--gap-section);
}

.deadlineDaySheet__group {
	display: flex;
	flex-direction: column;
}

.deadlineDaySheet__time {
	padding: var(--pad-cell) 0;
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
	color: var(--text-secondary);
	border-bottom: var(--border-shorthand);
}

.deadlineDaySheet__row {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-height: var(--touch-target-primary);
	padding: var(--pad-row) var(--pad-cell);
	border-bottom: var(--border-shorthand);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.deadlineDaySheet__row:hover {
	background-color: var(--surface-hover);
}

.deadlineDaySheet__mark {
	flex: none;
	width: .8rem;
	height: .8rem;
	border-radius: var(--radius-circle);
}

.deadlineDaySheet__mark-task {
	background-color: var(--status-info);
}

.deadlineDaySheet__mark-project {
	background-color: var(--status-warning);
}

.deadlineDaySheet__text {
	flex: 1 1 0;
	min-width: 0;
	display: flex;
	align-items: baseline;
	gap: var(--gap-tight);
	font-size: var(--font-size-body);
}

.deadlineDaySheet__number {
	font-variant-numeric: tabular-nums;
	color: var(--text-secondary);
}

.deadlineDaySheet__name {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--text-primary);
}

.deadlineDaySheet__type {
	font-size: var(--font-size-caption);
	color: var(--text-secondary);
}

.deadlineDaySheet__status {
	flex: none;
}

.deadlineDaySheet__empty {
	padding: var(--pad-sheet);
}

:root[data-viewport="phone"] .deadlineDaySheet__filters {
	padding: var(--pad-dense) var(--pad-card);
}

:root[data-viewport="phone"] .deadlineDaySheet__list {
	padding: var(--pad-dense) var(--pad-card) var(--pad-card);
}

:root[data-viewport="phone"] .deadlineDaySheet__type {
	display: none;
}

/**
 * taskEntryTile.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2019-03-19 Initial Version
 */

/* dense data surface: --pad-dense/--gap-dense/--radius-dense per the token contract's §Dense exception */

.taskEntryTile__view {
	display: grid;
	grid-template-areas: 'taskEntryTile_row1Col1 taskEntryTile_col2' 'taskEntryTile_row2Col1 taskEntryTile_col2';
	grid-template-columns: 1fr auto;
	position: relative;
	align-items: center;
	padding: var(--pad-dense);
	border-radius: var(--radius-dense);
}

/* Hover-reveal is a hover-capable-only affordance (#1641): only devices that
   CAN hover hide the edit button behind it — touch devices see it always. */
@media (hover: hover) {
	.taskEntryTile__view:hover .taskEntryTile__editButton {
		opacity: 1;
	}

	.taskEntryTile__editButton {
		opacity: 0;
	}
}

/* Edit state (#1221): the tile swaps its content for the inline NewTaskPanel edit
   form, which is shrink-to-content by design. Without this cap the tile keeps
   stretching across its host column (the performance module's half-viewport
   scroll area), leaving a wide dead region to the right of the form inputs. */
.taskEntryTile__view--editing {
	width: fit-content;
	max-width: 100%;
}

.taskEntryTile__taskDescription {
	grid-area: taskEntryTile_row1Col1;
}

/* Interval total — a `getHeading` (TaskEntryTile.js:67), so it inherited
   `--font-display`. Body face + tabular figures: this is a duration column and
   the rows must line up. */
.taskEntryTile__total {
	grid-area: taskEntryTile_col2;
	font-family: var(--font-body);
	font-variant-numeric: tabular-nums;
}

.taskEntryTile__project {
	grid-area: taskEntryTile_row2Col1;
	margin-left: var(--gap-dense);
}

.taskEntryTile__editButton {
	cursor: pointer;
	position: absolute;
	top: 0;
	right: 0;
	transform: translate(50%, -50%);
}

.taskEntryTile__closeEditTaskTime {
	grid-row: 3;
	justify-self: end;
}
/**
* taskTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.taskTile__view {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		'taskTile_typeAndNumber taskTile_badges'
		'taskTile_description taskTile_description'
		'taskTile_project taskTile_project'
		'taskTile_teamMemberTimerContainer taskTile_teamMemberTimerContainer';
	gap: var(--gap-dense);
	padding: var(--pad-dense);
	cursor: pointer;
}

.taskTile__view-selected {
	border-color: var(--brand-accent);
}

.taskTile__typeAndNumber {
	grid-area: taskTile_typeAndNumber;
	display: flex;
	align-items: center;
	gap: var(--gap-dense);
}

.taskTile__description {
	grid-area: taskTile_description;
}

.taskTile__badges {
	grid-area: taskTile_badges;
	display: flex;
	align-items: center;
	gap: var(--gap-dense);
}

.taskTile__badges:not(:has(.chip)) {
	display: none;
}

.taskTile__deadline .heading {
	color: var(--text-on-status);
}

.taskTile__project {
	grid-area: taskTile_project;
	color: var(--text-secondary);
}

.taskTile__teamMemberTimerContainer {
	grid-area: taskTile_teamMemberTimerContainer;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-dense);
	padding: var(--pad-dense) 0 0 0;
}

.taskTile__controllers {
	display: flex;
	align-items: center;
	gap: var(--gap-dense);
}

.taskTile__timer {
	flex: 0 0 auto;
	font-variant-numeric: tabular-nums;
}

.taskTile__timer:empty {
	display: none;
}

.taskTile__runningCount {
	color: var(--text-success);
}

/**
* avatarOverflowPopover.css — the "+N" badge and the sheet it opens.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-15 Initial Version (#2394) — moved out of teamMemberAvatars.css with the Component. The view is
*                            `display: contents` so the badge and the sheet stay flex children of the host row. The row's own
*                            `flex-shrink: 0` reaches two DOM levels and the badge now sits at three, so it carries the property
*                            itself — it is the row's only shrinkable item otherwise, the sheet being out of flow. The badge and sheet size themselves from two custom properties
*                            the HOST writes onto its own view (`--teamMemberAvatars-avatar-size`, `--teamMemberAvatars-view-width`),
*                            which is the one thing this component takes from the row it sits in.
*/

.avatarOverflowPopover__view {
	display: contents;
}

.avatarOverflowPopover__badge {
	position: relative;
	flex-shrink: 0;
	z-index: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	width: var(--teamMemberAvatars-avatar-size, 3rem);
	height: var(--teamMemberAvatars-avatar-size, 3rem);
	border-radius: var(--radius-circle);
	background-color: var(--surface-raised);
	font-size: var(--font-size-label);
	color: var(--text-secondary);
	user-select: none;
	cursor: pointer;
}

.avatarOverflowPopover__sheet {
	display: none;
	position: absolute;
	bottom: 100%;
	left: 0;
	width: auto;
	height: auto;
	min-width: var(--teamMemberAvatars-view-width, auto);
	background-color: var(--surface-card);
	border-radius: var(--radius-card);
	padding: var(--pad-dense);
	gap: var(--gap-dense);
	flex-wrap: wrap;
	box-shadow: var(--elevation-overlay);
	z-index: 10;
	max-height: 10rem;
	overflow-y: auto;
}

.avatarOverflowPopover__view-hoverOpen .avatarOverflowPopover__sheet,
.avatarOverflowPopover__view-open .avatarOverflowPopover__sheet {
	display: flex;
}

/**
* teamMemberAvatars.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-01 Initial Version — reusable member-avatar row (wrap or auto-fit flat mode)
*/

.teamMemberAvatars__view {
	display: flex;
	align-items: center;
	position: relative;
	gap: var(--gap-dense);
}

.teamMemberAvatars__view-wrap {
	flex-wrap: wrap;
}

.teamMemberAvatars__view-fit {
	flex-wrap: nowrap;
	width: 100%;
	min-width: 0;
	overflow-x: clip;
	overflow-y: visible;
}

.teamMemberAvatars__view-fit>*,
.teamMemberAvatars__view-fit>*>* {
	flex-shrink: 0;
}


/**
* taskThroughputSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskThroughputSummary__view {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: var(--gap-inline);
	padding: var(--pad-dense) 0;
}

.taskThroughputSummary__view-hidden {
	display: none;
}

.taskThroughputSummary__heading {
	flex-basis: 100%;
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-cell);
}

/* Stat tiles sit in a row — tabular figures keep their widths comparable. */
.taskThroughputSummary__tile {
	flex: 0 0 auto;
	min-width: 6rem;
	font-variant-numeric: tabular-nums;
}

/**
* taskAssigneeLoad.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskAssigneeLoad__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	padding: var(--pad-card);
}

.taskAssigneeLoad__heading {
	text-align: left;
}

.taskAssigneeLoad__empty {
	opacity: .6;
}

.taskAssigneeLoad__row {
	display: grid;
	grid-template-columns: minmax(4rem, 8rem) 1fr auto;
	align-items: center;
	gap: var(--gap-tile);
}

.taskAssigneeLoad__name {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.taskAssigneeLoad__bar {
	width: 100%;
}

/* Duration column — tabular figures so the rows align down the gutter. */
.taskAssigneeLoad__time {
	text-align: right;
	white-space: nowrap;
	opacity: .7;
	font-variant-numeric: tabular-nums;
}

/* #1516 — former contributors: name cell holds the name span + a "Former" pill. */
.taskAssigneeLoad__nameCell {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.taskAssigneeLoad__formerBadge {
	padding: .1rem .4rem; /* intentional literal: 1px block pad on a ~9px badge; any spacing rung doubles its height */
	border-radius: var(--radius-pill);
	border: .1rem solid currentColor;
	font-size: var(--font-size-label);
	line-height: 1;
	opacity: .75;
	white-space: nowrap;
	flex-shrink: 0;
}

/* Muted-but-readable: kept above .6 opacity so the row text stays legible,
 * and paired with the pill so the state is labelled, not just tonal. */
.taskAssigneeLoad__row--former {
	opacity: .75;
	font-style: italic;
}

/* Italic glyphs lean past their box's right edge; the name's
 * `overflow: hidden` + `text-overflow: ellipsis` clips that lean on the
 * final character. A small inline-end pad gives the slanted tail room. */
.taskAssigneeLoad__row--former .taskAssigneeLoad__name {
	padding-inline-end: .15em; /* intentional literal: em-relative anti-clipping pad for the italic final glyph (#1516) — must scale with font-size, not the space ladder */
}

/**
* taskThroughputTrend.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version
*/

.taskThroughputTrend__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	min-width: 0;
}

.taskThroughputTrend__heading {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-cell);
}

.taskThroughputTrend__view .graph__view {
	min-height: 14rem;
}

.taskThroughputTrend__empty {
	padding: var(--pad-card) 0;
	text-align: center;
	opacity: .6;
}

/**
* taskCycleTime.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version
*/

.taskCycleTime__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	min-width: 0;
}

.taskCycleTime__heading {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-cell);
}

/* Stat figure — tabular so the number doesn't shift as the value changes. */
.taskCycleTime__bigNumber .headerWithSmallHeading__header {
	font-size: var(--font-size-heading);
	line-height: 1;
	font-variant-numeric: tabular-nums;
}

.graph__view.taskCycleTime__sparkline {
	min-height: 3rem;
	height: 3rem;
}

/**
* taskStatusBreakdown.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version
*/

.taskStatusBreakdown__view {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
}

.taskStatusBreakdown__heading {
	align-self: stretch;
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-cell);
}

/*
 * The donut. The wrapper is unmasked and positions the ring + the centered
 * total. The conic-gradient is painted inline on the ring (style.background); a
 * radial mask cuts the ring's center into a hole so the gradient reads as a ring.
 */
.taskStatusBreakdown__chart {
	position: relative;
	width: 9rem;
	height: 9rem;
	display: flex;
	align-items: center;
	justify-content: center;
}

.taskStatusBreakdown__ring {
	position: absolute;
	inset: 0;
	border-radius: var(--radius-circle);
	-webkit-mask: radial-gradient(circle, transparent 52%, #000 53%);
	mask: radial-gradient(circle, transparent 52%, #000 53%);
}

/* Donut centre count — tabular so the figure stays optically centred as it changes. */
.taskStatusBreakdown__total {
	position: relative;
	font-weight: 600;
	font-size: var(--font-size-lead);
	font-variant-numeric: tabular-nums;
}

.taskStatusBreakdown__legend {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	align-self: stretch;
}

.taskStatusBreakdown__legendRow {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.taskStatusBreakdown__swatch {
	width: .75rem;
	height: .75rem;
	border-radius: .2rem; /* intentional literal: .2rem on a .75rem swatch; the .5rem --radius-dense rung would read as a circle */
	flex: 0 0 auto;
}

.taskStatusBreakdown__legendLabel {
	flex: 1 1 auto;
}

/* Legend figures — a stacked count/percent column, so they must align. */
.taskStatusBreakdown__legendCount {
	font-weight: 600;
	font-variant-numeric: tabular-nums;
}

.taskStatusBreakdown__legendPercent {
	opacity: .6;
	min-width: 3ch;
	text-align: right;
	font-variant-numeric: tabular-nums;
}

.taskStatusBreakdown__empty {
	padding: var(--pad-card) 0;
	opacity: .6;
}

/**
* taskAnalyticsSection.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version — full-width Analytics section: header row + 3-cell chart grid
*/

.taskAnalyticsSection__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	padding: var(--pad-card);
	min-width: 0;
	min-height: 0;
}

.taskAnalyticsSection__headerRow {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
	flex-wrap: wrap;
}

.taskAnalyticsSection__heading {
	color: var(--text-secondary);
}

.taskAnalyticsSection__viewAllLink {
	cursor: pointer;
	color: var(--text-accent);
	text-decoration: underline;
}

/* Three cells: the Throughput Trend spans the first two columns (prominent),
   Cycle Time + Status Breakdown ride the remaining cells. Collapses to one
   column on a narrow viewport. */
.taskAnalyticsSection__chartGrid {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
	grid-auto-rows: minmax(0, auto);
	gap: var(--gap-tile);
	min-width: 0;
}

.taskAnalyticsSection__chart {
	min-width: 0;
}

.taskAnalyticsSection__chart-prominent {
	grid-row: span 2;
}

/* Mobile: single-column chart grid. Gated on the `data-viewport="phone"` band
   (JS-synced from PHONE_MAX_PX), never a width media query — see
   decisions/0004. Replaces a `max-width: 60rem` query that actually evaluated
   to 960px (media-query rem resolves against the browser-initial 16px, not our
   root rule), so the effective breakpoint tightens from 960px to 800px. */
:root[data-viewport="phone"] .taskAnalyticsSection__chartGrid {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .taskAnalyticsSection__chart-prominent {
	grid-row: auto;
}

/**
* deletedTasks.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.deletedTasks__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
	padding: var(--pad-row);
	min-width: 18rem;
}

.deletedTasks__heading {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-dense);
}

.deletedTasks__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-stack);
}

.deletedTasks__empty {
	color: var(--text-secondary);
}

/**
 * timePicker.css: A modular multiuseCalendar
 *
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Copyright (c) 2019 Seedbury Square LLC. All Rights Reserved.
 * @version 2020-04-11  Initial version
 */

.timePicker__view {
	width: fit-content;
	display: grid;
	align-items: center;
	padding: var(--pad-cell);
	position: relative;
	grid-template-areas:
		'timePicker_timeInput timePicker_meridiemToggle'
		'timePicker_expandablePanel .';
	grid-template-columns: 1fr auto;
	border: var(--border-shorthand);
	border-radius: var(--radius-button);
	column-gap: var(--gap-tight);
}

.timePicker__timeInput {
	width: 5ch;
	grid-area: timePicker_timeInput;
	padding: .1rem .1rem .1rem .5rem; /* intentional literal: 1px hairline pad on a 5ch time field; the 4px left offset optically aligns it with the meridiem toggle */
}

.timePicker__meridiemPicker {
	grid-area: timePicker_meridiemToggle;
}

.timePicker__timeInput-invalidTime {
	border-color: var(--status-danger);
}

.timePicker__suggestionScrollArea {
	background: var(--surface-card);
	max-height: 10rem;
	padding: var(--pad-dense);
	margin: auto;
}

.timePicker__suggestionHeader {
	display: block;
	width: 100%;
	cursor: pointer;
	border-radius: var(--radius-button);
}

.timePicker__suggestionHeader:hover {
	background-color: var(--state-selection-highlight);
}

/*#region Size Modifiers*/
.timePicker__timeInput-smaller {
	font-size: var(--font-size-body);
}

.timePicker__timeInput-small {
	font-size: var(--font-size-lead);
}

.timePicker__timeInput-medium {
	font-size: var(--font-size-subheading);
}

.timePicker__timeInput-large {
	font-size: var(--font-size-subheading);
}

.timePicker__timeInput-larger {
	font-size: var(--font-size-heading);
}

/*#endregion Size Modifiers*/

/**
* miniCalendar.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-23 Initial Version
*/

.miniCalendar__view {
	height: fit-content;
	width: fit-content;
	display: inline-grid;
	grid-template-rows: auto auto 1fr;
	max-width: 100%;
	overflow: auto;
}

.miniCalendar__header {
	margin: 0;
	padding: 0;
	display: flex;
	align-items: center;
}

.miniCalendar__dateTimeContainer {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: center;
	gap: var(--gap-stack);
	margin-bottom: var(--gap-dense);
}

.miniCalendar__dateText {
	white-space: nowrap;
	width: 12ch;
}

.miniCalendar__dateText-unset {
	color: var(--text-secondary);
	font-weight: var(--font-weight-body);
}

.miniCalendar__timePicker {
	justify-self: end;
}

/*#region Size Modifiers*/
.miniCalendar__header-smaller {
	font-size: var(--font-size-caption);
}

.miniCalendar__header-small {
	font-size: var(--font-size-body);
}

.miniCalendar__header-medium {
	font-size: var(--font-size-lead);
}

.miniCalendar__header-large {
	font-size: var(--font-size-subheading);
}

.miniCalendar__header-larger {
	font-size: var(--font-size-subheading);
}

.miniCalendar__dateText-smaller {
	font-size: var(--font-size-body);
}

.miniCalendar__dateText-small {
	font-size: var(--font-size-lead);
}

.miniCalendar__dateText-medium {
	font-size: var(--font-size-subheading);
}

.miniCalendar__dateText-large {
	font-size: var(--font-size-subheading);
}

.miniCalendar__dateText-larger {
	font-size: var(--font-size-heading);
}

.miniCalendar__weekdays-smaller {
	font-size: var(--font-size-label);
}

.miniCalendar__weekdays-small {
	font-size: var(--font-size-label);
}

.miniCalendar__weekdays-medium {
	font-size: var(--font-size-caption);
}

.miniCalendar__weekdays-large {
	font-size: var(--font-size-body);
}

.miniCalendar__weekdays-larger {
	font-size: var(--font-size-lead);
}

/*#endregion Size Modifiers*/

.miniCalendar__calendarContainer {
	height: 100%;
	width: 100%;
	padding: var(--pad-card);
	display: grid;
	grid-template-areas: 'miniCalendar_head' 'miniCalendar_weekdays' 'miniCalendar_matrix';
	grid-template-rows: auto auto 1fr;
	border-radius: var(--radius-card);
}

.miniCalendar__matrix {
	width: 100%;
	display: grid;
	grid-template-areas: 'miniCalendar_day0 miniCalendar_day1 miniCalendar_day2 miniCalendar_day3 miniCalendar_day4 miniCalendar_day5 miniCalendar_day6' 'miniCalendar_day7 miniCalendar_day8 miniCalendar_day9 miniCalendar_day10 miniCalendar_day11 miniCalendar_day12 miniCalendar_day13' 'miniCalendar_day14 miniCalendar_day15 miniCalendar_day16 miniCalendar_day17 miniCalendar_day18 miniCalendar_day19 miniCalendar_day20' 'miniCalendar_day21 miniCalendar_day22 miniCalendar_day23 miniCalendar_day24 miniCalendar_day25 miniCalendar_day26 miniCalendar_day27' 'miniCalendar_day28 miniCalendar_day29 miniCalendar_day30 miniCalendar_day31 miniCalendar_day32 miniCalendar_day33 miniCalendar_day34' 'miniCalendar_day35 miniCalendar_day36 miniCalendar_day37 miniCalendar_day38 miniCalendar_day39 miniCalendar_day40 miniCalendar_day41';
	grid-template-columns: repeat(7, 1fr);
	grid-template-rows: repeat(5, 1fr);
	gap: var(--gap-dense);
}

.miniCalendar__matrix-expanded {
	grid-template-rows: repeat(6, 1fr);
}

.miniCalendar__matrix-reduced {
	grid-template-rows: repeat(4, 1fr);
}

.miniCalendar__day-view {
	display: flex;
	height: 0;
	width: 0;
	padding: 0;
	opacity: 0;
	border-radius: var(--radius-dense);
	align-items: center;
}

.miniCalendar__day-view-visible {
	opacity: 1;
	height: 100%;
	width: 100%;
	cursor: pointer;
}

/* Header */

.miniCalendar__header-container {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--gap-dense) var(--gap-inline);
}

.miniCalendar__header-container-smaller {
	font-size: var(--font-size-label);
}

.miniCalendar__header-container-small {
	font-size: var(--font-size-label);
}

.miniCalendar__header-container-medium {
	font-size: var(--font-size-caption);
}

.miniCalendar__header-container-large {
	font-size: var(--font-size-subheading);
}

.miniCalendar__header-container-larger {
	font-size: var(--font-size-subheading);
}

.miniCalendar__header-navButtonSet {
	display: grid;
	grid-template-columns: auto auto auto;
	align-items: center;
	gap: var(--gap-hairline);
}

.miniCalendar__header-navButtonSet>* {
	font-size: inherit;
}

.miniCalendar__header-navButtonSet .button,
.miniCalendar__header-todayButton {
	box-shadow: none;
	padding: 0;
	line-height: unset;
}

.miniCalendar__header-navButtonSet-smaller {
	font-size: var(--font-size-label);
}

.miniCalendar__header-navButtonSet-small {
	font-size: var(--font-size-label);
}

.miniCalendar__header-navButtonSet-medium {
	font-size: var(--font-size-caption);
}

.miniCalendar__header-navButtonSet-large {
	font-size: var(--font-size-subheading);
}

.miniCalendar__header-navButtonSet-larger {
	font-size: var(--font-size-subheading);
}

.miniCalendar__header-monthNav>.heading {
	width: 9ch;
}

.miniCalendar__header-yearNav>.heading {
	width: 5ch;
}

.miniCalendar__header-todayButton {
	margin-inline-start: auto;
}

.miniCalendar__header-todayButton-smaller {
	font-size: var(--font-size-label);
}

.miniCalendar__header-todayButton-small {
	font-size: var(--font-size-caption);
}

.miniCalendar__header-todayButton-medium {
	font-size: var(--font-size-lead);
}

.miniCalendar__header-todayButton-large {
	font-size: var(--font-size-heading);
}

.miniCalendar__header-todayButton-larger {
	font-size: var(--font-size-heading);
}

.miniCalendar__day-dayNumberArea {
	height: 1.8rem;
	width: 1.8rem;
	border-radius: var(--radius-pill);
	font-size: var(--font-size-caption);
	margin: auto;
	text-align: center;
	line-height: var(--line-height-tight);
	display: grid;
	justify-content: center;
	align-items: center;
}

.miniCalendar__day-dayNumberArea-small {
	font-size: var(--font-size-caption);
	line-height: var(--line-height-tight);
	width: 2rem;
	height: 2rem;
}

.miniCalendar__day-dayNumberArea-medium {
	font-size: var(--font-size-lead);
	height: 2.5rem;
	width: 2.5rem;
	line-height: 1.85rem;
}

.miniCalendar__day-dayNumberArea-large {
	font-size: var(--font-size-heading);
	width: 3.7rem;
	height: 3.7rem;
	line-height: 3.06rem;
}

.miniCalendar__day-dayNumberArea:hover {
	border: .1rem solid currentColor;
}

.miniCalendar__day-dayNumberArea-selectedDay {
	color: var(--text-on-brand);
	background: var(--brand-accent);
}

.miniCalendar__day-dayNumberArea-today {
	border: .1rem solid var(--brand-accent);
}

.miniCalendar__weekdays {
	margin: var(--gap-tight) 0;
	display: grid;
	grid-template-columns: repeat(7, 1fr);
}

.miniCalendar__weekdays>* {
	color: var(--text-primary);
	margin: auto;
	font-size: inherit;
}

/* Phone band: the base rung measures 9.95px at 390px inside a 1.8rem (14.9px)
   pill. One rung up is 11.6px text in a 13.9px line box — still inside the pill,
   so the disc geometry is untouched. The -medium/-large size modifiers already
   read larger rungs. */
:root[data-viewport="phone"] .miniCalendar__day-dayNumberArea {
	font-size: var(--font-size-body);
}

/**
 * datePicker.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2020-04-09 Initial Version
 */

.datePicker__view {
	position: relative;
	cursor: pointer;
}

.datePicker__view-inverted {
	color: var(--text-on-brand);
}

.datePicker__miniCalendar {
	/* No `top` override — would hijack position-area's implicit inset. Anchor gap is the shared margin-block on __view. */
	background: var(--surface-page);
}

/* datePickerWithInput */

.datePickerWithInput__view {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: center;
	width: fit-content;
	justify-content: space-between;
	gap: var(--gap-stack);
}

/**
* headerWithSmallHeading.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.headerWithSmallHeading__view {
	display: grid;
	grid-template-rows: repeat(2, auto);
	grid-template-columns: 1fr;
	justify-content: start;
	height: fit-content;
	width: fit-content;
	gap: var(--gap-tight);
}

.headerWithSmallHeading__head {
	font-size: var(--font-size-label);
}

/**
* projectInfo.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.projectInfo__view {
	padding: var(--pad-card);
	display: grid;
	grid-template-areas: 'projectInfo__client projectInfo__projectDescription' 'projectInfo__compensation projectInfo__budget' 'projectInfo__timeLimit projectInfo__taxes' 'projectInfo__deadLine .';
	grid-gap: 3rem;
}

.projectInfo__client,
.projectInfo__projectDescription,
.projectInfo__budget,
.projectInfo__compensation,
.projectInfo__timeLimit,
.projectInfo__tax {
	border: var(--border-shorthand);
	border-radius: var(--radius-button);
	padding: var(--pad-card);
}

/* The three money tiles — tabular figures so the amounts read as a column
   across the grid rather than three independently-drifting strings. */
.projectInfo__budget,
.projectInfo__compensation,
.projectInfo__tax {
	font-variant-numeric: tabular-nums;
}

.projectInfo__client {
	grid-area: projectInfo__client;
	height: 100%;
	width: 100%;
}

.projectInfo__clientName {
	color: var(--text-accent);
	cursor: pointer;
	width: fit-content;
}

.projectInfo__projectDescription {
	grid-area: projectInfo__projectDescription;
	height: 100%;
	width: 100%;
}

.projectInfo__budget {
	grid-area: projectInfo__budget;
	height: 100%;
	width: 100%;
}

.projectInfo__compensation {
	grid-area: projectInfo__compensation;
	height: 100%;
	width: 100%;
}

.projectInfo__timeLimit {
	grid-area: projectInfo__timeLimit;
	height: 100%;
	width: 100%;
}

.projectInfo__deadLine {
	grid-area: projectInfo__deadLine;
	height: 100%;
	width: 100%;
}

.projectInfo__tax {
	grid-area: projectInfo__taxes;
	height: 100%;
	width: 100%;
}

.projectInfo__taxTile {
	display: flex;
}

.projectInfo__innerTaxContainer {}

/**
 * invoicePanel.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2020-04-17 Initial Version
 */

.invoicePanel__view {
	height: calc(100dvh - 15rem);
	width: 100%;
	background-color: var(--surface-card);
	display: grid;
	padding: var(--pad-page) 5rem; /* intentional literal: the printed document's fixed side gutter, not a UI spacing rung */
	gap: var(--gap-section);
	grid-template-rows: repeat(3, auto) 1fr;
}

.invoicePanel__addressLogo {
	display: flex;
	justify-content: space-between;
	align-items: center;
}

.invoicePanel__mainHeader {
	font-size: var(--font-size-display);
	color: var(--text-accent);
}

.invoicePanel__mainLogo {
	height: 8rem;
	width: 8rem;
	background-color: transparent;
	border-radius: var(--radius-avatar);
	-webkit-border-radius: var(--radius-avatar);
	-moz-border-radius: var(--radius-avatar);
}

.invoicePanel__invoiceNumberDate {
	display: flex;
	justify-content: space-between;
	padding: var(--pad-dense);
	background: var(--brand-accent);
	color: var(--text-on-brand);
}

.invoicePanel__addressBar {
	height: auto;
	display: flex;
}

.invoicePanel__addressBlock {
	width: 100%;
}

.invoicePanel__addressBlock__heading {
	color: var(--text-accent);
	font-family: var(--font-body);
	font-weight: var(--font-weight-body);
	font-size: var(--font-size-body);
	padding: var(--pad-dense);
}

.invoicePanel__addressBlock__content {
	display: flex;
	padding: var(--pad-dense);
}

.invoicePanel__Table-layout {
	display: grid;
	grid-template-columns: 12rem 1fr 10rem 10rem 10rem;
}

/* Table Header */

.invoicePanel__table__header__heading {
	background: var(--brand-accent);
	color: var(--text-on-brand);
	width: 100%;
	height: fit-content;
	padding: 1rem 1.5rem; /* intentional literal: printed-document clone half, see invoices.md */
	font-family: Helvetica, sans-serif;
	font-weight: 100;
	border-right: var(--border-shorthand);
	border-color: var(--text-on-brand);
}

.invoicePanel__table__header__heading:last-child {
	border: none;
}

.invoicePanel__table {
	display: grid;
	height: fit-content;
	gap: var(--gap-section)
}

/* Main Table */

.invoicePanel__mainTable {
	display: grid;
	height: fit-content;
}

.invoicePanel__mainTable__row {}

.invoicePanel__mainTable__row-cell {
	width: 100%;
	padding: 1rem .5rem; /* intentional literal: printed-document clone half, see invoices.md */
	font-weight: 100;
	border-right: var(--border-shorthand);
	border-bottom: var(--border-shorthand);
}

.invoicePanel__mainTable__row-cell:first-child {
	border-left: var(--border-shorthand);
}

.invoicePanel__mainTable__row-cell-alignLeft {
	text-align: left;
}

/* Totals */

.invoicePanel__totalsTable {
	width: 50%;
	margin: var(--gap-stack) 0 auto auto;
}

.invoicePanel__totalsTable__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: var(--pad-dense);
}

.invoicePanel__totalsTable__row__heading {
	color: var(--text-accent);
	font-family: var(--font-body);
	font-weight: var(--font-weight-body);
	font-size: var(--font-size-body);
}

.invoicePanel__totalsTable__row__value {
	font-family: var(--font-body);
	font-variant-numeric: tabular-nums;
}

/* Special Text */

.invoicePanel__specialText {
	text-align: justify;
}

/* Signature Area */

.invoicePanel__signatureArea {
	display: grid;
	grid-template-areas: 'invoicePanel__signatureArea_line invoicePanel__signatureArea_line' '. invoicePanel__signatureArea_name' '. invoicePanel__signatureArea_role';
	grid-template-rows: repeat(3, auto);
	grid-template-columns: 5rem 1fr;
	width: 50%;
	column-gap: 1.5rem; /* intentional literal: printed-document clone half, see invoices.md */
}

.invoicePanel__signatureArea__signatureLine {
	grid-area: invoicePanel__signatureArea_line;
	display: grid;
	grid-template-columns: auto 1fr;
	gap: .5rem; /* intentional literal: printed-document clone half, see invoices.md */
	margin-bottom: .5rem; /* intentional literal: printed-document clone half, see invoices.md */
}

.invoicePanel__signatureArea_name {
	grid-area: invoicePanel__signatureArea_name;
}

.invoicePanel__signatureArea_role {
	grid-area: invoicePanel__signatureArea_role;
}

/**
* invoiceTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.invoiceTile__view {
    display: grid;
    border: var(--border-shorthand);
    border-radius: var(--radius-button);
    padding: var(--pad-row);
    cursor: pointer;
}

.invoiceTile__statusChip {
    justify-self: start;
    padding: var(--pad-dense);
    border-radius: var(--radius-pill);
    font-size: var(--font-size-caption);
    background: var(--surface-sunken);
    color: var(--text-secondary);
}

.invoiceTile__statusChip-paid {
    background: var(--brand-primary);
    color: var(--text-on-brand);
}
.invoiceTile__statusChip-scheduled {
    background: var(--status-info);
    color: var(--text-on-status);
}

/**
 * invoiceTable.css
 * @author Jorge Pacheco <jorge.pacheco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2021-05-04 Initial Version 
 */

.invoiceTable__view {}

.invoiceTable__addressLogo {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.invoiceTable__mainHeader {
    font-size: 4rem;
    color: var(--text-accent);
}

.invoiceTable__mainLogo {
    height: 8rem;
    width: 8rem;
    border: .3rem solid var(--brand-primary);
    background-color: var(--surface-raised);
    border-radius: var(--radius-avatar);
    -webkit-border-radius: var(--radius-avatar);
    -moz-border-radius: var(--radius-avatar);
}

.invoiceTable__invoiceNumberDate {
    display: flex;
    justify-content: space-between;
    padding: .5rem;
    background: var(--brand-accent);
    color: var(--text-on-brand);
}

.invoiceTable__addressBar {
    height: auto;
    display: flex;
}

.invoiceTable__addressBlock {
    width: 100%;
}

.invoiceTable__addressBlock__heading {
    color: var(--text-accent);
    font-family: Helvetica, sans-serif;
    font-weight: 100;
    font-size: 1.4rem;
    padding: .5rem;
}

.invoiceTable__addressBlock__content {
    display: flex;
    padding: .5rem;
}

.invoiceTable__Heading {
    text-align: left;
    color: var(--text-accent);
    margin-bottom: var(--gap-dense);
}

.invoiceTable__Table-layout {
    display: grid;
    grid-template-columns: 12rem 1fr 10rem 10rem 10rem;
}

/* Table Header */

.invoiceTable__table__header {
}

.invoiceTable__table__header__heading {
    background: var(--brand-accent);
    color: var(--text-on-brand);
    width: 100%;
    height: fit-content;
    padding: var(--pad-dense) var(--pad-card);
    font-family: var(--font-body);
    font-weight: var(--font-weight-body);
    border-right: var(--border-shorthand);
    border-color: var(--text-on-brand);
}

.invoiceTable__table__header__heading:last-child {
    border: none;
}

.invoiceTable__table {
    display: grid;
    height: fit-content;
}

/* Main Table */

.invoiceTable__mainTable {
    display: grid;
    height: fit-content;
}

.invoiceTable__mainTable__row {}

.invoiceTable__mainTable__row-cell {
    width: 100%;
    padding: var(--pad-dense);
    font-family: var(--font-body);
    font-variant-numeric: tabular-nums;
    font-weight: var(--font-weight-body);
    border-right: var(--border-shorthand);
    border-bottom: var(--border-shorthand);
}

.invoiceTable__mainTable__row-cell:first-child {
    border-left: var(--border-shorthand);
}

.invoiceTable__mainTable__row-cell-alignLeft {
    text-align: left;
}

/* Totals */

.invoiceTable__totalsTable {
    width: 50%;
    margin: 1rem 0 auto auto;
}

.invoiceTable__totalsTable__row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .5rem;
}

.invoiceTable__totalsTable__row__heading {
    color: var(--text-accent);
    font-family: Helvetica, sans-serif;
    font-weight: 100;
    font-size: 1.4rem;
}

.invoiceTable__totalsTable__row__value {}

/* Special Text */

.invoiceTable__specialText {
    text-align: justify;
}

/* Signature Area */

.invoiceTable__signatureArea {
    display: grid;
    grid-template-areas: 'invoice__signatureArea_line invoice__signatureArea_line''. invoice__signatureArea_name''. invoice__signatureArea_role';
    grid-template-rows: repeat(3, auto);
    grid-template-columns: 5rem 1fr;
    width: 50%;
    column-gap: 1.5rem;
}

.invoiceTable__signatureArea__signatureLine {
    grid-area: invoice__signatureArea_line;
    display: grid;
    grid-template-columns: auto 1fr;
    gap: .5rem;
    margin-bottom: .5rem;
}

.invoiceTable__signatureArea_name {
    grid-area: invoice__signatureArea_name;
}

.invoiceTable__signatureArea_role {
    grid-area: invoice__signatureArea_role;
}
/**
* invoiceCartIcon.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-21 Initial Version (invoice payer flow)
*/

.invoiceCartIcon__view {
	display: flex;
	align-items: center;
	justify-content: center;
}

.invoiceCartIcon__view-hidden {
	display: none;
}

.invoiceCartIcon__icon {
	height: 2.5rem;
	color: var(--text-secondary);
}

.invoiceCartIcon__list {
	display: grid;
	gap: var(--gap-stack);
	align-content: start;
	padding: var(--pad-page);
}

.invoiceCartIcon__listHeading {
	margin-bottom: var(--gap-stack);
}

.invoiceCartIcon__entry {
	display: grid;
	grid-template-columns: 1fr auto;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-card);
	border-radius: var(--radius-button);
	background: var(--surface-sunken);
}

.invoiceCartIcon__entryInfo {
	display: grid;
	gap: var(--gap-dense);
}

.invoiceCartIcon__entrySeller {
	font-weight: bold;
}

.invoiceCartIcon__entryDate {
	color: var(--text-secondary);
}

.invoiceCartIcon__entryActions {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .invoiceCartIcon__view .icon__view {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

/**
* registerPaymentDialog.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-21 Initial Version (invoice payer flow)
*/

.registerPaymentDialog__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	max-width: 40rem;
}

.registerPaymentDialog__remaining {
	color: var(--text-secondary);
}

.registerPaymentDialog__buttons {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

/**
* clientClaimChooser.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-21 Initial Version (invoice payer flow)
*/

.clientClaimChooser__view {
	display: grid;
	gap: var(--gap-stack);
	max-width: 46rem;
}

.clientClaimChooser__copy {
	color: var(--text-secondary);
}

.clientClaimChooser__entityPicker {
	display: grid;
	gap: var(--gap-dense);
}

.clientClaimChooser__entityPickerLabel {
	color: var(--text-secondary);
}

.clientClaimChooser__entityList {
	display: grid;
	gap: var(--gap-dense);
	max-height: 24rem;
}

.clientClaimChooser__entityOption {
	padding: var(--pad-row);
	border: var(--border-shorthand);
	border-radius: var(--radius-button);
	cursor: pointer;
}

.clientClaimChooser__entityOption:hover {
	background: var(--surface-hover);
}

:root[data-viewport="phone"] .clientClaimChooser__entityOption,
:root[data-viewport="phone"] .clientClaimChooser__rejectButton {
	min-height: var(--touch-target-primary);
}

.clientClaimChooser__newEntityPanel {
	display: flex;
	flex-direction: column;
	width: min(96rem, calc(100dvw - 2 * var(--pad-page)));
	max-height: calc(100dvh - 8rem);
	padding: var(--pad-sheet);
	border-radius: var(--radius-sheet);
}

:root[data-viewport="phone"] .clientClaimChooser__newEntityPanel {
	position: absolute;
	/* intentional literal: cancels the dialog's .floatingPanel-expanded__top 5rem offset so the sheet hangs from the phone viewport's top edge */
	top: -5rem;
	width: 100dvw;
	max-height: 100dvh;
	padding: var(--pad-page);
	border-radius: 0;
}

/**
* receivedInvoiceTile.css — the received-invoices tile (#2271). Dense data
* surface: --pad-dense / --gap-dense + --line-height-tight per the density
* exception in knowledge-base/style/tokens.md, the TaskTile register.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-22 Initial Version (#1973/#1979)
*/

.receivedInvoiceTile__view {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	grid-template-areas:
		'receivedInvoiceTile_figure receivedInvoiceTile_seller receivedInvoiceTile_total'
		'receivedInvoiceTile_figure receivedInvoiceTile_meta receivedInvoiceTile_chip';
	align-items: center;
	column-gap: var(--gap-inline);
	row-gap: var(--gap-hairline);
	padding: var(--pad-dense);
	line-height: var(--line-height-tight);
	cursor: pointer;
}

.receivedInvoiceTile__view-selected {
	border-color: var(--brand-accent);
}

.receivedInvoiceTile__figure {
	grid-area: receivedInvoiceTile_figure;
	align-self: center;
}

.receivedInvoiceTile__seller {
	grid-area: receivedInvoiceTile_seller;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-weight: var(--font-weight-medium);
}

.receivedInvoiceTile__total {
	grid-area: receivedInvoiceTile_total;
	justify-self: end;
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
}

.receivedInvoiceTile__meta {
	grid-area: receivedInvoiceTile_meta;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: var(--gap-inline);
	row-gap: var(--gap-hairline);
	min-width: 0;
	color: var(--text-secondary);
}

.receivedInvoiceTile__remaining {
	color: var(--text-warning);
	font-variant-numeric: tabular-nums;
}

.receivedInvoiceTile__statusChip {
	grid-area: receivedInvoiceTile_chip;
	justify-self: end;
}

:root[data-viewport="phone"] .receivedInvoiceTile__view {
	min-height: var(--touch-target-primary);
}

/**
* dropdown.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-03-04 Initial Version
*/

.dropdown__view {
	--dropdown-arrow-width: 1.5rem;
	--dropdown-option-size: var(--font-size-body);
	--dropdown-check-size: 1.4rem;
	--dropdown-control-height: var(--control-height-medium);
	display: flex;
	align-items: center;
	box-sizing: border-box;
	min-height: var(--dropdown-control-height);
	width: 100%;
	min-width: 0;
	position: relative;
	cursor: pointer;
	border-radius: var(--radius-input);
	background: var(--surface-sunken);

	.loadingPlaceholder {
		display: block;
		width: 100%;
		height: auto;
		align-self: stretch;
	}
}

.dropdown__view-smaller {
	--dropdown-arrow-width: 1rem;
	--dropdown-option-size: var(--font-size-label);
	--dropdown-check-size: 1rem;
	--dropdown-control-height: var(--control-height-smaller);
}

.dropdown__view-small {
	--dropdown-control-height: var(--control-height-small);
	--dropdown-arrow-width: 1.2rem;
	--dropdown-option-size: var(--font-size-caption);
	--dropdown-check-size: 1.2rem;
}

.dropdown__view-large {
	--dropdown-control-height: var(--control-height-large);
	--dropdown-arrow-width: 2rem;
	--dropdown-option-size: var(--font-size-lead);
	--dropdown-check-size: 1.6rem;
}

.dropdown__view-larger {
	--dropdown-control-height: var(--control-height-larger);
	--dropdown-arrow-width: 2.5rem;
	--dropdown-option-size: var(--font-size-subheading);
	--dropdown-check-size: 1.8rem;
}

.dropdown__frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	border: var(--border-shorthand);
	border-radius: var(--radius-input);
	transition: clip-path var(--motion-base) var(--ease-standard) var(--motion-fast), border-color var(--motion-fast) var(--ease-standard);
}

.dropdown__frame::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow: var(--elevation-inset);
}

.dropdown__frame-open {
	transition: clip-path var(--motion-base) var(--ease-standard) 0s, border-color var(--motion-fast) var(--ease-standard);
}

.dropdown__view:hover .dropdown__frame {
	border-color: var(--border-strong);
}

.dropdown__view:has(.dropdown__headingArea[aria-expanded="true"]) .dropdown__frame {
	border-color: var(--brand-primary);
}

.dropdown__view:has(.dropdown__headingArea-disabled) .dropdown__frame {
	border-color: var(--border-default);
}

.dropdown__view:has(.dropdown__headingArea-disabled) {
	cursor: not-allowed;
}

.dropdown__view:has(.loadingPlaceholder) .dropdown__frame {
	border: none;
}

.dropdown__view:has(.loadingPlaceholder) .dropdown__frame::before {
	box-shadow: none;
}

.dropdown__view:has(.dropdown__headingArea:focus-visible) .dropdown__frame {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--focus-ring-color);
}

.dropdown__headingArea:focus-visible {
	outline: none;
}

.dropdown__placeholderNode {
	position: absolute;
	left: var(--pad-input-inline);
	right: calc(var(--pad-input-inline) + var(--gap-inline) + var(--dropdown-arrow-width));
	top: 50%;
	translate: 0 -50%;
	transition: top var(--motion-base) var(--ease-standard), left var(--motion-base) var(--ease-standard), right var(--motion-base) var(--ease-standard), font-size var(--motion-base) var(--ease-standard), translate var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
	line-height: 1.1;
	text-align: start;
	color: var(--text-secondary);
	overflow: hidden;
	display: flex;
	align-items: baseline;
	pointer-events: none;
}

.dropdown__placeholderText {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.dropdown__placeholderNode-shrunk {
	top: 0;
	left: 1.5rem;
	right: 2rem;
	font-size: var(--font-size-label);
	transition: top var(--motion-base) var(--ease-standard) var(--motion-fast), left var(--motion-base) var(--ease-standard) var(--motion-fast), right var(--motion-base) var(--ease-standard) var(--motion-fast), font-size var(--motion-base) var(--ease-standard) var(--motion-fast), translate var(--motion-base) var(--ease-standard) var(--motion-fast), color var(--motion-fast) var(--ease-standard);
}

.dropdown__view:has(.dropdown__headingArea[aria-expanded="true"]) .dropdown__placeholderNode-shrunk {
	color: var(--text-brand);
}

.dropdown__placeholderNodeProxy {
	opacity: 0;
	position: fixed;
	font-size: var(--font-size-label);
}

.dropdown__required {
	color: var(--text-danger);
	margin-left: var(--gap-hairline);
	flex: none;
}

.dropdown__headingArea {
	width: 100%;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: 0 var(--pad-input-inline);
	box-sizing: border-box;
}

.dropdown__headingArea-disabled {
	opacity: .5;
	cursor: not-allowed;
	pointer-events: none;
}

.dropdown__placeholder {
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	text-align: start;
	font-family: var(--font-body);
	font-size: var(--dropdown-option-size);
	font-weight: var(--font-weight-body);
	letter-spacing: var(--letter-spacing-body);
	line-height: var(--line-height-body);
}

.dropdown__arrow {
	color: var(--text-secondary);
	transition: rotate var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.dropdown__view:has(.dropdown__headingArea[aria-expanded="true"]) .dropdown__arrow {
	rotate: 180deg;
	color: var(--text-primary);
}

.dropdown__dropdown {
	display: none;
	width: 100%;
}

.dropdown__view .dropdown__panel {
	width: var(--dropdown-field-width, auto);
	min-width: 16rem;
	max-width: calc(100dvw - 2 * var(--pad-page));
	background-color: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	border-radius: var(--menu-radius);
	border: var(--border-width) solid var(--menu-border-color);
}

.dropdown__panel .floatingExpandablePanel__expandArea {
	border-radius: var(--menu-radius);
}

@supports (width: anchor-size(width)) {
	.dropdown__view .dropdown__panel {
		width: anchor-size(width);
	}
}

.dropdown__expandedArea {
	height: 100%;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	padding: 0;
	box-sizing: border-box;
}

.dropdown__searchbar {
	margin: 0 0 var(--gap-hairline);
	padding: var(--pad-cell) var(--pad-dense);
	border-bottom: var(--border-width) solid var(--menu-border-color);
	transition: box-shadow var(--motion-fast) var(--ease-standard);
}

.dropdown__view .dropdown__searchbar .searchBar {
	background: transparent;
	border: none;
	box-shadow: none;
	border-radius: 0;
	outline: none;
	padding-left: 0;
	font-size: var(--dropdown-option-size);
}

.dropdown__searchbar:has(.searchBar:focus-visible) {
	box-shadow: inset 0 calc(-1 * var(--focus-ring-width)) 0 var(--focus-ring-color);
}

.dropdown__scrollArea {
	height: 100%;
	padding: var(--gap-hairline) 0;
}

.dropdown__option {
	display: block;
	position: relative;
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	padding: var(--pad-cell) calc(var(--pad-dense) + var(--dropdown-check-size) + var(--gap-inline)) var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-button);
	font-family: var(--font-body);
	font-size: var(--dropdown-option-size);
	font-weight: var(--font-weight-body);
	letter-spacing: var(--letter-spacing-body);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
	text-align: start;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard);
}

.dropdown__check {
	position: absolute;
	right: var(--pad-dense);
	top: 50%;
	translate: 0 -50%;
	width: var(--dropdown-check-size);
	height: var(--dropdown-check-size);
	color: var(--menu-check-ink);
	pointer-events: none;
	opacity: 0;
	scale: .6;
	transition: opacity var(--motion-fast) var(--ease-standard), scale var(--motion-base) var(--ease-enter);
}

.dropdown__option[aria-selected="true"] > .dropdown__check {
	opacity: 1;
	scale: 1;
}

.dropdown__option:hover,
.dropdown__currentOption {
	background-color: var(--menu-option-hover);
}

.dropdown__currentOption {
	box-shadow: inset 0 0 0 var(--border-width) var(--focus-ring-color);
}

.dropdown__scrollArea:not([aria-multiselectable="true"]) .dropdown__option[aria-selected="true"]:not(.dropdown__option-placeholder) {
	background-color: var(--menu-option-selected);
	font-weight: var(--font-weight-medium);
}


.dropdown__scrollArea[aria-multiselectable="true"] .dropdown__option {
	padding-left: calc(var(--pad-dense) + var(--dropdown-check-size) + var(--gap-inline));
	padding-right: var(--pad-dense);
}

.dropdown__scrollArea[aria-multiselectable="true"] .dropdown__option::before {
	content: '';
	position: absolute;
	left: var(--pad-dense);
	top: 50%;
	translate: 0 -50%;
	width: var(--dropdown-check-size);
	height: var(--dropdown-check-size);
	box-sizing: border-box;
	border: var(--border-width) solid var(--border-strong);
	border-radius: var(--radius-dense);
	background-color: var(--menu-surface);
	transition: border-color var(--motion-fast) var(--ease-standard);
}

.dropdown__scrollArea[aria-multiselectable="true"] .dropdown__option > .dropdown__check {
	left: var(--pad-dense);
	right: auto;
	scale: .55;
}

.dropdown__scrollArea[aria-multiselectable="true"] .dropdown__option[aria-selected="true"]::before {
	border-color: var(--menu-check-ink);
}

.dropdown__scrollArea[aria-multiselectable="true"] .dropdown__option[aria-selected="true"] > .dropdown__check {
	scale: .8;
}

.dropdown__option-placeholder {
	color: var(--text-secondary);
	font-style: italic;
}

.dropdown__scrollArea[aria-multiselectable="true"] .dropdown__option-placeholder {
	padding-left: var(--pad-dense);
	margin-bottom: var(--gap-hairline);
	border-bottom: var(--border-width) solid var(--menu-border-color);
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}

.dropdown__view > .dropdown__option-placeholder {
	padding: 0 var(--pad-input-inline);
	align-self: stretch;
	display: flex;
	align-items: center;
	border-radius: var(--radius-input);
	box-shadow: inset 0 0 0 var(--border-width) var(--border-default);
	cursor: default;
}

.dropdown__view > .dropdown__option-placeholder:hover {
	background-color: transparent;
}

.dropdown__option-placeholder::before,
.dropdown__option-placeholder > .dropdown__check {
	display: none;
}

.dropdown__empty {
	margin: 0;
	padding: var(--pad-row) var(--pad-dense);
	font-family: var(--font-body);
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-body);
	letter-spacing: var(--letter-spacing-body);
	color: var(--text-secondary);
	text-align: start;
}

:root[data-viewport="phone"] {

	.dropdown__view,
	.dropdown__option-placeholder,
	.dropdown__option {
		min-height: var(--touch-target-primary);
	}

	.dropdown__placeholderNode-shrunk,
	.dropdown__placeholderNodeProxy {
		font-size: var(--font-size-caption);
	}
}

/**
* endlessDropdown.css
* @author Louis Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-Jul-13 Initial Version
*/

.endlessDropdown__view {
	--endlessDropdown-arrow-width: 1.5rem;
	--endlessDropdown-option-size: var(--font-size-body);
	--endlessDropdown-check-size: 1.4rem;
	--endlessDropdown-control-height: var(--control-height-medium);
	display: flex;
	align-items: center;
	box-sizing: border-box;
	min-height: var(--endlessDropdown-control-height);
	width: 100%;
	min-width: 0;
	position: relative;
	cursor: pointer;
	border-radius: var(--radius-input);
	background: var(--surface-sunken);
}

.endlessDropdown__view-smaller {
	--endlessDropdown-arrow-width: 1rem;
	--endlessDropdown-option-size: var(--font-size-label);
	--endlessDropdown-check-size: 1rem;
	--endlessDropdown-control-height: var(--control-height-smaller);
}

.endlessDropdown__view-small {
	--endlessDropdown-control-height: var(--control-height-small);
	--endlessDropdown-arrow-width: 1.2rem;
	--endlessDropdown-option-size: var(--font-size-caption);
	--endlessDropdown-check-size: 1.2rem;
}

.endlessDropdown__view-large {
	--endlessDropdown-control-height: var(--control-height-large);
	--endlessDropdown-arrow-width: 2rem;
	--endlessDropdown-option-size: var(--font-size-lead);
	--endlessDropdown-check-size: 1.6rem;
}

.endlessDropdown__view-larger {
	--endlessDropdown-control-height: var(--control-height-larger);
	--endlessDropdown-arrow-width: 2.5rem;
	--endlessDropdown-option-size: var(--font-size-subheading);
	--endlessDropdown-check-size: 1.8rem;
}

.endlessDropdown__frame {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	border: var(--border-shorthand);
	border-radius: var(--radius-input);
	transition: clip-path var(--motion-base) var(--ease-standard) var(--motion-fast), border-color var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__frame::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow: var(--elevation-inset);
}

.endlessDropdown__frame-open {
	transition: clip-path var(--motion-base) var(--ease-standard) 0s, border-color var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__view:hover .endlessDropdown__frame {
	border-color: var(--border-strong);
}

.endlessDropdown__view:has(.endlessDropdown__headingArea[aria-expanded="true"]) .endlessDropdown__frame {
	border-color: var(--brand-primary);
}

.endlessDropdown__view:has(.endlessDropdown__headingArea-disabled) .endlessDropdown__frame {
	border-color: var(--border-default);
}

.endlessDropdown__view:has(.endlessDropdown__headingArea-disabled) {
	cursor: not-allowed;
}

.endlessDropdown__view:has(.endlessDropdown__headingArea:focus-visible) .endlessDropdown__frame {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--focus-ring-color);
}

.endlessDropdown__headingArea:focus-visible {
	outline: none;
}

.endlessDropdown__placeholderNode {
	position: absolute;
	left: var(--pad-input-inline);
	right: calc(var(--pad-input-inline) + var(--gap-inline) + var(--endlessDropdown-arrow-width));
	top: 50%;
	translate: 0 -50%;
	transition: top var(--motion-base) var(--ease-standard), left var(--motion-base) var(--ease-standard), right var(--motion-base) var(--ease-standard), font-size var(--motion-base) var(--ease-standard), translate var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
	line-height: 1.1;
	text-align: start;
	color: var(--text-secondary);
	overflow: hidden;
	display: flex;
	align-items: baseline;
	pointer-events: none;
}

.endlessDropdown__placeholderText {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.endlessDropdown__placeholderNode-shrunk {
	top: 0;
	left: 1.5rem;
	right: 2rem;
	font-size: var(--font-size-label);
	transition: top var(--motion-base) var(--ease-standard) var(--motion-fast), left var(--motion-base) var(--ease-standard) var(--motion-fast), right var(--motion-base) var(--ease-standard) var(--motion-fast), font-size var(--motion-base) var(--ease-standard) var(--motion-fast), translate var(--motion-base) var(--ease-standard) var(--motion-fast), color var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__view:has(.endlessDropdown__headingArea[aria-expanded="true"]) .endlessDropdown__placeholderNode-shrunk {
	color: var(--text-brand);
}

.endlessDropdown__placeholderNodeProxy {
	opacity: 0;
	position: fixed;
	font-size: var(--font-size-label);
}

.endlessDropdown__required {
	color: var(--text-danger);
	margin-left: var(--gap-hairline);
	flex: none;
}

.endlessDropdown__headingArea {
	width: 100%;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: 0 var(--pad-input-inline);
	box-sizing: border-box;
}

.endlessDropdown__headingArea-disabled {
	opacity: .5;
	cursor: not-allowed;
	pointer-events: none;
}

.endlessDropdown__placeholder {
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	text-align: start;
	font-family: var(--font-body);
	font-size: var(--endlessDropdown-option-size);
	font-weight: var(--font-weight-body);
	letter-spacing: var(--letter-spacing-body);
	line-height: var(--line-height-body);
}

.endlessDropdown__arrow {
	color: var(--text-secondary);
	transition: rotate var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__view:has(.endlessDropdown__headingArea[aria-expanded="true"]) .endlessDropdown__arrow {
	rotate: 180deg;
	color: var(--text-primary);
}

.endlessDropdown__nativeSelect {
	display: none;
}

.endlessDropdown__view .endlessDropdown__panel {
	width: var(--endlessDropdown-field-width, auto);
	min-width: 16rem;
	max-width: calc(100dvw - 2 * var(--pad-page));
	background-color: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	border-radius: var(--menu-radius);
	border: var(--border-width) solid var(--menu-border-color);
}

.endlessDropdown__panel .floatingExpandablePanel__expandArea {
	border-radius: var(--menu-radius);
}

@supports (width: anchor-size(width)) {
	.endlessDropdown__view .endlessDropdown__panel {
		width: anchor-size(width);
	}
}

.endlessDropdown__expandedArea {
	height: 100%;
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	padding: 0;
	box-sizing: border-box;
}

.endlessDropdown__toggleBar {
	width: min-content;
	justify-self: end;
	margin: var(--pad-cell) var(--pad-dense) 0;
}

.endlessDropdown__listArea {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.endlessDropdown__bucket {
	max-height: 26rem;
}

.endlessDropdown__bucket .endlessBucket__list,
.endlessDropdown__bucket .endlessBucket__firstLoadSkeleton {
	gap: 0;
}

.endlessDropdown__clearOption {
	flex: none;
	color: var(--text-secondary);
	font-style: italic;
	margin-bottom: var(--gap-hairline);
	border-bottom: var(--border-width) solid var(--menu-border-color);
	border-bottom-left-radius: 0;
	border-bottom-right-radius: 0;
}

.endlessDropdown__clearOption > .endlessDropdown__check {
	display: none;
}

.endlessDropdown__searchbar {
	margin: 0 0 var(--gap-hairline);
	padding: var(--pad-cell) var(--pad-dense);
	border-bottom: var(--border-width) solid var(--menu-border-color);
	transition: box-shadow var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__view .endlessDropdown__searchbar .searchBar {
	background: transparent;
	border: none;
	box-shadow: none;
	border-radius: 0;
	outline: none;
	padding-left: 0;
	font-size: var(--endlessDropdown-option-size);
}

.endlessDropdown__searchbar:has(.searchBar:focus-visible) {
	box-shadow: inset 0 calc(-1 * var(--focus-ring-width)) 0 var(--focus-ring-color);
}

.endlessDropdown__option {
	display: block;
	position: relative;
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	padding: var(--pad-cell) calc(var(--pad-dense) + var(--endlessDropdown-check-size) + var(--gap-inline)) var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-button);
	font-family: var(--font-body);
	font-size: var(--endlessDropdown-option-size);
	font-weight: var(--font-weight-body);
	letter-spacing: var(--letter-spacing-body);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
	text-align: start;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__check {
	position: absolute;
	right: var(--pad-dense);
	top: 50%;
	translate: 0 -50%;
	width: var(--endlessDropdown-check-size);
	height: var(--endlessDropdown-check-size);
	color: var(--menu-check-ink);
	pointer-events: none;
	opacity: 0;
	scale: .6;
	transition: opacity var(--motion-fast) var(--ease-standard), scale var(--motion-base) var(--ease-enter);
}

.endlessDropdown__option[aria-selected="true"] > .endlessDropdown__check {
	opacity: 1;
	scale: 1;
}

.endlessDropdown__option:hover,
.endlessDropdown__currentOption {
	background-color: var(--menu-option-hover);
}

.endlessDropdown__currentOption {
	box-shadow: inset 0 0 0 var(--border-width) var(--focus-ring-color);
}

.endlessDropdown__bucket:not([aria-multiselectable="true"]) .endlessDropdown__option[aria-selected="true"] {
	background-color: var(--menu-option-selected);
	font-weight: var(--font-weight-medium);
}


.endlessDropdown__bucket[aria-multiselectable="true"] .endlessDropdown__option {
	padding-left: calc(var(--pad-dense) + var(--endlessDropdown-check-size) + var(--gap-inline));
	padding-right: var(--pad-dense);
}

.endlessDropdown__bucket[aria-multiselectable="true"] .endlessDropdown__option::before {
	content: '';
	position: absolute;
	left: var(--pad-dense);
	top: 50%;
	translate: 0 -50%;
	width: var(--endlessDropdown-check-size);
	height: var(--endlessDropdown-check-size);
	box-sizing: border-box;
	border: var(--border-width) solid var(--border-strong);
	border-radius: var(--radius-dense);
	background-color: var(--menu-surface);
	transition: border-color var(--motion-fast) var(--ease-standard);
}

.endlessDropdown__bucket[aria-multiselectable="true"] .endlessDropdown__option > .endlessDropdown__check {
	left: var(--pad-dense);
	right: auto;
	scale: .55;
}

.endlessDropdown__bucket[aria-multiselectable="true"] .endlessDropdown__option[aria-selected="true"]::before {
	border-color: var(--menu-check-ink);
}

.endlessDropdown__bucket[aria-multiselectable="true"] .endlessDropdown__option[aria-selected="true"] > .endlessDropdown__check {
	scale: .8;
}

:root[data-viewport="phone"] {

	.endlessDropdown__view,
	.endlessDropdown__option {
		min-height: var(--touch-target-primary);
	}

	.endlessDropdown__placeholderNode-shrunk,
	.endlessDropdown__placeholderNodeProxy {
		font-size: var(--font-size-caption);
	}
}

/**
* entityImageAndName.css
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-17 Initial Version
*/

.entityImageAndName__view {
	--lockup-plate: 10rem;
	display: flex;
	align-items: center;
	position: relative;
	gap: var(--gap-stack);
	min-width: 0;
}

.entityImageAndName__view-small {
	--lockup-plate: 8rem;
	align-items: flex-start;
	height: 100%;
}

.entityImageAndName__view-large {
	--lockup-plate: 13rem;
}

.entityImageAndName__imageNode {
	position: relative;
	flex: none;
	width: var(--lockup-plate);
	height: var(--lockup-plate);
	padding: 0;
	border-radius: var(--radius-card);
	transition: border-radius var(--motion-base) var(--ease-standard);
}

.entityImageAndName__name,
.entityImageAndName__name-reverse {
	margin: 0;
	min-width: 0;
	text-align: start;
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
	letter-spacing: var(--letter-spacing-display);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.entityImageAndName__view-small .entityImageAndName__name,
.entityImageAndName__view-small .entityImageAndName__name-reverse {
	display: block;
	align-content: center;
	align-self: stretch;
	margin-top: calc(var(--lockup-plate) / 2);
	font-size: var(--font-size-heading);
}

:root[data-viewport="phone"] .entityImageAndName__view {
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .entityImageAndName__view-small {
	--lockup-plate: 6.4rem;
}

:root[data-viewport="phone"] .entityImageAndName__view-small .entityImageAndName__name,
:root[data-viewport="phone"] .entityImageAndName__view-small .entityImageAndName__name-reverse {
	font-size: var(--font-size-lead);
}

/**
* profileImageExpander.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version (#2222) — the frame's own box; the frame, image and tray rules keep their `entityImageAndName__*` names in entityImageAndName.css (theme slot-3 claims and journeys select them)
*/

.profileImageExpander__view {
	display: flex;
	flex: none;
}

.profileImageExpander__lightbox {
	position: fixed;
	inset: 0;
	width: 100dvw;
	height: 100dvh;
	max-width: none;
	max-height: none;
	margin: 0;
	padding: var(--pad-shell);
	border: 0;
	background-color: transparent;
	color: var(--text-primary);
	overflow: hidden;
}

.profileImageExpander__lightbox[open] {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: minmax(0, 1fr) auto;
	justify-items: center;
	align-items: center;
}

.profileImageExpander__lightbox::backdrop {
	background-color: var(--surface-overlay);
	backdrop-filter: var(--surface-blur);
	-webkit-backdrop-filter: var(--surface-blur);
	transition: opacity var(--motion-slow) var(--ease-standard);
}

@starting-style {
	.profileImageExpander__lightbox[open]::backdrop {
		opacity: 0;
	}
}

.profileImageExpander__lightbox-landing::backdrop {
	opacity: 0;
	transition-delay: var(--motion-fast);
}

.profileImageExpander__close {
	position: absolute;
	top: var(--pad-page);
	right: var(--pad-page);
	z-index: 1;
	display: grid;
	place-items: center;
	width: max(4rem, var(--touch-target-primary));
	height: max(4rem, var(--touch-target-primary));
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	background-color: var(--surface-card);
	color: var(--text-primary);
	fill: currentColor;
	box-shadow: var(--elevation-overlay);
	cursor: pointer;
	transition: opacity var(--motion-slow) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), scale var(--motion-fast) var(--ease-standard);
}

@starting-style {
	.profileImageExpander__lightbox[open] .profileImageExpander__close {
		opacity: 0;
	}
}

.profileImageExpander__lightbox-landing .profileImageExpander__close {
	opacity: 0;
}

.profileImageExpander__close:focus-visible {
	background-color: var(--surface-hover);
}

@media (hover: hover) {
	.profileImageExpander__close:hover {
		background-color: var(--surface-hover);
		scale: 1.04;
	}
}

.profileImageExpander__closeGlyph {
	width: 1.8rem;
	height: 1.8rem;
}

.profileImageExpander__step {
	position: absolute;
	top: 50%;
	z-index: 1;
	display: grid;
	place-items: center;
	width: var(--step-size);
	height: var(--step-size);
	padding: 0;
	translate: 0 -50%;
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	background-color: var(--surface-card);
	color: var(--text-primary);
	fill: currentColor;
	box-shadow: var(--elevation-overlay);
	cursor: pointer;
	transition: opacity var(--motion-slow) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), scale var(--motion-fast) var(--ease-standard);
}

@starting-style {
	.profileImageExpander__lightbox[open] .profileImageExpander__step {
		opacity: 0;
	}
}

.profileImageExpander__lightbox-landing .profileImageExpander__step,
.profileImageExpander__lightbox:has(.profileImagesScrollArea__view-single) .profileImageExpander__step {
	opacity: 0;
	pointer-events: none;
}

.profileImageExpander__lightbox:has(.profileImagesScrollArea__view-single) .profileImageExpander__step {
	visibility: hidden;
}

.profileImageExpander__step:focus-visible {
	background-color: var(--surface-hover);
}

@media (hover: hover) {
	.profileImageExpander__step:hover {
		background-color: var(--surface-hover);
		scale: 1.04;
	}
}

.profileImageExpander__stepGlyph {
	width: 2rem;
	height: 2rem;
}

.profileImageExpander__step-previous {
	left: 0;
}

.profileImageExpander__step-next {
	right: 0;
}

.profileImageExpander__step-previous .profileImageExpander__stepGlyph {
	transform: scaleX(-1);
}

.profileImageExpander__stage {
	--step-size: max(4.8rem, var(--touch-target-primary));
	container-type: size;
	position: relative;
	display: grid;
	place-items: center;
	width: 100%;
	height: 100%;
	min-height: 0;
	padding-inline: calc(var(--step-size) + var(--gap-stack));
}

.profileImageExpander__print,
.profileImageExpander__initials {
	border-radius: var(--radius-card);
	transform-origin: center;
	transition: transform calc(var(--motion-slow) * 2) var(--ease-emphasized), border-radius var(--motion-base) var(--ease-standard);
}

.profileImageExpander__initials {
	background-color: var(--surface-card);
	box-shadow: var(--elevation-overlay);
	outline: var(--border-width) solid var(--border-default);
	outline-offset: calc(-1 * var(--border-width));
}

.profileImageExpander__print {
	display: block;
	width: auto;
	height: min(100cqh, calc(100cqw * var(--print-ratio, 1)));
	object-fit: contain;
}

.profileImageExpander__initials {
	display: grid;
	place-items: center;
	height: min(100cqh, 100cqw);
	aspect-ratio: 1;
}

.profileImageExpander__ghost {
	position: absolute;
	pointer-events: none;
	transition: opacity var(--motion-base) var(--ease-standard);
}

.profileImageExpander__print[hidden],
.profileImageExpander__initials[hidden] {
	display: none;
}

.profileImageExpander__initialsHeading {
	width: 100%;
	height: 100%;
	padding: 0;
	border-radius: inherit;
	background-color: transparent;
	font-size: calc(var(--font-size-display) * 3); /* intentional literal: the stage initials scale the display rung to the print's size */
	font-weight: var(--font-weight-heading);
	letter-spacing: var(--letter-spacing-display);
}

:root[data-viewport="phone"] .profileImageExpander__lightbox {
	padding: var(--pad-page);
}

:root[data-viewport="phone"] .profileImageExpander__stage {
	--step-size: var(--touch-target-primary);
	padding-inline: 0;
}

:root[data-viewport="phone"] .profileImageExpander__step-previous {
	left: var(--gap-tight);
}

:root[data-viewport="phone"] .profileImageExpander__step-next {
	right: var(--gap-tight);
}

/**
 * hamburger.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2020-05-13 Initial Version 
 */

.hamburger__view {
    cursor: pointer;
    height: 3rem;
    width: 2rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    z-index: 2;
}

.hamburger__lines__top, .hamburger__lines__middle, .hamburger__lines__bottom {
    border-radius: var(--radius-card);
    height: .3rem;
    background-color: var(--brand-accent);
}

.hamburger__lines__top {
    width: 2rem;
    margin: -1rem auto auto auto; /* intentional literal: negative optical offset — no token expresses a negative space */
}

.hamburger__lines__middle {
    width: 1rem;
}

.hamburger__lines__bottom {
    width: 2rem;
    margin: var(--gap-stack) auto auto auto;
}

.hamburger__lines__middle-x {
    width: 0rem;
}

.hamburger__lines__top-x {
    transform: translateY(1.3rem) rotate(45deg);
}

.hamburger__lines__bottom-x {
    transform: translateY(-1.35rem) rotate(-45deg);
}
/**
 * TabHeaderBar.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2020-05-05 Initial Version
 */

.tabHeaderBar__view {
	--tabHeaderBar-rail-border-color: var(--border-default);
	--tabHeaderBar-indicator-background-color: var(--text-primary);
	--tabHeaderBar-indicator-thickness: .2rem;
	--tabHeaderBar-indicator-radius: var(--radius-pill);
	--tabHeaderBar-tab-color: var(--text-secondary);
	--tabHeaderBar-tab-hover-color: var(--text-primary);
	--tabHeaderBar-tab-selected-color: var(--text-primary);
	--tabHeaderBar-tab-hover-background-color: var(--surface-hover);
	--tabHeaderBar-tab-radius: var(--radius-button);
	position: relative;
	display: flex;
	height: fit-content;
	max-width: 100%;
	overflow: auto;
	scrollbar-width: none;
}

.tabHeaderBar__buttonSelector {
	display: flex;
	align-items: end;
	gap: var(--gap-tight);
	flex: 1 0 auto;
	border-bottom: var(--border-width) solid var(--tabHeaderBar-rail-border-color);
}

.tabHeaderBar__buttonSelector-vertical {
	flex-direction: column;
	align-items: stretch;
	border-bottom: none;
	border-left: var(--border-width) solid var(--tabHeaderBar-rail-border-color);
}

.tabHeaderBar__tab {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--gap-tight);
	white-space: nowrap;
	color: var(--tabHeaderBar-tab-color);
	font-weight: var(--font-weight-medium);
	background-color: transparent;
	border-radius: var(--tabHeaderBar-tab-radius);
	box-shadow: none;
	transition: all var(--motion-fast) var(--ease-standard);
}

.tabHeaderBar__buttonSelector-vertical .tabHeaderBar__tab {
	width: auto;
	justify-content: start;
}

.tabHeaderBar__tab:focus-visible {
	color: var(--tabHeaderBar-tab-hover-color);
	background-color: var(--tabHeaderBar-tab-hover-background-color);
	outline-offset: calc(-1 * var(--focus-ring-width));
}

@media (hover: hover) {
	.tabHeaderBar__tab:hover {
		color: var(--tabHeaderBar-tab-hover-color);
		background-color: var(--tabHeaderBar-tab-hover-background-color);
	}
}

.tabHeaderBar__tab:active {
	box-shadow: none;
}

.tabHeaderBar__tab[aria-selected='true'] {
	color: var(--tabHeaderBar-tab-selected-color);
}

.tabHeaderBar__tab-small {
	padding: var(--pad-cell) var(--pad-dense);
}

.tabHeaderBar__tab-medium {
	padding: var(--pad-dense) var(--pad-button);
}

.tabHeaderBar__tab-large {
	padding: var(--pad-row) var(--pad-button-inline);
}

.tabHeaderBar__indicator {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 1;
	height: var(--tabHeaderBar-indicator-thickness);
	margin-top: calc(-.5 * var(--tabHeaderBar-indicator-thickness));
	border-radius: var(--tabHeaderBar-indicator-radius);
	background-color: var(--tabHeaderBar-indicator-background-color);
	pointer-events: none;
	transition: all var(--motion-base) var(--ease-emphasized);
}

.tabHeaderBar__view-vertical .tabHeaderBar__indicator {
	height: auto;
	width: var(--tabHeaderBar-indicator-thickness);
	margin-top: 0;
	margin-left: calc(-.5 * var(--tabHeaderBar-indicator-thickness));
}

.tabHeaderBar__indicator-instant {
	transition-duration: 0s;
}

:root[data-viewport="phone"] .tabHeaderBar__tab {
	min-height: var(--touch-target-primary);
}

/**
* multiStepSlider.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-10 Initial Version
*/

.multiStepSlider__view {
	display: inline-flex;
	flex-direction: column;
	gap: var(--gap-tile);
}

.multiStepSlider__track {
	position: relative;
	display: flex;
	align-items: stretch;
	justify-content: center;
	min-width: var(--touch-target-minimum);
	cursor: pointer;
	border-radius: var(--radius-card);
}

:root[data-viewport="phone"] .multiStepSlider__track {
	min-height: var(--touch-target-minimum);
}

.multiStepSlider__stop {
	flex: 1 0 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	position: relative;
	user-select: none;
	cursor: pointer;
}

.multiStepSlider__knob {
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 0;
	border-radius: var(--radius-card);
	transition: all var(--transition-base), left 0s, width 0s;
	z-index: 0;
}

.multiStepSlider__view-text .multiStepSlider__track-text {
	background-color: var(--surface-sunken);
	padding: 0.3rem; /* intentional literal: coupled to .multiStepSlider__knob's matching 0.3rem inset — the knob must sit exactly inside the track padding */
}

.multiStepSlider__view-text .multiStepSlider__stop {
	padding: var(--pad-cell) var(--pad-card);
	color: var(--text-secondary);
	overflow: hidden;
	max-width: 12rem;
}

.multiStepSlider__view-text .multiStepSlider__stop-selected {
	color: var(--text-on-brand);
}

.multiStepSlider__view-text .multiStepSlider__stopLabel {
	font-weight: bold;
	letter-spacing: 0.02em;
	color: inherit;
	white-space: nowrap;
}

.multiStepSlider__view-text .multiStepSlider__knob {
	top: 0.3rem;
	bottom: 0.3rem;
	background-color: var(--brand-primary);
	box-shadow: var(--elevation-raised);
}

.multiStepSlider__view-icons {
	--multiStepSlider-stop-color: var(--text-secondary);
	--multiStepSlider-stop-hover-color: var(--text-primary);
	--multiStepSlider-stop-selected-color: var(--text-primary);
}

.multiStepSlider__view-icons .multiStepSlider__track-icons {
	gap: var(--gap-tile);
	padding: var(--pad-cell);
	transition: all 0.25s ease;
}

.multiStepSlider__view-icons.multiStepSlider__view-collapsed .multiStepSlider__track-icons {
	padding: 0 var(--pad-cell);
}

.multiStepSlider__view-icons .multiStepSlider__knob {
	display: none;
}

.multiStepSlider__view-icons .multiStepSlider__stop {
	color: var(--multiStepSlider-stop-color);
	overflow: hidden;
	max-width: 4rem;
	transition: color 0.15s ease, max-width 0.25s ease, opacity 0.2s ease, padding 0.25s ease;
}

.multiStepSlider__view-icons .multiStepSlider__stop:hover {
	color: var(--multiStepSlider-stop-hover-color);
}

.multiStepSlider__view-icons .multiStepSlider__stop-selected {
	color: var(--multiStepSlider-stop-selected-color);
}

.multiStepSlider__view-icons .multiStepSlider__stopIcon {
	fill: currentColor;
}

.multiStepSlider__view-icons .multiStepSlider__labels {
	display: flex;
	gap: var(--gap-tile);
}

.multiStepSlider__view-icons .multiStepSlider__label {
	flex: 1 0 0;
	text-align: center;
	user-select: none;
	cursor: pointer;
}

.multiStepSlider__view-icons .multiStepSlider__label-selected {
	font-weight: bold;
}

.multiStepSlider__view-collapsed .multiStepSlider__stop:not(.multiStepSlider__stop-selected) {
	max-width: 0;
	padding: 0;
	opacity: 0;
	pointer-events: none;
}

.multiStepSlider__view-collapsed .multiStepSlider__track {
	gap: 0;
}

/**
* colorSchemeSelector.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-14 Initial Version (as darkModeSelector.css)
*/

.colorSchemeSelector__view {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background-color: var(--surface-page);
	border: .1rem solid var(--border-default);
	border-radius: var(--radius-pill);
	padding: var(--pad-cell);
}

.colorSchemeSelector__slider-collapsed {
	border-color: transparent;
	background-color: transparent;
	padding: 0;
}

/**
* depthSelector.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-Jun-19 Initial Version (sibling of colorSchemeSelector.css)
*/

.depthSelector__view {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background-color: var(--surface-page);
	border: .1rem solid var(--border-default);
	border-radius: var(--radius-pill);
	padding: var(--pad-cell);
}

.depthSelector__slider-collapsed {
	border-color: transparent;
	background-color: transparent;
	padding: 0;
}

/**
* atom.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-05-31 Initial Version
*/

.atom__view {
    position: absolute;
    top: 0;
    left: 0;
    height: 100dvh;
    width: 100dvw;
    z-index: 2;
}
/**
* ksiCircle.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.ksiCircle__view {
    background-color: rgba(0,0,0,.3);
    position: absolute;
    width: 100dvw;
    height: 100dvh;
    z-index: 2;
    display: flex;
}

.ksiCircle__gif {
    margin: auto;
    width: 50%;
}
/**
* loadingIndicators.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-04 Initial Version — LoadingBar + LoadingOverlay styles (#15). Role/brand
*          tokens only; both animations sit behind the shared reduced-motion guard.
*/

/* ---- LoadingBar — top-of-surface indeterminate slider ---- */

/* The track always reserves its height so showing/hiding the bar never reflows
   the content below it; only the background + indicator toggle. */
.loadingBar__track {
	position: relative;
	height: .4rem;
	width: 100%;
	overflow: hidden;
	border-radius: var(--radius-card);
	background-color: transparent;
}

.loadingBar__track-active {
	background-color: var(--surface-hover);
}

.loadingBar__indicator {
	display: none;
	position: absolute;
	top: 0;
	left: -40%;
	height: 100%;
	width: 40%;
	border-radius: inherit;
	/* Matches the determinate .progressBar fill (baseElements.css). */
	background-color: var(--brand-primary);
}

.loadingBar__track-active .loadingBar__indicator {
	display: block;
	animation: loadingBarSlide 1.2s ease-in-out infinite;
}

/* Pure `transform` so the sweep stays on the compositor; animating `left` forced
   layout+paint every frame. -40% start + 40% width + translateX 350% of own width
   (= 140% of the track) lands at the old 100% endpoint. */
@keyframes loadingBarSlide {
	0% {
		transform: translateX(0);
	}

	100% {
		transform: translateX(350%);
	}
}

/* ---- Spinner rotation — shared arc-spinner motion ---- */

@keyframes spinnerRotate {
	0% {
		animation-timing-function: cubic-bezier(0.5856, 0.0703, 0.4143, 0.9297);
		transform: rotate(0);
	}

	100% {
		transform: rotate(360deg);
	}
}

/* ---- .loadingRing — a reusable 3/4-arc spinner ring ---- */

.loadingRing {
	display: inline-block;
	position: relative;
	width: 1em;
	height: 1em;
	color: inherit;
	box-sizing: content-box;
}

.loadingRing::after {
	content: '';
	display: block;
	width: 2em;
	height: 2em;
	box-sizing: border-box;
	border-radius: var(--radius-circle);
	border: .3em solid currentColor;
	border-left-color: transparent;
	transform-origin: 0 0;
	transform: translateZ(0) scale(0.5);
	backface-visibility: hidden;
}

.loadingRing--spinning {
	animation: spinnerRotate .8s infinite;
}

/* ---- LoadingOverlay — blocking scrim hosting the KsiCircle gif ---- */

.loadingOverlay__scrim {
	display: none;
}

/* Fixed full-viewport scrim; the nested .ksiCircle__view (position:absolute,
   100dvw/100dvh) anchors to it and fills the same box. z-index above the
   mainView floating-panel background (900, displayOverlay.css). */
.loadingOverlay__scrim-active {
	display: flex;
	position: fixed;
	inset: 0;
	z-index: 901;
	background-color: var(--surface-overlay);
}

/* Reduced-motion guard (mirrors the .loadingPlaceholder shimmer guard in
   baseElements.css): the static bar still shows, just without the slide, and
   the ring freezes in place. */
@media (prefers-reduced-motion: reduce) {
	.loadingBar__track-active .loadingBar__indicator {
		animation: none;
		left: 0;
		width: 100%;
	}

	.loadingRing--spinning {
		animation: none;
	}
}

/**
* resultIndicator.css
* @author Alejandro J. De Jesus Reyes <alejandro.dejesus@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-29 Initial Version — generic paint for the ResultIndicator's
*         checkmark/X (extracted from button.css). Layout/positioning stays with
*         the consumer; this file owns only the stroke look + role-token color.
*/

.resultIndicator__view {
	display: contents;
}

.resultIndicator-success,
.resultIndicator-fail {
	fill: none;
	stroke-width: 3;
	stroke-linecap: round;
	stroke-linejoin: round;
}

.resultIndicator-success path,
.resultIndicator-fail path {
	stroke-dasharray: 100;
	stroke-dashoffset: 100;
}

.resultIndicator-success {
	stroke: var(--text-success);
}

.resultIndicator-fail {
	stroke: var(--text-danger);
}

/**
* button.css
* @author Alejandro J. De Jesus Reyes <alejandro.dejesus@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-27 Initial Version — .button-loading modifier for the Button
*         component. Owns paint + reduced-motion guard for the half-circle spinner;
*         the shared spinnerRotate keyframe lives in loadingIndicators.css.
*/

.button-loading {
	position: relative;
	color: transparent;
	text-shadow: none;
	pointer-events: none;
	cursor: wait;
}

.button-loading.button-lightBackground {
	background-color: var(--brand-accent);
}

.button-loading.button-darkBackground {
	background-color: transparent;
}

.button-loading.button-danger {
	background-color: transparent;
}

.button-loading .loadingRing {
	position: absolute;
	top: 50%;
	left: 50%;
	margin: -.5em 0 0 -.5em;
	color: var(--text-brand);
	font-size: 1.4em; /* intentional literal: em-scale knob for the loadingRing's own 1em/2em children — proportional to button text, no --font-size-* rung is proportional */
}

.button-loading .resultIndicator-success,
.button-loading .resultIndicator-fail {
	position: absolute;
	top: 50%;
	left: 50%;
	width: 1.4em;
	height: 1.4em;
	margin: -.7em 0 0 -.7em;
}

.button-hold {
	position: relative;
	user-select: none;
	touch-action: none;
}

.button-holdIndicator {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	pointer-events: none;
	display: block;
	overflow: hidden;
	border-radius: inherit;
}

.button-holdIndicator path {
	fill: none;
	stroke: var(--text-brand);
	stroke-width: 3;
	stroke-dasharray: 100;
	stroke-dashoffset: 100;
}

.button-danger {
	.button-holdIndicator path {
		stroke: var(--text-danger);
	}
}

/**
* sideBySideCalendar.css
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-February-18 Initial Version
*/

.sideBySideCalendar__view {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-section);
	justify-content: center;
}

/**
* graph.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-06-19 Initial Version
*/

.graph__view {
	display: grid;
	grid-template-areas:
		'graph_toolbar graph_toolbar graph_toolbar'
		'graph_yLabel graph_yAxis graph_plot'
		'. . graph_xAxis'
		'. . graph_xLabel'
		'graph_legend graph_legend graph_legend';
	grid-template-rows: auto minmax(0, 1fr) auto auto auto;
	grid-template-columns: auto auto minmax(0, 1fr);
	column-gap: var(--gap-tight);
	min-height: 0;
	min-width: 0;
	color: var(--text-secondary);
	background-color: transparent;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.graph__view-pie {
	grid-template-areas:
		'graph_toolbar'
		'graph_plot'
		'graph_legend';
	grid-template-rows: auto minmax(0, 1fr) auto;
	grid-template-columns: minmax(0, 1fr);
}

.graph__view-bare {
	grid-template-areas: 'graph_plot';
	grid-template-rows: minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	background-color: transparent;
	backdrop-filter: none;
	-webkit-backdrop-filter: none;
}

.graph__toolbar {
	grid-area: graph_toolbar;
	display: flex;
	justify-content: flex-end;
	padding-bottom: var(--pad-card);
}

.graph__yAxisLabel {
	grid-area: graph_yLabel;
	writing-mode: vertical-rl;
	transform: rotate(180deg);
	text-align: center;
	font-size: var(--font-size-caption);
}

.graph__yAxis {
	grid-area: graph_yAxis;
	position: relative;
	min-width: 2.5rem;
	margin-top: var(--mark-inset);
}

.graph__yAxis__tick {
	position: absolute;
	right: 0;
	transform: translateY(50%);
	padding-right: var(--pad-dense);
	font-family: var(--font-body);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	line-height: var(--line-height-tight);
	white-space: nowrap;
	pointer-events: none;
}

.graph__plot {
	grid-area: graph_plot;
	position: relative;
	min-height: 0;
	min-width: 0;
}

.graph__view:not(.graph__view-bare) .graph__plot {
	min-height: 6rem;
}

.graphPlot__labels {
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.graphPlot__view-bare .graphPlot__labels {
	display: none;
}

.graphPlot__label {
	position: absolute;
	left: 0;
	top: 0;
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	line-height: var(--line-height-tight);
	white-space: nowrap;
	color: var(--text-secondary);
}

.graphPlot__label-y {
	translate: -100% -50%;
}

.graphPlot__label-x {
	translate: -50% 0;
}

.graphPlot__label-total {
	translate: -50% -50%;
	font-weight: 600;
	color: var(--text-primary);
}

.graphPlot__view {
	position: absolute;
	inset: 0;
}

.graphPlot__canvas {
	display: block;
	width: 100%;
	height: 100%;
	color: var(--text-secondary);
	touch-action: pan-y;
}

.graph__xAxis {
	grid-area: graph_xAxis;
	display: flex;
	justify-content: space-between;
	padding-top: var(--pad-dense);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
}

.graph__xAxis__label {
	flex: 1 1 0;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.graph__xAxis__label:nth-child(2) {
	text-align: center;
}

.graph__xAxis__label:last-child {
	text-align: end;
}

.graph__xAxisLabel {
	grid-area: graph_xLabel;
	text-align: center;
	font-size: var(--font-size-caption);
}

.graph__legend {
	grid-area: graph_legend;
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-tight) var(--gap-tile);
	padding-top: var(--pad-card);
	font-size: var(--font-size-caption);
}

.graph__legend__item {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-inline);
}

.graph__legend__swatch {
	flex: none;
	width: 1.6rem;
	height: .3rem;
	border-radius: var(--radius-pill);
}

.graphTooltip__view {
	position: absolute;
	z-index: 1;
	display: grid;
	gap: var(--gap-hairline);
	padding: var(--pad-row) var(--pad-card);
	transform: translate(-50%, calc(-100% - .6rem));
	color: var(--text-primary);
	background-color: var(--surface-raised);
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-overlay);
	font-size: var(--font-size-caption);
	white-space: nowrap;
	pointer-events: none;
}

.graphTooltip__view[hidden] {
	display: none;
}

.graphTooltip__view-below {
	transform: translate(-50%, .6rem);
}

.graphTooltip__title {
	color: var(--text-secondary);
}

.graphTooltip__row {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.graphTooltip__swatch {
	flex: none;
	width: .5rem;
	height: .5rem;
	border-radius: var(--radius-circle);
}

.graphTooltip__value {
	margin-left: auto;
	font-variant-numeric: tabular-nums;
}

.graph__legend {
	margin-top: var(--gap-stack);
	border-top: var(--border-width) solid color-mix(in srgb, var(--border-default) 55%, transparent);
	padding-top: var(--pad-card);
}

.graphTooltip__title {
	padding-bottom: var(--pad-cell);
	font-weight: var(--font-weight-medium);
}

.graphTooltip__value {
	font-weight: var(--font-weight-heading);
}

:root[data-viewport="phone"] .graph__yAxisLabel,
:root[data-viewport="phone"] .graph__xAxisLabel {
	display: none;
}

.graph__view:not(.graph__view-bare) .graph__plot {
	background-color: var(--chart-plot-surface);
	background-image: var(--chart-plot-texture);
	border-radius: var(--radius-card);
	box-shadow: var(--chart-plot-elevation);
}

.graph__yAxis__tick,
.graph__xAxis,
.graphTooltip__value,
.graphPlot__label {
	font-family: var(--chart-label-font);
}

.graph__legend__swatch {
	box-shadow: var(--chart-mark-elevation);
}

.graphTooltip__view {
	background-color: var(--chart-frame-surface);
	background-image: var(--chart-frame-texture);
	border-color: var(--chart-frame-border);
}

/**
* newIntervalView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-23 Initial Version
*/

.newIntervalView__view {
	display: grid;
	grid-template-areas: 'newIntervalView_teamMemberHeading newIntervalView_totalTime' 'newIntervalView_sideBySideCalendar newIntervalView_sideBySideCalendar' '. newIntervalView_buttonContainer';
	grid-template-rows: auto 1fr auto;
	gap: var(--gap-tile);
	align-items: center;
}

.newIntervalView__teamMemberHeading,
.newIntervalView__memberPicker {
	grid-area: newIntervalView_teamMemberHeading;
	margin: auto auto auto 0;
}

.newIntervalView__memberPicker {
	max-width: 20rem;
}

.newIntervalView__sideBySideCalendar {
	grid-area: newIntervalView_sideBySideCalendar;
}

.newIntervalView__buttonContainer {
	grid-area: newIntervalView_buttonContainer;
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-inline);
	padding-inline-end: var(--pad-card);
	height: 100%;
}

/* Running interval total — tabular figures so the digits don't jitter per tick. */
.newIntervalView__totalTime {
	grid-area: newIntervalView_totalTime;
	margin: auto 0 auto auto;
	font-variant-numeric: tabular-nums;
}

/**
* fromToDatePicker.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.fromToDatePicker__view {
	position: relative;
}

.fromToDatePicker__headingContainer {
	display: grid;
	grid-template-areas: '. fromToDatePicker_heading fromToDatePicker_expandImg';
	grid-template-columns: 1fr auto 1fr;
	padding-bottom: var(--pad-card);
	gap: var(--gap-section);
	align-items: center;
}

.fromToDatePicker__heading {
	grid-area: fromToDatePicker_heading;
}

.fromToDatePicker__expandImg {
	grid-area: fromToDatePicker_expandImg;
	cursor: pointer;
	justify-self: start;
	fill: var(--text-accent);
	transform: rotate(90deg);
}

.fromToDatePicker__expandImg-transform {
	transform: rotate(270deg);
}

.fromToDatePicker__sideBySideContainer {
	width: 100%;
	max-height: 0;
	overflow: hidden;
}

.fromToDatePicker__sideBySideContainer-expanded {
	max-height: fit-content;
}

/**
* intervalPicker.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-02 Initial Version
*/

.intervalPicker__view {
	display: flex;
	align-items: center;
}

.intervalPicker__display {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-inline);
}

.intervalPicker__dateText {
	padding: 0;
	background: none;
	border: 0;
	font: inherit;
	font-weight: var(--font-weight-heading);
	color: inherit;
	text-align: start;
	cursor: pointer;
}

.intervalPicker__dateText-unset {
	color: var(--text-secondary);
	font-weight: var(--font-weight-body);
}

.intervalPicker__calendarIcon {
	fill: var(--text-accent);
}

.intervalPicker__panel:popover-open {
	transform-origin: top left;
	animation: intervalPickerEmerge var(--motion-base) var(--ease-enter) backwards;
}

@keyframes intervalPickerEmerge {
	from {
		opacity: 0;
		transform: scale(.4);
	}
}

.intervalPicker__panelContent {
	display: grid;
	gap: var(--gap-stack);
	width: max-content;
}

.intervalPicker__panelContent .sideBySideCalendar__view {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: 1fr;
}

.intervalPicker__panelContent .miniCalendar__view {
	height: auto;
	width: auto;
}

.intervalPicker__buttonRow {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .intervalPicker__panel {
	position-area: none;
	inset: auto 0 0 0;
	width: 100dvw;
	min-width: 0;
	margin: 0;
	border-radius: var(--radius-sheet) var(--radius-sheet) 0 0;
	transform-origin: bottom center;
}

:root[data-viewport="phone"] .intervalPicker__panelContent {
	width: calc(100dvw - 2 * var(--pad-card));
	justify-items: stretch;
	padding: var(--pad-card);
}

:root[data-viewport="phone"] .intervalPicker__panelContent .sideBySideCalendar__view {
	grid-auto-flow: row;
	width: 100%;
}

:root[data-viewport="phone"] .intervalPicker__panelContent .miniCalendar__view {
	width: 100%;
}

/**
* invoiceLineItem.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-03 Initial Version — the dense, outlined worksheet row: tabular figures,
*   selected/hover/editing surfaces, hover-revealed actions, the phone-band card fold
*/

.invoiceLineItem__view {
	display: block;
	min-width: 0;
}

.invoiceLineItem__row {
	display: grid;
	grid-template-columns: var(--invoice-line-columns);
	align-items: center;
	column-gap: var(--gap-dense);
	padding: var(--pad-dense) var(--pad-row);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-dense);
	background: var(--surface-card);
	line-height: var(--line-height-tight);
	transition: background var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

.invoiceLineItem__row:hover {
	background: var(--surface-hover);
	border-color: var(--border-strong);
}

.invoiceLineItem__row-selected,
.invoiceLineItem__row-selected:hover {
	background: var(--surface-selected);
	border-color: var(--brand-primary);
}

.invoiceLineItem__row-editing {
	border-color: var(--brand-accent);
	box-shadow: var(--elevation-glow);
}

.invoiceLineItem__row-billed,
.invoiceLineItem__row-billed:hover {
	background: var(--surface-sunken);
	border-color: var(--border-default);
	color: var(--text-secondary);
}

.invoiceLineItem__row-billed .invoiceLineItem__task,
.invoiceLineItem__row-billed .invoiceLineItem__date,
.invoiceLineItem__row-billed .invoiceLineItem__cell-amount {
	color: var(--text-secondary);
}

.invoiceLineItem__tag-billed {
	border-color: transparent;
	background: color-mix(in srgb, var(--status-warning) 18%, transparent);
	color: var(--text-warning);
}

.invoiceLineItem__cell-select,
.invoiceLineItem__cell-actions {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--gap-tight);
}

.invoiceLineItem__cell-actions {
	position: relative;
	justify-content: flex-end;
}

.invoiceLineItem__cell-date,
.invoiceLineItem__cell-project,
.invoiceLineItem__cell-work,
.invoiceLineItem__cell-member {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.invoiceLineItem__date,
.invoiceLineItem__project,
.invoiceLineItem__task,
.invoiceLineItem__member {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.invoiceLineItem__project {
	color: var(--text-secondary);
}

.invoiceLineItem__range,
.invoiceLineItem__taskNumber {
	color: var(--text-secondary);
}

.invoiceLineItem__taskMeta {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.invoiceLineItem__tag {
	padding: 0 var(--pad-cell);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	color: var(--text-secondary);
	white-space: nowrap;
}

.invoiceLineItem__tag-category {
	border-color: transparent;
	background: var(--surface-sunken);
}

.invoiceLineItem__numeric {
	font-variant-numeric: tabular-nums;
	text-align: right;
}

.invoiceLineItem__action {
	opacity: 0;
	transition: opacity var(--motion-fast) var(--ease-standard);
}

.invoiceLineItem__row:hover .invoiceLineItem__action,
.invoiceLineItem__row:focus-within .invoiceLineItem__action,
.invoiceLineItem__row-editing .invoiceLineItem__action {
	opacity: 1;
}

/* ─── Phone band: the row folds to a card grid ────────────────── */

:root[data-viewport="phone"] .invoiceLineItem__row {
	grid-template-columns: auto minmax(0, 1fr) auto;
	grid-template-areas:
		"select date actions"
		"select project project"
		"select work work"
		"select member hours"
		"select rate amount";
	row-gap: var(--gap-tight);
}

:root[data-viewport="phone"] .invoiceLineItem__cell-select { grid-area: select; align-self: start; }
:root[data-viewport="phone"] .invoiceLineItem__cell-date { grid-area: date; }
:root[data-viewport="phone"] .invoiceLineItem__cell-project { grid-area: project; }
:root[data-viewport="phone"] .invoiceLineItem__cell-work { grid-area: work; }
:root[data-viewport="phone"] .invoiceLineItem__cell-member { grid-area: member; }
:root[data-viewport="phone"] .invoiceLineItem__cell-hours { grid-area: hours; }
:root[data-viewport="phone"] .invoiceLineItem__cell-rate { grid-area: rate; text-align: left; color: var(--text-secondary); }
:root[data-viewport="phone"] .invoiceLineItem__cell-amount { grid-area: amount; }
:root[data-viewport="phone"] .invoiceLineItem__cell-actions { grid-area: actions; }

:root[data-viewport="phone"] .invoiceLineItem__action {
	opacity: 1;
}

/**
* invoiceSourceTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-03 Initial Version — one segment of the worksheet's source strip: the
*   uppercase category label over a display-face figure, the on-invoice fill, the arrivals cue
*/

.invoiceSourceTile__view {
	display: block;
	min-width: 0;
}

.invoiceSourceTile__cell {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"label toggle"
		"figure toggle"
		"meta toggle"
		"arrivals arrivals";
	align-items: center;
	column-gap: var(--gap-inline);
	row-gap: var(--gap-hairline);
	height: 100%;
	padding: var(--pad-row) var(--pad-card);
	min-width: 0;
	transition: background var(--motion-fast) var(--ease-standard);
}

.invoiceSourceTile__cell-onInvoice {
	background: var(--surface-selected);
}

.invoiceSourceTile__label {
	grid-area: label;
	color: var(--text-secondary);
	text-transform: uppercase;
	letter-spacing: .06em; /* intentional literal: small-caps tracking for the uppercase category label, not a type rung */
	font-size: var(--font-size-label);
}

.invoiceSourceTile__cell-onInvoice .invoiceSourceTile__label {
	color: var(--text-primary);
}

.invoiceSourceTile__figure {
	grid-area: figure;
	font-family: var(--font-display);
	font-size: var(--font-size-subheading);
	line-height: var(--line-height-tight);
	font-variant-numeric: tabular-nums;
}

.invoiceSourceTile__meta {
	grid-area: meta;
	color: var(--text-secondary);
}

.invoiceSourceTile__toggle {
	grid-area: toggle;
	align-self: center;
}

.invoiceSourceTile__arrivals {
	grid-area: arrivals;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	margin-top: var(--gap-tight);
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-dense);
	background: color-mix(in srgb, var(--status-info) 14%, transparent);
	animation: motionEnter var(--motion-base) var(--ease-enter) backwards;
	animation-name: var(--motion-enter-name, motionEnter);
}

.invoiceSourceTile__arrivals__text {
	color: var(--text-primary);
}

/**
* invoiceLineEditor.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the anchored editor panel and the editor's padding, moved out of newInvoiceView.css (#2135)
*/

.invoiceLineEditor__panel {}

.invoiceLineEditor__editor {
	padding: var(--pad-dense);
}

/**
* worksheetToolbar.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the toolbar row, the group-by toggle and the notice strip, moved out of newInvoiceView.css (#2135)
*/

.worksheetToolbar__view {
	display: grid;
	gap: var(--gap-stack);
	min-width: 0;
}

.worksheetToolbar__bar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-inline);
	min-height: 3.2rem;
	padding: 0 var(--pad-cell);
}

.worksheetToolbar__heading {
	font-family: var(--font-display);
	letter-spacing: var(--letter-spacing-display);
}

.worksheetToolbar__count {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.worksheetToolbar__remove {
	margin-left: var(--gap-dense);
	opacity: 0;
	transform: translateX(calc(-1 * var(--motion-enter-distance)));
	transition: opacity var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-enter);
	pointer-events: none;
}

.worksheetToolbar__remove-armed {
	opacity: 1;
	transform: none;
	pointer-events: auto;
}

.worksheetToolbar__summary {
	margin-left: auto;
	color: var(--text-secondary);
}

.worksheetToolbar__numeric {
	font-variant-numeric: tabular-nums;
	text-align: right;
}

.worksheetToolbar__groupToggle {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	margin-left: var(--gap-inline);
}

.worksheetToolbar__groupToggle__label {
	color: var(--text-secondary);
}

.worksheetToolbar__groupToggle__option {
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-dense);
	color: var(--text-secondary);
}

.worksheetToolbar__groupToggle__option-active {
	background: var(--surface-selected);
	color: var(--text-primary);
}

/* ─── Notice strip: what a broadcast changed under the seller ─── */

.worksheetToolbar__notice {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-row);
	border-radius: var(--radius-dense);
	background: color-mix(in srgb, var(--status-info) 14%, transparent);
	border: var(--border-width) solid color-mix(in srgb, var(--status-info) 40%, transparent);
	animation: motionEnter var(--motion-base) var(--ease-enter) backwards;
	animation-name: var(--motion-enter-name, motionEnter);
}

.worksheetToolbar__notice__lines {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.worksheetToolbar__notice__dismiss {
	flex: none;
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .worksheetToolbar__summary {
	flex-basis: 100%;
	margin-left: 0;
	text-align: left;
}

:root[data-viewport="phone"] .worksheetToolbar__notice {
	flex-direction: column;
}

/**
* worksheetLineList.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the one-grid list (headings, rows and group footers as subgrids of the
*   shared `--invoice-line-columns` template), the project divider, the empty state and the phone-band fold, moved out of
*   newInvoiceView.css; the per-project "Already billed" disclosure whose locked rows share the same template (#2135)
*/

.worksheetLineList__view {
	--invoice-line-columns: auto minmax(10rem, 12rem) minmax(9rem, 13rem) minmax(0, 1fr) minmax(8rem, 12rem) 6rem 7.5rem 8.5rem auto;
	display: grid;
	grid-template-columns: var(--invoice-line-columns);
	grid-auto-rows: max-content;
	row-gap: var(--gap-tight);
	column-gap: var(--gap-dense);
	min-height: 0;
	padding: var(--pad-cell) 0;
}

.worksheetLineList__view > * {
	grid-column: 1 / -1;
}

.worksheetLineList__columnHeadings,
.worksheetLineList__groupFooter,
.worksheetLineList__view .invoiceLineItem__view,
.worksheetLineList__view .invoiceLineItem__row {
	display: grid;
	grid-template-columns: subgrid;
}

.worksheetLineList__view .invoiceLineItem__view,
.worksheetLineList__view .invoiceLineItem__row {
	grid-column: 1 / -1;
}

.worksheetLineList__columnHeadings {
	align-items: center;
	padding: 0 var(--pad-row);
}

.worksheetLineList__columnHeading {
	color: var(--text-secondary);
	text-transform: uppercase;
	letter-spacing: .06em; /* intentional literal: small-caps tracking for the column headings, not a type rung */
	font-size: var(--font-size-label);
}

.worksheetLineList__view .worksheetLineList__numeric,
.worksheetLineList__view .invoiceLineItem__numeric {
	width: auto;
	justify-self: stretch;
	font-variant-numeric: tabular-nums;
	text-align: right;
}

.worksheetLineList__projectDivider {
	display: flex;
	align-items: baseline;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-row) var(--pad-cell);
	border-bottom: var(--border-width) solid var(--border-strong);
}

.worksheetLineList__projectDivider__name {
	font-family: var(--font-display);
	letter-spacing: var(--letter-spacing-display);
}

.worksheetLineList__projectDivider__count {
	color: var(--text-secondary);
}

.worksheetLineList__groupFooter {
	align-items: baseline;
	padding: var(--pad-cell) var(--pad-row) var(--pad-dense);
	border-bottom: var(--border-width) dashed var(--border-default);
	color: var(--text-secondary);
}

.worksheetLineList__groupFooter__label {
	grid-column: 2 / 5;
}

.worksheetLineList__groupFooter__limit {
	grid-column: 5;
}

.worksheetLineList__groupFooter__hours {
	grid-column: 6;
}

.worksheetLineList__groupFooter__sum {
	grid-column: 8;
	color: var(--text-primary);
}

.worksheetLineList__groupFooter__spacer-actions {
	grid-column: 9;
}

.worksheetLineList__groupFooter-over .worksheetLineList__groupFooter__sum,
.worksheetLineList__groupFooter-over .worksheetLineList__groupFooter__hours,
.worksheetLineList__groupFooter-over .worksheetLineList__groupFooter__limit {
	color: var(--text-danger);
}

.worksheetLineList__empty {
	padding: var(--pad-sheet) var(--pad-card);
	border: var(--border-width) dashed var(--border-default);
	border-radius: var(--radius-dense);
}

/* ─── Already billed: the locked lines an active invoice holds ─── */

.worksheetLineList__billed {
	padding: var(--pad-cell) 0;
	interpolate-size: allow-keywords;
}

.worksheetLineList__billed__summary {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--gap-inline);
	min-height: var(--touch-target-minimum);
	padding: var(--pad-cell) var(--pad-row);
	border-radius: var(--radius-dense);
	color: var(--text-secondary);
}

.worksheetLineList__billed__summary:hover .worksheetLineList__billed__title {
	color: var(--text-link);
}

.worksheetLineList__billed__title::before {
	content: '▸ ';
	color: var(--text-secondary);
}

.worksheetLineList__billed[open] .worksheetLineList__billed__title::before {
	content: '▾ ';
}

.worksheetLineList__billed__hint {
	color: var(--text-secondary);
}

.worksheetLineList__billed__rows {
	display: grid;
	grid-template-columns: var(--invoice-line-columns);
	row-gap: var(--gap-tight);
	column-gap: var(--gap-dense);
	padding-top: var(--pad-cell);
}

.worksheetLineList__billed__rows .invoiceLineItem__view,
.worksheetLineList__billed__rows .invoiceLineItem__row {
	display: grid;
	grid-template-columns: subgrid;
	grid-column: 1 / -1;
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .worksheetLineList__view {
	min-height: auto;
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .worksheetLineList__columnHeadings {
	display: none;
}

:root[data-viewport="phone"] .worksheetLineList__billed__rows {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .worksheetLineList__groupFooter {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .worksheetLineList__groupFooter__label {
	margin-right: auto;
}

:root[data-viewport="phone"] .worksheetLineList__groupFooter__spacer-select,
:root[data-viewport="phone"] .worksheetLineList__groupFooter__spacer-actions {
	display: none;
}

/**
* invoiceCommentTemplates.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the comments block moved out of newInvoiceView.css, plus the template tools row (#2135)
*/

.invoiceCommentTemplates__view {
	display: grid;
	grid-template-rows: auto auto 1fr auto;
	gap: var(--gap-hairline);
	flex: 2 1 24rem;
	min-width: 0;
}

.invoiceCommentTemplates__hint {
	color: var(--text-secondary);
}

.invoiceCommentTemplates__view .textArea {
	height: 100%;
	min-height: 9rem;
	margin: var(--gap-tight) 0 0;
	resize: vertical;
	line-height: var(--line-height-body);
}

.invoiceCommentTemplates__tools {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-inline);
	padding-top: var(--pad-cell);
}

.invoiceCommentTemplates__picker {
	flex: 1 1 18rem;
	min-width: min(100%, 18rem);
	max-width: 32rem;
}

.invoiceCommentTemplates__makeDefault {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	color: var(--text-secondary);
	cursor: pointer;
}

.invoiceCommentTemplates__makeDefault:has(.invoiceCommentTemplates__makeDefaultCheckbox:disabled) {
	cursor: default;
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .invoiceCommentTemplates__saveAsTemplate,
:root[data-viewport="phone"] .invoiceCommentTemplates__makeDefault {
	min-height: var(--touch-target-primary);
}

/**
* invoicePreview.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the generate step: the printed document released from its overlay height,
*   the rounded-hours note, the recipient / schedule / actions footer, the phone-band touch floor on the three buttons (#2135)
*/

.invoicePreview__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	min-width: 0;
	min-height: 0;
}

.invoicePreview__view > * {
	flex: 0 0 auto;
}

.invoicePreview__scrollArea {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding: var(--pad-dense) var(--pad-cell) var(--pad-card);
}

.invoicePreview__scrollArea > * {
	flex: 0 0 auto;
}

.invoicePreview__document {
	min-width: 0;
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	overflow: hidden;
}

.invoicePreview__document .invoicePanel__view {
	height: auto;
	overflow: visible;
}

.invoicePreview__roundedNotes {
	display: grid;
	gap: var(--gap-hairline);
	padding: var(--pad-dense) var(--pad-row);
	border-radius: var(--radius-dense);
	background: color-mix(in srgb, var(--status-info) 14%, transparent);
	border: var(--border-width) solid color-mix(in srgb, var(--status-info) 40%, transparent);
	color: var(--text-secondary);
}

.invoicePreview__footer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-cell) var(--pad-card);
	background: var(--surface-card);
	background-image: var(--surface-card-texture, none);
	background-repeat: var(--surface-card-texture-repeat, repeat);
	background-size: var(--surface-card-texture-size, auto);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	clip-path: var(--surface-clip, none);
	min-width: 0;
}

.invoicePreview__footer > .button,
.invoicePreview__sendDate .button,
.invoicePreview__export > .button {
	min-height: var(--touch-target-primary);
	padding: var(--pad-dense) var(--pad-card);
	justify-content: center;
}

.invoicePreview__recipient {
	display: flex;
	flex: 1 1 22rem;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-inline);
	min-width: 0;
}

.invoicePreview__emailPicker {
	flex: 0 1 30rem;
	min-width: min(100%, 18rem);
}

.invoicePreview__noRecipient {
	color: var(--text-warning);
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .invoicePreview__scrollArea {
	flex: 0 0 auto;
	min-height: auto;
	overflow: visible;
}

:root[data-viewport="phone"] .invoicePreview__footer {
	position: sticky;
	bottom: 0;
	z-index: 1;
}

:root[data-viewport="phone"] .invoicePreview__footer > .button {
	flex: 1 1 auto;
}

:root[data-viewport="phone"] .invoicePreview__sendButton {
	flex-basis: 100%;
}

:root[data-viewport="phone"] .invoicePreview__export {
	flex: 1 1 auto;
}

:root[data-viewport="phone"] .invoicePreview__recipient,
:root[data-viewport="phone"] .invoicePreview__sendDate {
	flex-basis: 100%;
	justify-content: stretch;
}

:root[data-viewport="phone"] .invoicePreview__emailPicker {
	flex: 1 1 auto;
	min-width: 0;
	max-width: none;
}

/**
* invoiceExportMenu.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-14 Initial Version — the invoice preview's Export button and its floating format menu
*/

.invoiceExportMenu__view {
	position: relative;
	display: flex;
	align-items: center;
}

.invoiceExportMenu__button {
	white-space: nowrap;
}

.invoiceExportMenu__panel {
	background-color: var(--menu-surface);
	border: var(--border-width) solid var(--menu-border-color);
	border-radius: var(--menu-radius);
	box-shadow: var(--menu-elevation);
}

.invoiceExportMenu__panel .floatingExpandablePanel__expandArea {
	border-radius: var(--menu-radius);
}

.invoiceExportMenu__options {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 26rem;
	padding: var(--pad-cell);
}

.invoiceExportMenu__eyebrow {
	padding: var(--pad-cell) var(--pad-dense) var(--pad-dense);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-display);
	text-transform: uppercase;
	color: var(--text-secondary);
}

.invoiceExportMenu__option {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: var(--gap-inline);
	width: 100%;
	box-sizing: border-box;
	margin: 0;
	padding: var(--pad-dense);
	border: none;
	border-radius: var(--radius-button);
	background-color: transparent;
	color: var(--text-primary);
	font: inherit;
	text-align: left;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.invoiceExportMenu__option:hover,
.invoiceExportMenu__option:focus-visible {
	background-color: var(--menu-option-hover);
	outline: none;
}

.invoiceExportMenu__option:focus-visible {
	box-shadow: inset 0 0 0 var(--border-width) var(--focus-ring-color);
}

.invoiceExportMenu__badge {
	display: inline-grid;
	place-items: center;
	width: 5.6rem;
	box-sizing: border-box;
	padding: var(--pad-cell) 0;
	border-radius: var(--radius-dense);
	background-color: var(--menu-option-selected);
	color: var(--text-accent);
	font-family: var(--font-mono);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	text-transform: uppercase;
}

.invoiceExportMenu__optionText {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.invoiceExportMenu__optionTitle {
	font-family: var(--font-body);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
}

.invoiceExportMenu__optionCaption {
	font-family: var(--font-body);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-tight);
	color: var(--text-secondary);
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .invoiceExportMenu__button {
	flex: 1 1 auto;
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .invoiceExportMenu__options {
	min-width: 0;
	width: min(32rem, calc(100dvw - 2 * var(--pad-page)));
}

:root[data-viewport="phone"] .invoiceExportMenu__option {
	min-height: var(--touch-target-primary);
}

/**
* sendDateField.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the invoice preview's send-date button and its floating calendar (#2135)
*/

.sendDateField__view {
	position: relative;
	display: flex;
	align-items: center;
}

.sendDateField__button {
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.sendDateField__button-scheduled {
	color: var(--text-accent);
}

.sendDateField__panel {
	background: var(--surface-page);
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .sendDateField__button {
	flex: 1 1 auto;
}

/**
* subscriptionKnob.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-05 Initial Version (#2148) — the subscription toggle's label + switch row
*/

.subscriptionKnob__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.subscriptionKnob__label {
	color: var(--text-secondary);
}

.subscriptionKnob__toggle[disabled] {
	color: var(--text-disabled);
}

:root[data-viewport="phone"] .subscriptionKnob__row {
	min-height: var(--touch-target-primary);
}

/**
* subscriptionTile.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2267) — the two-row subscription tile on the TaskTile dense
*          tier: identity over meta on the left, amount over next period on the right, the status chip
*          and unpaid alarm on the status INK roles, an ended or blocked row on the sunken surface
*/

.subscriptionTile__view {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		'subscriptionTile_identity subscriptionTile_amount'
		'subscriptionTile_meta subscriptionTile_nextPeriod';
	align-items: baseline;
	gap: var(--gap-hairline) var(--gap-dense);
	padding: var(--pad-dense);
	cursor: pointer;
}

.subscriptionTile__view-selected {
	border-color: var(--brand-accent);
}

.subscriptionTile__view-ended,
.subscriptionTile__view-blocked {
	background-color: var(--surface-sunken);
}

.subscriptionTile__identity {
	grid-area: subscriptionTile_identity;
	display: flex;
	align-items: center;
	gap: var(--gap-dense);
	width: auto;
	min-width: 0;
	margin: 0;
}

.subscriptionTile__name {
	flex: 1 1 auto;
	min-width: 0;
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.subscriptionTile__amount {
	grid-area: subscriptionTile_amount;
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
}

.subscriptionTile__meta {
	grid-area: subscriptionTile_meta;
	display: flex;
	align-items: baseline;
	column-gap: var(--gap-dense);
	width: auto;
	min-width: 0;
	margin: 0;
	color: var(--text-secondary);
}

.subscriptionTile__meta > * {
	flex: none;
	white-space: nowrap;
}

.subscriptionTile__meta > * + *::before {
	content: '·';
	margin-right: var(--gap-dense);
}

.subscriptionTile__counterparty {
	flex: 0 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
}

.subscriptionTile__unpaid {
	color: var(--text-danger);
}

.subscriptionTile__nextPeriod {
	grid-area: subscriptionTile_nextPeriod;
	justify-self: end;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
	color: var(--text-secondary);
}

.subscriptionTile__chip {
	flex: none;
	padding: 0 var(--pad-dense);
	border-radius: var(--radius-pill);
	font-size: var(--font-size-caption);
	background: var(--surface-sunken);
	color: var(--text-secondary);
}

.subscriptionTile__view-ended .subscriptionTile__chip,
.subscriptionTile__view-blocked .subscriptionTile__chip {
	background: var(--surface-card);
}

.subscriptionTile__chip-blocked {
	color: var(--text-danger);
}

.subscriptionTile__chip-paused {
	color: var(--text-warning);
}

/**
* subscriptionHeader.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2267) — the clientHeader.css shape: name over the counterpart
*          line and the status chip, the two knobs stacked in the trailing actions column; the knobs drop
*          under the identity in the phone band
*/

.subscriptionHeader__view {
	display: grid;
	gap: var(--gap-dense) var(--gap-tile);
	align-items: start;
	grid-template-areas:
		'subscriptionHeader_displayName subscriptionHeader_actions'
		'subscriptionHeader_meta subscriptionHeader_actions'
		'subscriptionHeader_status subscriptionHeader_actions';
	grid-template-columns: minmax(0, 1fr) auto;
}

.subscriptionHeader__displayName {
	grid-area: subscriptionHeader_displayName;
	text-align: left;
	overflow-wrap: anywhere;
}

.subscriptionHeader__actionButtonsContainer {
	grid-area: subscriptionHeader_actions;
	display: grid;
	gap: var(--gap-dense);
	min-width: 18rem;
	padding: var(--pad-dense) var(--pad-row);
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	background-color: var(--surface-sunken);
}

.subscriptionHeader__meta {
	grid-area: subscriptionHeader_meta;
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	column-gap: var(--gap-dense);
	color: var(--text-secondary);
}

.subscriptionHeader__meta > * + *::before {
	content: '·';
	margin-right: var(--gap-dense);
}

.subscriptionHeader__status {
	grid-area: subscriptionHeader_status;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-dense);
}

.subscriptionHeader__chip {
	padding: 0 var(--pad-dense);
	border-radius: var(--radius-pill);
	font-size: var(--font-size-caption);
	background: var(--surface-sunken);
	color: var(--text-secondary);
}

.subscriptionHeader__chip-active {
	color: var(--text-success);
}

.subscriptionHeader__chip-blocked {
	color: var(--text-danger);
}

.subscriptionHeader__chip-paused {
	color: var(--text-warning);
}

.subscriptionHeader__statusReason {
	color: var(--text-secondary);
}

:root[data-viewport="phone"] .subscriptionHeader__view {
	grid-template-areas:
		'subscriptionHeader_displayName'
		'subscriptionHeader_meta'
		'subscriptionHeader_status'
		'subscriptionHeader_actions';
	grid-template-columns: minmax(0, 1fr);
	padding-left: var(--pad-shell);
}

:root[data-viewport="phone"] .subscriptionHeader__actionButtonsContainer {
	min-width: 0;
}

/**
* subscriptionStatusTile.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-05 Initial Version (#2148) — the task / project panel's subscription card,
*          sized like its sibling stat cards and collapsed entirely on the hidden arm
*/

.subscriptionStatusTile__view {
	display: grid;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
	background: var(--surface-card);
}

.subscriptionStatusTile__view-hidden {
	display: none;
}

.subscriptionStatusTile__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.subscriptionStatusTile__summary,
.subscriptionStatusTile__callToAction {
	display: grid;
	gap: var(--gap-stack);
}

.subscriptionStatusTile__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.subscriptionStatusTile__cadence,
.subscriptionStatusTile__nextPeriod {
	min-width: 0;
}

.subscriptionStatusTile__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.subscriptionStatusTile__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

.subscriptionStatusTile__chip {
	justify-self: start;
	padding: var(--pad-dense);
	border-radius: var(--radius-pill);
	font-size: var(--font-size-caption);
	background: var(--surface-sunken);
	color: var(--text-secondary);
}

.subscriptionStatusTile__chip-active {
	color: var(--text-success);
}

.subscriptionStatusTile__chip-blocked {
	color: var(--text-danger);
}

.subscriptionStatusTile__chip-paused {
	color: var(--text-warning);
}

.subscriptionStatusTile__ctaHint,
.subscriptionStatusTile__statusReason {
	color: var(--text-secondary);
}

/**
* deleteProjectView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.deleteProjectView__view {
    width: fit-content;
    background: var(--surface-page);
    margin: 10rem auto auto 50vw; /* intentional literal: dialog top offset + the 50vw/translateX(-50%) centring idiom */
    transform: translateX(-50%);
    box-shadow: var(--elevation-overlay);
    display: grid;
    /* The dialog had no padding at all under the global `* { padding: 0 }` reset —
       heading and buttons sat flush against the shadowed edge. */
    padding: var(--pad-sheet);
    border-radius: var(--radius-sheet);
    gap: var(--gap-stack);
}

.deleteProjectView__buttonArea {
    display: flex;
    justify-content: space-around;
}
/**
* deleteClientView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.deleteClientView__view {
    width: fit-content;
    background: var(--surface-page);
    margin: 10rem auto auto 50vw; /* intentional literal: dialog top offset + the 50vw/translateX(-50%) centring idiom */
    transform: translateX(-50%);
    box-shadow: var(--elevation-overlay);
    display: grid;
    /* The dialog had no padding at all under the global `* { padding: 0 }` reset —
       heading and buttons sat flush against the shadowed edge. */
    padding: var(--pad-sheet);
    border-radius: var(--radius-sheet);
    gap: var(--gap-stack);
}

.deleteClientView__heading {}

.deleteClientView__question {}

.deleteClientView__buttonArea {
    display: flex;
    justify-content: space-around;
}
/**
* messageTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-07-28 Initial Version
*/

.messageTile__view {
	display: grid;
	width: 100%;
}

.messageTile__dayDivider {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	margin: var(--gap-section) var(--pad-card) var(--gap-dense);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
}

.messageTile__dayDivider::before,
.messageTile__dayDivider::after {
	content: '';
	flex: 1;
	border-top: var(--border-width) solid var(--border-default);
}

.messageTile__row {
	position: relative;
	display: grid;
	grid-template-columns: 4rem minmax(0, 1fr);
	column-gap: var(--gap-inline);
	align-items: start;
	margin-top: var(--gap-stack);
	padding: var(--pad-cell) var(--pad-card);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.messageTile__view-continuation .messageTile__row {
	margin-top: 0;
}

.messageTile__row:hover {
	background: var(--surface-hover);
}

.messageTile__avatar {
	margin-top: var(--gap-hairline);
}

.messageTile__gutterTime {
	align-self: start;
	padding-top: var(--gap-hairline);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	text-align: end;
	opacity: 0;
}

.messageTile__row:hover .messageTile__gutterTime,
.messageTile__row:focus-within .messageTile__gutterTime {
	opacity: 1;
}

.messageTile__body {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.messageTile__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--gap-inline);
}

.messageTile__senderName {
	font-weight: var(--font-weight-medium);
	font-size: var(--font-size-body);
}

.messageTile__view-selfEntity .messageTile__senderName {
	color: var(--text-brand);
}

.messageTile__time {
	color: var(--text-secondary);
}

.messageTile__content {
	font-size: var(--font-size-body);
	line-height: var(--line-height-body);
	overflow-wrap: anywhere;
	white-space: pre-wrap;
}

.messageTile__gif {
	display: block;
	max-width: 100%;
	max-height: 28rem;
	height: auto;
	border-radius: var(--radius-button);
	background: var(--surface-hover);
}

.messageTile__content-deleted {
	color: var(--text-secondary);
	font-style: italic;
}

.messageTile__mention {
	color: var(--text-brand);
	font-weight: var(--font-weight-medium);
	background: var(--surface-selected);
	border-radius: var(--radius-dense);
	padding: 0 var(--gap-hairline);
}

.messageTile__link {
	color: var(--text-brand);
	text-decoration: underline;
}

.messageTile__threadChip {
	justify-self: start;
	display: inline-flex;
	align-items: center;
	min-height: var(--touch-target-minimum);
	margin-top: var(--gap-tight);
	padding: 0 var(--pad-dense);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	background: var(--surface-card);
	color: var(--text-brand);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	cursor: pointer;
	transition: border-color var(--motion-fast) var(--ease-standard);
}

.messageTile__threadChip:hover {
	border-color: var(--border-strong);
}

.messageTile__reactions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-hairline);
	margin-top: var(--gap-tight);
}

.messageTile__reactions[hidden] {
	display: none;
}

.messageTile__reaction {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-hairline);
	min-height: var(--touch-target-primary);
	padding: var(--pad-cell) var(--pad-dense);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	background: var(--surface-card);
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	cursor: pointer;
	transition: border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.messageTile__reaction:hover {
	border-color: var(--border-strong);
	background: var(--surface-hover);
	color: var(--text-primary);
}

.messageTile__reaction-mine {
	border-color: var(--brand-primary);
	background: var(--surface-selected);
	color: var(--text-brand);
}

.messageTile__emojiPicker {
	right: var(--pad-card);
	width: 36rem;
	bottom: auto;
	top: 2.8rem;
}

.messageTile__emojiPicker:popover-open {
	inset: unset;
	margin: 0;
	width: 36rem;
	height: 38rem;
	max-height: 65dvh;
	z-index: 4;
}

.messageTile__actions {
	position: absolute;
	top: calc(-1 * var(--gap-stack));
	right: var(--pad-card);
	display: flex;
	align-items: center;
	gap: var(--gap-hairline);
	padding: var(--gap-hairline);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-button);
	background: var(--surface-raised);
	box-shadow: var(--elevation-button);
	transition: opacity var(--motion-fast) var(--ease-standard);
}

.messageTile__view-continuation .messageTile__actions {
	top: calc(-1 * var(--gap-dense));
}

.messageTile__action {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-minimum);
	min-height: var(--touch-target-minimum);
	padding: 0;
	border: none;
	border-radius: var(--radius-dense);
	background: transparent;
	color: var(--text-secondary);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.messageTile__action:hover {
	background: var(--surface-hover);
}

@media (hover: hover) {
	.messageTile__actions {
		opacity: 0;
	}

	.messageTile__row:hover .messageTile__actions,
	.messageTile__row:focus-within .messageTile__actions {
		opacity: 1;
	}
}

@media (hover: none) {
	.messageTile__row {
		grid-template-columns: 4rem minmax(0, 1fr) auto;
	}

	.messageTile__actions {
		position: static;
		grid-column: 3;
		align-self: start;
		border: none;
		background: transparent;
		box-shadow: none;
	}
}

:root[data-viewport="phone"] .messageTile__row {
	grid-template-columns: 3rem minmax(0, 1fr) auto;
	padding: var(--pad-cell) var(--pad-dense);
}

:root[data-viewport="phone"] .messageTile__avatar {
	height: 3rem;
	width: 3rem;
}

:root[data-viewport="phone"] .messageTile__action {
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
}

/**
* messageComposer.css — the chat message field and its mention menu (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.messageComposer__view {
	position: relative;
	display: grid;
	gap: var(--gap-dense);
	padding: 0 var(--pad-card) var(--pad-card);
}

.messageComposer__field {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	align-items: end;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-dense) var(--pad-dense) var(--pad-input-inline);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-input);
	background: var(--surface-card);
	box-shadow: var(--elevation-button);
	transition: border-color var(--motion-fast) var(--ease-standard);
}

.messageComposer__field:focus-within:not(:has(.gifPicker__view:focus-within, .emojiPicker__view:focus-within)) {
	border-color: var(--brand-primary);
}

.messageComposer__field:has(.messageComposer__textArea:focus-visible) {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--focus-ring-color);
}

.messageComposer__textArea {
	min-height: var(--control-height-medium);
	max-height: 24rem;
	padding: var(--pad-cell) 0;
	border: none;
	outline: none;
	background: transparent;
	color: var(--text-primary);
	font-family: var(--font-body);
	font-size: var(--font-size-body);
	line-height: var(--line-height-body);
	resize: none;
	field-sizing: content;
	overflow-y: auto;
}

.messageComposer__textArea::placeholder {
	color: var(--text-secondary);
}

.messageComposer__send {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-minimum);
	min-height: var(--touch-target-minimum);
	height: var(--control-height-medium);
	width: var(--control-height-medium);
	border: none;
	border-radius: var(--radius-button);
	background: var(--brand-primary);
	color: var(--text-on-brand);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), opacity var(--motion-fast) var(--ease-standard);
}

.messageComposer__send:hover {
	background: var(--brand-secondary);
}

.messageComposer__send:disabled {
	opacity: .5;
	cursor: default;
}

.messageComposer__sendGlyph {
	fill: var(--text-on-brand);
}

.messageComposer__mentionMenu {
	position: absolute;
	bottom: 100%;
	left: var(--pad-card);
	right: var(--pad-card);
	display: grid;
	gap: var(--gap-hairline);
	max-height: 24rem;
	overflow-y: auto;
	padding: var(--pad-dense);
	border: var(--border-width) solid var(--menu-border-color);
	border-radius: var(--menu-radius);
	background: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	z-index: 1;
}

.messageComposer__mentionOption {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: var(--gap-inline);
	min-height: var(--touch-target-minimum);
	padding: var(--pad-cell) var(--pad-dense);
	border: none;
	border-radius: var(--radius-button);
	background: transparent;
	color: var(--text-primary);
	font-family: var(--font-body);
	font-size: var(--font-size-body);
	text-align: start;
	cursor: pointer;
}

.messageComposer__mentionOption:hover {
	background: var(--menu-option-hover);
}

.messageComposer__mentionOption-active {
	background: var(--menu-option-selected);
}

.messageComposer__mentionName {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

:root[data-viewport="phone"] .messageComposer__view {
	padding: 0 var(--pad-dense) var(--pad-dense);
}

:root[data-viewport="phone"] .messageComposer__send {
	height: var(--touch-target-primary);
	width: var(--touch-target-primary);
}

:root[data-viewport="phone"] .messageComposer__mentionOption {
	min-height: var(--touch-target-primary);
}

/**
* gifPicker.css — Discord-style GIF search popover above a composer (#2464)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-18 Initial Version
*/

.gifPicker__view {
	position: absolute;
	bottom: 100%;
	left: var(--pad-card);
	right: var(--pad-card);
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: var(--gap-dense);
	height: 32rem;
	max-height: 70vh;
	margin-bottom: var(--gap-dense);
	padding: var(--pad-dense);
	border: var(--border-width) solid var(--menu-border-color);
	border-radius: var(--menu-radius);
	background: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	z-index: 2;
}

.gifPicker__view[hidden] {
	display: none;
}

.gifPicker__search {
	min-height: var(--control-height-medium);
}

.gifPicker__grid {
	min-height: 0;
}

.gifPicker__columns {
	column-count: 2;
	column-gap: var(--gap-dense);
}

.gifPicker__item {
	display: block;
	width: 100%;
	margin: 0 0 var(--gap-dense);
	padding: 0;
	overflow: hidden;
	border: none;
	border-radius: var(--radius-button);
	background: var(--surface-hover);
	cursor: pointer;
	break-inside: avoid;
}

.gifPicker__item:hover,
.gifPicker__item:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-width);
}

.gifPicker__preview {
	display: block;
	width: 100%;
	height: auto;
	vertical-align: middle;
}

.gifPicker__empty {
	min-height: 16rem;
}

.gifPicker__more,
.gifPicker__attribution {
	justify-self: center;
}

.gifPicker__attribution {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
}

.gifPicker__skeleton {
	height: 10rem;
	margin: 0 0 var(--gap-dense);
	border-radius: var(--radius-button);
	background: var(--surface-hover);
	break-inside: avoid;
}

:root[data-viewport="phone"] .gifPicker__view {
	left: var(--pad-dense);
	right: var(--pad-dense);
	height: 28rem;
}

/**
* composerTools.css — the icon bar beside a message field (GIF, then emoji) (#2464, #2473)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-18 Initial Version
*/

.composerTools__view {
	display: flex;
	align-items: center;
	gap: var(--gap-hairline);
	flex: none;
}

.composerTools__tool {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-minimum);
	min-height: var(--touch-target-minimum);
	height: var(--control-height-medium);
	padding: 0 var(--pad-dense);
	border: none;
	border-radius: var(--radius-button);
	background: transparent;
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	cursor: pointer;
}

.composerTools__tool:hover,
.composerTools__tool-open {
	color: var(--text-brand);
}

.composerTools__tool:disabled {
	opacity: .5;
	cursor: default;
}

.composerTools__emojiGlyph {
	height: 1.4rem;
	width: 1.4rem;
	color: inherit;
}

:root[data-viewport="phone"] .composerTools__tool {
	min-height: var(--touch-target-primary);
	height: var(--touch-target-primary);
}

/**
* emojiPicker.css — spacious picker and articulated emoji parts (#2473)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
* @version 2026-September-18 Full-color artwork, expression motion and message sizing
*/

.emojiPicker__view {
	position: absolute;
	bottom: 100%;
	right: var(--pad-card);
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto auto auto minmax(0, 1fr);
	gap: var(--gap-dense);
	width: 36rem;
	max-width: calc(100% - var(--pad-card) * 2);
	height: 38rem;
	max-height: 65dvh;
	margin-bottom: var(--gap-dense);
	padding: var(--pad-card);
	border: var(--border-width) solid var(--menu-border-color);
	border-radius: var(--menu-radius);
	background: var(--menu-surface);
	box-shadow: var(--menu-elevation);
	z-index: 2;
}

.emojiPicker__view[hidden] { display: none; }

.emojiPicker__heading {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-dense);
}

.emojiPicker__title {
	color: var(--text-primary);
	font-family: var(--font-body);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-heading);
}

.emojiPicker__count {
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
}

.emojiPicker__search {
	min-height: var(--control-height-medium);
	min-width: 0;
	width: 100%;
}

.emojiPicker__tabs {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	gap: var(--gap-hairline);
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
}

.emojiPicker__tab {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--gap-hairline);
	min-height: 5rem;
	padding: var(--pad-dense);
	border: none;
	border-radius: var(--radius-button);
	background: transparent;
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	cursor: pointer;
}

.emojiPicker__tab-active,
.emojiPicker__tab:hover {
	color: var(--text-primary);
	background: var(--surface-hover);
}

.emojiPicker__grid { min-height: 0; min-width: 0; }

.emojiPicker__cells {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(4.4rem, 1fr));
	gap: var(--gap-hairline);
}

.emojiPicker__item {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-primary);
	min-height: 4.8rem;
	padding: var(--pad-cell);
	border: none;
	border-radius: var(--radius-button);
	background: transparent;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-enter);
}

.emojiPicker__item:hover,
.emojiPicker__item:focus-visible { background: var(--surface-hover); }

.emojiPicker__item:focus-visible,
.emojiPicker__tab:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: calc(-1 * var(--focus-ring-width));
}

.emojiPicker__item:active { background: var(--surface-selected); }
.emojiPicker__empty {
	min-height: 0;
	height: 100%;
	gap: var(--gap-dense);
}

.emojiPicker__empty .icon__view-splash {
	width: 8rem;
	height: 8rem;
}

.emoji__svg {
	height: 3.6rem;
	width: 3.6rem;
	flex: none;
	overflow: visible;
	pointer-events: none;
	--emoji-play-state: paused;
}

.emojiPicker__item:is(:hover, :focus-visible) .emoji__svg,
.emojiPicker__tab:is(:hover, :focus-visible) .emoji__svg,
.messageTile__reaction:is(:hover, :focus-visible) .emoji__svg,
.boardConversation__reaction:is(:hover, :focus-visible) .emoji__svg,
.composerTools__emoji:is(:hover, :focus-visible) .emoji__svg,
.messageTile__addReaction:is(:hover, :focus-visible) .emoji__svg,
.emoji__svg-inline:hover,
.messageBody__emojiOnly .emoji__svg {
	--emoji-play-state: running;
}

.emoji__svg-tab { height: 2.2rem; width: 2.2rem; }
.composerTools__emoji .emoji__svg,
.messageTile__addReaction .emoji__svg { height: 2rem; width: 2rem; }

.emoji__svg-inline {
	display: inline-block;
	height: 2.4rem;
	width: 2.4rem;
	vertical-align: -.5rem;
	pointer-events: auto;
}

.messageBody__emojiOnly {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-tight);
	padding-block: var(--pad-cell);
}

.messageBody__emojiOnly .emoji__svg-inline {
	height: 5.6rem;
	width: 5.6rem;
}

.emoji__svg-reaction { height: 2.2rem; width: 2.2rem; }

.emojiPart {
	transform-box: fill-box;
	transform-origin: center;
	animation-duration: 2.8s;
	animation-timing-function: cubic-bezier(.45, 0, .25, 1);
	animation-iteration-count: infinite;
	animation-play-state: var(--emoji-play-state, paused);
}

.emojiPart-eyes { animation-name: emojiBlink; animation-duration: 3.6s; }
.emojiPart-mouth { animation-name: emojiLaugh; transform-origin: center top; }
.emojiPart-smile { animation-name: emojiSmile; }
.emojiPart-wink { animation-name: emojiWink; }
.emojiPart-love { animation-name: emojiLove; }
.emojiPart-tear { animation-name: emojiTear; animation-duration: 1.8s; }
.emojiPart-brow { animation-name: emojiBrow; }
.emojiPart-glasses { animation-name: emojiBrow; animation-duration: 3.6s; }
.emojiPart-hand { animation-name: emojiConsider; }
.emojiPart-breathe { animation-name: emojiBreathe; }
.emojiPart-sleep { animation-name: emojiSteam; animation-duration: 3.4s; }
.emojiPart-hugLeft { animation-name: emojiHug; transform-origin: left bottom; }
.emojiPart-hugRight { animation-name: emojiHug; animation-direction: reverse; transform-origin: right bottom; }
.emojiPart-heart { animation-name: emojiLove; }
.emojiPart-glint, .emojiPart-shine { animation-name: emojiGlint; }
.emojiPart-shineSmall { animation-name: emojiGlint; animation-delay: -.7s; }
.emojiPart-thumb { animation-name: emojiThumb; transform-origin: left bottom; }
.emojiPart-fingers { animation-name: emojiFingers; transform-origin: center bottom; }
.emojiPart-signal { animation-name: emojiSignal; }
.emojiPart-clapBack { animation-name: emojiClapBack; transform-origin: center bottom; }
.emojiPart-clapFront { animation-name: emojiClapFront; transform-origin: center bottom; }
.emojiPart-prayLeft { animation-name: emojiPray; transform-origin: right bottom; }
.emojiPart-prayRight { animation-name: emojiPray; animation-direction: reverse; transform-origin: left bottom; }
.emojiPart-flame { animation-name: emojiFlame; animation-duration: 1.6s; transform-origin: center bottom; }
.emojiPart-flameCore { animation-name: emojiFlame; animation-duration: 1.1s; animation-direction: reverse; transform-origin: center bottom; }
.emojiPart-score { animation-name: emojiSmile; }
.emojiPart-underline { animation-name: emojiUnderline; transform-origin: left; }
.emojiPart-confetti { animation-name: emojiConfetti; }
.emojiPart-pupils { animation-name: emojiPupils; animation-duration: 3.6s; }
.emojiPart-jaw { animation-name: emojiJaw; }
.emojiPart-beacon { animation-name: emojiSignal; }
.emojiPart-earLeft { animation-name: emojiEar; transform-origin: right top; }
.emojiPart-earRight { animation-name: emojiEar; animation-direction: reverse; transform-origin: left top; }
.emojiPart-tongue { animation-name: emojiTongue; transform-origin: center top; }
.emojiPart-check { animation-name: emojiCheck; }
.emojiPart-crossLeft { animation-name: emojiCross; }
.emojiPart-crossRight { animation-name: emojiCross; animation-direction: reverse; }
.emojiPart-light, .emojiPart-rays { animation-name: emojiLight; }
.emojiPart-petals { animation-name: emojiBloom; }
.emojiPart-cheese { animation-name: emojiCheese; transform-origin: center top; }
.emojiPart-steam { animation-name: emojiSteam; animation-duration: 3s; }
.emojiPart-foam { animation-name: emojiFoam; }
.emojiPart-bubbles { animation-name: emojiSteam; animation-duration: 2s; }
.emojiPart-candles { animation-name: emojiFlame; animation-duration: 1.4s; transform-origin: center bottom; }

:root[data-viewport="phone"] .emojiPicker__view {
	right: var(--pad-dense);
	max-width: calc(100% - var(--pad-dense) * 2);
	height: 35rem;
}

@media (prefers-reduced-motion: reduce) {
	.emojiPart { animation: none !important; }
}

/**
* composerToolkit.css — the tools bar plus its pickers, as one grid cell of the host's field (#2473)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-18 Initial Version
*/

.composerToolkit__view {
	display: grid;
	flex: none;
}

/**
* chatEntityStrip.css — the chat's entity column (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.chatEntityStrip__view {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--gap-dense);
	width: 6.4rem;
	height: 100%;
	min-height: 0;
	padding: var(--pad-dense) 0;
	overflow-y: auto;
	overflow-x: hidden;
	background: var(--surface-sunken);
	border-right: var(--border-width) solid var(--border-default);
}

.chatEntityStrip__entity {
	position: relative;
	display: grid;
	place-items: center;
	flex: none;
	width: 100%;
	min-height: var(--touch-target-primary);
	padding: var(--gap-hairline) 0;
	border: none;
	background: transparent;
	cursor: pointer;
}

.chatEntityStrip__indicator {
	position: absolute;
	left: 0;
	top: 50%;
	width: .4rem;
	height: 4rem;
	border-radius: 0 var(--radius-pill) var(--radius-pill) 0;
	background: var(--brand-primary);
	translate: 0 -50%;
	scale: 1 0;
	transition: scale var(--motion-fast) var(--ease-standard);
}

.chatEntityStrip__entity:hover .chatEntityStrip__indicator {
	scale: 1 .5;
}

.chatEntityStrip__entity-selected .chatEntityStrip__indicator {
	scale: 1 1;
}

.chatEntityStrip__avatar {
	border-radius: var(--radius-avatar);
	transition: border-radius var(--motion-fast) var(--ease-standard), box-shadow var(--motion-fast) var(--ease-standard);
}

.chatEntityStrip__entity:hover .chatEntityStrip__avatar,
.chatEntityStrip__entity-selected .chatEntityStrip__avatar {
	border-radius: var(--radius-card);
}

.chatEntityStrip__entity-selected .chatEntityStrip__avatar {
	box-shadow: 0 0 0 .2rem var(--surface-sunken), 0 0 0 .4rem var(--brand-primary);
}

.chatEntityStrip__entity:focus-visible {
	outline-offset: .2rem;
	border-radius: var(--radius-card);
}

.chatEntityStrip__unread {
	position: absolute;
	right: .6rem;
	bottom: .2rem;
	min-width: 1.8rem;
	height: 1.8rem;
	padding: 0 var(--gap-hairline);
	border-radius: var(--radius-pill);
	background: var(--status-danger);
	color: var(--text-on-status);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: 1.8rem;
	text-align: center;
	box-shadow: 0 0 0 .2rem var(--surface-sunken);
}

.chatEntityStrip__rule {
	flex: none;
	width: 3.2rem;
	border-top: var(--border-width) solid var(--border-strong);
}

:root[data-viewport="phone"] .chatEntityStrip__view {
	width: 5.6rem;
}

:root[data-viewport="phone"] .chatEntityStrip__avatar {
	height: 3.6rem;
	width: 3.6rem;
}

/**
* chatConversationList.css — the chat's conversation column (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.chatConversationList__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	width: 24rem;
	height: 100%;
	min-height: 0;
	background: var(--surface-card);
	border-right: var(--border-width) solid var(--border-default);
}

.chatConversationList__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	min-height: var(--control-height-larger);
	padding: var(--pad-dense) var(--pad-dense) var(--pad-dense) var(--pad-card);
	border-bottom: var(--border-width) solid var(--border-default);
}

.chatConversationList__entityName {
	margin: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
}

.chatConversationList__new {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-minimum);
	min-height: var(--touch-target-minimum);
	border-radius: var(--radius-button);
}

.chatConversationList__new:hover {
	background: var(--surface-hover);
}

.chatConversationList__scroll {
	display: grid;
	align-content: start;
	gap: var(--gap-hairline);
	padding: var(--pad-dense);
}

.chatConversationList__sectionLabel {
	padding: var(--pad-dense) var(--pad-dense) var(--pad-cell);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
}

.chatConversationList__row {
	display: grid;
	grid-template-columns: 2.5rem minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	width: 100%;
	min-height: var(--control-height-medium);
	padding: var(--pad-cell) var(--pad-dense);
	border: none;
	border-radius: var(--radius-button);
	background: transparent;
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-body);
	text-align: start;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.chatConversationList__row:hover {
	background: var(--surface-hover);
	color: var(--text-primary);
}

.chatConversationList__row-unread {
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
}

.chatConversationList__row-selected {
	background: var(--surface-selected);
	color: var(--text-primary);
}

.chatConversationList__hash {
	justify-self: center;
	color: var(--text-secondary);
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-medium);
	line-height: 1;
}

.chatConversationList__row-selected .chatConversationList__hash {
	color: var(--text-brand);
}

.chatConversationList__title {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.chatConversationList__unread {
	min-width: 1.8rem;
	padding: 0 var(--gap-tight);
	border-radius: var(--radius-pill);
	background: var(--status-danger);
	color: var(--text-on-status);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: 1.8rem;
	text-align: center;
}

.chatConversationList__row-draft {
	color: var(--text-primary);
}

.chatConversationList__draftMark {
	padding: 0 var(--gap-tight);
	border-radius: var(--radius-pill);
	background: var(--surface-selected);
	color: var(--text-brand);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: 1.8rem;
}

.chatConversationList__empty {
	padding: var(--pad-card);
}

:root[data-viewport="phone"] .chatConversationList__view {
	width: auto;
	border-right: none;
}

:root[data-viewport="phone"] .chatConversationList__row {
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .chatConversationList__new {
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
}

/**
* chatConversation.css — the chat's conversation column (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.chatConversation__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	height: 100%;
	min-height: 0;
	min-width: 0;
	background: var(--surface-card);
}

.chatConversation__view:has(> .chatConversation__empty) {
	grid-template-rows: minmax(0, 1fr);
}

.chatConversation__view:has(> .chatConversation__draftLead) {
	grid-template-rows: auto minmax(0, 1fr) auto;
}

.chatConversation__draftLead {
	align-self: end;
	justify-self: start;
	max-width: 48rem;
	margin: var(--pad-card);
	background: transparent;
	text-align: start;
}

.chatConversation__empty {
	align-self: center;
	justify-self: center;
	max-width: 40rem;
	background: transparent;
}

.chatConversation__header {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-height: var(--control-height-larger);
	padding: var(--pad-dense) var(--pad-card);
	border-bottom: var(--border-width) solid var(--border-default);
	background: var(--surface-card);
}

.chatConversation__hash {
	color: var(--text-secondary);
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-medium);
	line-height: 1;
}

.chatConversation__title {
	margin: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
}

.chatConversation__memberCount {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	white-space: nowrap;
}

.chatConversation__actions {
	display: flex;
	align-items: center;
	gap: var(--gap-hairline);
	margin-left: auto;
}

.chatConversation__action {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-minimum);
	min-height: var(--touch-target-minimum);
	border-radius: var(--radius-button);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.chatConversation__action:hover {
	background: var(--surface-hover);
}

.chatConversation__action-pressed {
	background: var(--surface-selected);
}

.chatConversation__back {
	rotate: 180deg;
}

:root[data-viewport="phone"] .chatConversation__header {
	padding: var(--pad-dense);
}

:root[data-viewport="phone"] .chatConversation__action {
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .chatConversation__memberCount {
	display: none;
}

/**
* chatMemberList.css — the chat's members column (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.chatMemberList__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	width: 24rem;
	height: 100%;
	min-height: 0;
	background: var(--surface-card);
	border-left: var(--border-width) solid var(--border-default);
}

.chatMemberList__heading {
	display: flex;
	align-items: center;
	min-height: var(--control-height-larger);
	margin: 0;
	padding: var(--pad-dense) var(--pad-card);
	border-bottom: var(--border-width) solid var(--border-default);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
}

.chatMemberList__scroll {
	display: grid;
	align-content: start;
	gap: var(--gap-hairline);
	padding: var(--pad-dense);
}

.chatMemberList__member {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	min-height: var(--control-height-large);
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-button);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.chatMemberList__member:hover {
	background: var(--surface-hover);
}

.chatMemberList__name {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
}

.chatMemberList__you {
	padding: 0 var(--pad-cell);
	border-radius: var(--radius-pill);
	background: var(--surface-selected);
	color: var(--text-brand);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
}

:root[data-viewport="phone"] .chatMemberList__view {
	width: auto;
	border-left: none;
}

/**
* chatPeoplePicker.css — the direct-message start dialog (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.chatPeoplePicker__view {
	display: grid;
	grid-template-rows: auto auto auto minmax(0, 1fr) auto;
	gap: var(--gap-stack);
	width: min(44rem, calc(100dvw - 2 * var(--pad-card)));
	max-height: min(60dvh, 56rem);
	padding: var(--pad-card);
	background: var(--surface-card);
	border-radius: var(--radius-card);
}

.chatPeoplePicker__heading {
	margin: 0;
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
}

.chatPeoplePicker__lead {
	margin: 0;
	color: var(--text-secondary);
}

.chatPeoplePicker__list {
	display: grid;
	align-content: start;
	gap: var(--gap-hairline);
	min-height: 12rem;
	padding: var(--gap-hairline);
}

.chatPeoplePicker__person {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	width: 100%;
	min-height: var(--control-height-medium);
	padding: var(--pad-cell) var(--pad-dense);
	border: none;
	border-radius: var(--radius-button);
	background: transparent;
	color: var(--text-primary);
	font-family: var(--font-body);
	font-size: var(--font-size-body);
	text-align: start;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.chatPeoplePicker__person:hover {
	background: var(--surface-hover);
}

.chatPeoplePicker__person-selected {
	background: var(--surface-selected);
}

.chatPeoplePicker__avatarGap {
	width: 3rem;
	height: 3rem;
}

.chatPeoplePicker__name {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.chatPeoplePicker__check {
	color: var(--text-brand);
}

.chatPeoplePicker__noMatch,
.chatPeoplePicker__loading,
.chatPeoplePicker__count {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
}

.chatPeoplePicker__noMatch,
.chatPeoplePicker__loading {
	padding: var(--pad-dense);
}

.chatPeoplePicker__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding-top: var(--pad-dense);
	border-top: var(--border-width) solid var(--border-default);
}

:root[data-viewport="phone"] .chatPeoplePicker__person {
	min-height: var(--touch-target-primary);
}

/**
* chatConversationNameForm.css — the entity conversation's name dialog (#2334)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-12 Initial Version
*/

.chatConversationNameForm__view {
	display: grid;
	gap: var(--gap-stack);
	width: min(40rem, calc(100dvw - 2 * var(--pad-card)));
	padding: var(--pad-card);
	background: var(--surface-card);
	border-radius: var(--radius-card);
}

.chatConversationNameForm__heading {
	margin: 0;
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
}

.chatConversationNameForm__lead {
	margin: 0;
	color: var(--text-secondary);
}

.chatConversationNameForm__foot {
	display: flex;
	justify-content: flex-end;
	padding-top: var(--pad-dense);
}

/**
* entityProfileCard.css — the avatar's profile panel: a masthead over a live conversation (#2519)
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-21 Initial Version
*/

.entityProfileCard__view {
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-dense);
	width: 34rem;
	max-width: calc(100dvw - var(--pad-card) * 2);
	height: auto;
	max-height: 70dvh;
	padding: var(--pad-card);
	border: var(--border-width) solid var(--menu-border-color);
	border-radius: var(--menu-radius);
	background: var(--menu-surface);
	box-shadow: var(--menu-elevation);
}

.entityProfileCard__view:not(:popover-open) {
	display: none;
}

/* A conversation needs a definite height to scroll in; the draft, self and unavailable arms shrink to their content. */
.entityProfileCard__view:has(.chatView__view) {
	height: 44rem;
}

.entityProfileCard__header {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: start;
	gap: var(--gap-inline);
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
}

.entityProfileCard__identity {
	display: grid;
	align-content: start;
	justify-items: start;
	gap: var(--gap-hairline);
	min-width: 0;
	text-align: start;
}

.entityProfileCard__name {
	overflow: hidden;
	max-width: 100%;
	margin: 0;
	text-align: start;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.entityProfileCard__nameSkeleton {
	width: 60%;
	min-height: var(--control-height-small);
}

.entityProfileCard__standing {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-hairline);
}

.entityProfileCard__roles {
	overflow: hidden;
	max-width: 100%;
	color: var(--text-secondary);
	text-align: start;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.entityProfileCard__conversation {
	display: grid;
	align-content: start;
	gap: var(--gap-dense);
	padding: var(--pad-dense) 0;
}

.entityProfileCard__messageSkeleton {
	min-height: var(--control-height-large);
}

.entityProfileCard__draftLead,
.entityProfileCard__selfLead {
	align-self: start;
	margin: 0;
	padding: var(--pad-cell) 0 0;
	color: var(--text-secondary);
}

.entityProfileCard__empty {
	grid-row: span 2;
	align-self: center;
}

:root[data-viewport="phone"] .entityProfileCard__view {
	width: calc(100dvw - var(--pad-card) * 2);
}

:root[data-viewport="phone"] .entityProfileCard__view:has(.chatView__view) {
	height: 60dvh;
}

/**
* itemMessageBoard.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-04 Initial Version — item message board tab (#1455)
*/

.itemMessageBoard__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: var(--gap-inline);
	height: 100%;
	min-height: 0;
}

.itemMessageBoard__head {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-shorthand);
}

.itemMessageBoard__threadCount {
	color: var(--text-secondary);
}

.itemMessageBoard__follow {
	margin-left: auto;
	transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.itemMessageBoard__skeleton {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: var(--gap-section);
	min-height: 0;
	overflow: hidden;
}

.itemMessageBoard__composer {
	position: relative;
	display: grid;
	gap: var(--gap-tight);
	padding-top: var(--pad-dense);
	border-top: var(--border-shorthand);
}

.itemMessageBoard__replyChip {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	color: var(--text-secondary);
}

.itemMessageBoard__replyChipLabel {
	color: var(--text-secondary);
}

.itemMessageBoard__composerForm {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.itemMessageBoard__composerInput {
	flex: 1;
	min-width: 0;
}

.itemMessageBoard__composerSend {
	flex: none;
}

/**
* filesPanel.css — the Files tab shell: the docked slot and the placeholder shown while the workspace floats (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.filesPanel__view {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	min-height: 0;
	height: 100%;
	padding: 0;
	overflow: hidden;
}

.filesPanel__view > [data-slot="workspace"] {
	display: contents;
}

.filesPanel__floatingNotice {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--gap-stack);
	padding: var(--pad-sheet);
	min-height: 24rem;
	color: var(--text-secondary);
	border: var(--border-width) dashed var(--border-strong);
	border-radius: var(--radius-card);
	margin: var(--pad-card);
}

.filesPanel__floatingNoticeIcon {
	color: var(--text-disabled);
}

:root[data-viewport="phone"] .filesPanel__view {
	display: block;
	overflow: auto;
}

/**
* filesWorkspace.css — the two-pane Files surface, docked in the tab or floating in the top layer (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.filesWorkspace__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
	height: 100%;
	padding: var(--pad-card);
	background-color: var(--surface-card);
	border-radius: var(--radius-card);
	transition: transform var(--motion-slow) var(--ease-enter), box-shadow var(--motion-slow) var(--ease-enter);
}

.filesWorkspace__toolbarSkeleton {
	height: 4rem;
}

.filesWorkspace__body {
	display: grid;
	grid-template-columns: minmax(20rem, 2fr) minmax(0, 3fr);
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
}

.filesWorkspace__body-withRequests {
	grid-template-rows: minmax(12rem, auto) minmax(16rem, 1fr);
}

.filesWorkspace__pane {
	min-height: 0;
	min-width: 0;
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	background-color: var(--surface-raised);
}

.filesWorkspace__pane-list {
	overflow: hidden;
}

.filesWorkspace__pane-viewer {
	overflow: hidden;
}

.filesWorkspace__pane-requests {
	grid-column: 1 / -1;
	min-height: 12rem;
	max-height: 32rem;
	overflow: auto;
}

.filesWorkspace__pane-requests-open {
	border-color: var(--status-warning);
}

.filesWorkspace__view-floating {
	position: fixed;
	inset: var(--pad-shell);
	width: auto;
	height: auto;
	max-width: none;
	max-height: none;
	margin: 0;
	border: 0;
	overflow: hidden;
	color: inherit;
	box-shadow: var(--elevation-overlay);
	border-radius: var(--radius-sheet);
}

.filesWorkspace__view-floating::backdrop {
	background-color: var(--surface-overlay);
	transition: opacity var(--motion-slow) var(--ease-enter);
}

@starting-style {
	.filesWorkspace__view-floating:popover-open::backdrop {
		opacity: 0;
	}
}

:root[data-viewport="phone"] .filesWorkspace__view {
	display: flex;
	flex-direction: column;
	height: auto;
	min-height: 100%;
}

:root[data-viewport="phone"] .filesWorkspace__body,
:root[data-viewport="phone"] .filesWorkspace__body-withRequests {
	display: flex;
	flex-direction: column;
}

:root[data-viewport="phone"] .filesWorkspace__pane {
	flex: none;
	display: block;
	max-height: none;
	overflow: visible;
}

:root[data-viewport="phone"] .filesWorkspace__view-floating {
	inset: var(--pad-page);
	border-radius: var(--radius-card);
	min-height: 0;
	overflow: auto;
}


/**
* filesToolbar.css — the Files refine row (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.filesToolbar__view {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--gap-inline) var(--gap-stack);
	min-width: 0;
}

.filesToolbar__refine {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--gap-inline);
	min-width: 0;
	flex: 1 1 auto;
}

.filesToolbar__search {
	flex: 1 1 18rem;
	min-width: 14rem;
	max-width: 32rem;
}

.filesToolbar__picker {
	flex: 1 1 11rem;
	min-width: 10rem;
	max-width: 18rem;
}

.filesToolbar__count {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.filesToolbar__actions {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	flex: 0 0 auto;
}

.filesToolbar__float {
	flex: none;
}

:root[data-viewport="phone"] .filesToolbar__search {
	flex-basis: 100%;
	max-width: none;
}

:root[data-viewport="phone"] .filesToolbar__search .searchBar__input {
	font-size: var(--font-size-body);
}

:root[data-viewport="phone"] .filesToolbar__picker {
	flex: 1 1 40%;
	max-width: none;
}

:root[data-viewport="phone"] .filesToolbar__actions {
	width: 100%;
	justify-content: flex-end;
}

/**
* fileTree.css — the Files navigator pane (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.fileTree__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	min-height: 0;
	height: 100%;
}

.fileTree__breadcrumb {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--gap-tight);
	padding: var(--pad-row) var(--pad-card);
	border-bottom: var(--border-shorthand);
	min-height: 3.6rem;
}

.fileTree__crumb {
	color: var(--text-secondary);
	cursor: pointer;
	border-radius: var(--radius-dense);
	padding: 0 var(--pad-cell);
}

.fileTree__crumb:hover,
.fileTree__crumb:focus-visible {
	color: var(--text-link);
	text-decoration: underline;
	text-underline-offset: .2rem;
}

.fileTree__crumb-current {
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
	cursor: default;
}

.fileTree__crumb-current:hover {
	color: var(--text-primary);
	text-decoration: none;
}

.fileTree__crumbSeparator {
	color: var(--text-disabled);
}

.fileTree__list {
	display: flex;
	flex-direction: column;
	min-height: 0;
	padding: var(--pad-dense);
	gap: var(--gap-hairline);
}

.fileTree__row {
	flex: none;
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	min-height: 4.4rem;
	scroll-margin-block: var(--pad-dense);
	padding: var(--pad-dense) var(--pad-row);
	border-radius: var(--radius-button);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.fileTree__row:hover {
	background-color: var(--surface-hover);
}

.fileTree__row:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: calc(-1 * var(--focus-ring-width));
}

.fileTree__row-selected,
.fileTree__row-selected:hover {
	background-color: var(--surface-selected);
}

.fileTree__row-editor {
	cursor: default;
	grid-template-columns: auto minmax(0, 1fr) auto auto;
}

.fileTree__editorInput {
	min-width: 0;
}

.fileTree__rowIcon {
	color: var(--text-secondary);
}

.fileTree__row-selected .fileTree__rowIcon,
.fileTree__row-folder .fileTree__rowIcon {
	color: var(--icon-accent, var(--brand-primary));
}

.fileTree__rowBody {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.fileTree__rowTitleLine {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.fileTree__rowTitle {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-weight: var(--font-weight-medium);
}

.fileTree__rowLock {
	color: var(--text-secondary);
	flex: none;
}

.fileTree__rowMeta {
	color: var(--text-secondary);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-variant-numeric: tabular-nums;
}

.fileTree__rowFacts {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--gap-hairline) var(--gap-inline);
	min-width: 0;
}

.fileTree__rowFacts .fileTree__rowMeta {
	flex: 1 1 10rem;
}

.fileTree__rowStatus {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-tight);
	flex: none;
}

.fileTree__noteCount {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-hairline);
	color: var(--text-secondary);
}

.fileTree__rowActions {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

@media (hover: hover) {
	.fileTree__rowActions {
		opacity: 0;
		transition: opacity var(--motion-fast) var(--ease-standard);
	}

	.fileTree__row:hover .fileTree__rowActions,
	.fileTree__row:focus-within .fileTree__rowActions {
		opacity: 1;
	}
}

.fileTree__rowAction {
	color: var(--text-secondary);
}

.fileTree__empty {
	flex: 1;
	justify-content: center;
	padding: var(--pad-sheet);
}

:root[data-viewport="phone"] .fileTree__view {
	height: auto;
}

:root[data-viewport="phone"] .fileTree__list {
	height: auto;
	overflow: visible;
}

/**
* fileViewer.css — the Files viewer pane (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.fileViewer__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	min-height: 0;
	height: 100%;
}

.fileViewer__empty {
	height: 100%;
	justify-content: center;
	padding: var(--pad-sheet);
}

.fileViewer__header {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: start;
	gap: var(--gap-inline);
	padding: var(--pad-card);
	border-bottom: var(--border-shorthand);
}

.fileViewer__kindIcon {
	color: var(--icon-accent, var(--brand-primary));
	margin-top: var(--gap-hairline);
}

.fileViewer__titleBlock {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.fileViewer__titleRow {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.fileViewer__title {
	text-align: left;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.fileViewer__titleAction,
.fileViewer__lock {
	color: var(--text-secondary);
	flex: none;
}

.fileViewer__renameFields {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.fileViewer__renameInput {
	flex: 1;
	min-width: 0;
}

.fileViewer__facts {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.fileViewer__headerActions {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	flex-wrap: wrap;
	justify-content: flex-end;
}

.fileViewer__scroll {
	display: flex;
	flex-direction: column;
	gap: var(--gap-section);
	min-height: 0;
	padding: var(--pad-card);
}

.fileViewer__preview {
	display: grid;
	place-items: center;
	min-height: 24rem;
	max-height: 60dvh;
	background-color: var(--surface-sunken);
	border-radius: var(--radius-card);
	overflow: hidden;
	box-shadow: var(--elevation-inset);
}

.fileViewer__preview-pdf {
	min-height: 32rem;
	max-height: 60dvh;
}

.fileViewer__preview-pdf > .iframe {
	width: 100%;
	height: 100%;
	min-height: 32rem;
	border: 0;
	background-color: var(--surface-card);
}

.fileViewer__image {
	max-width: 100%;
	max-height: 60dvh;
	object-fit: contain;
}

.fileViewer__video {
	width: 100%;
	max-height: 60dvh;
	background-color: var(--surface-sunken);
}

.fileViewer__audioPlate {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--gap-stack);
	padding: var(--pad-sheet);
	width: 100%;
}

.fileViewer__audioIcon {
	color: var(--text-disabled);
	max-height: 12rem;
}

.fileViewer__audio {
	width: 100%;
}

.fileViewer__section {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.fileViewer__statusRow {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-stack) var(--gap-section);
}

.fileViewer__section-status {
	flex: 1 1 24rem;
	min-width: 0;
}

.fileViewer__sectionHead {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.fileViewer__sectionLabel {
	color: var(--text-primary);
}

.fileViewer__sectionHint {
	color: var(--text-secondary);
}

.fileViewer__ladder {
	display: inline-flex;
	align-items: stretch;
	border: var(--border-shorthand);
	border-radius: var(--radius-button);
	overflow: hidden;
	width: fit-content;
	max-width: 100%;
}

.fileViewer__ladderStop {
	border-radius: 0;
	border-right: var(--border-shorthand);
	color: var(--text-secondary);
	padding: var(--pad-dense) var(--pad-button-inline);
	background: transparent;
	box-shadow: none;
}

.fileViewer__ladderStop:last-child {
	border-right: 0;
}

.fileViewer__ladderStop:enabled:hover {
	background-color: var(--surface-hover);
	color: var(--text-primary);
}

.fileViewer__ladderStop.fileViewer__ladderStop:disabled {
	opacity: 1;
	cursor: default;
	color: var(--text-disabled);
	background: transparent;
}

.fileViewer__ladderStop.fileViewer__ladderStop-current,
.fileViewer__ladderStop.fileViewer__ladderStop-current:disabled,
.fileViewer__ladderStop.fileViewer__ladderStop-current:enabled:hover {
	color: var(--text-on-status);
	font-weight: var(--font-weight-medium);
	cursor: default;
}

.fileViewer__ladderStop.fileViewer__ladderStop-warning,
.fileViewer__ladderStop.fileViewer__ladderStop-warning:disabled,
.fileViewer__ladderStop.fileViewer__ladderStop-warning:enabled:hover { background-color: var(--status-warning); }
.fileViewer__ladderStop.fileViewer__ladderStop-success,
.fileViewer__ladderStop.fileViewer__ladderStop-success:disabled,
.fileViewer__ladderStop.fileViewer__ladderStop-success:enabled:hover { background-color: var(--status-success); }
.fileViewer__ladderStop.fileViewer__ladderStop-danger,
.fileViewer__ladderStop.fileViewer__ladderStop-danger:disabled,
.fileViewer__ladderStop.fileViewer__ladderStop-danger:enabled:hover { background-color: var(--status-danger); }
.fileViewer__ladderStop.fileViewer__ladderStop-partial,
.fileViewer__ladderStop.fileViewer__ladderStop-partial:disabled,
.fileViewer__ladderStop.fileViewer__ladderStop-partial:enabled:hover { background-color: var(--status-partial); }

.fileViewer__ladderStop.fileViewer__ladderStop-neutral,
.fileViewer__ladderStop.fileViewer__ladderStop-neutral:disabled,
.fileViewer__ladderStop.fileViewer__ladderStop-neutral:enabled:hover {
	background-color: var(--surface-selected);
	color: var(--text-primary);
}

.fileViewer__movePicker {
	max-width: 28rem;
}

.fileViewer__section-danger {
	padding-top: var(--pad-card);
	border-top: var(--border-shorthand);
	align-items: flex-start;
}

:root[data-viewport="phone"] .fileViewer__header {
	grid-template-columns: auto minmax(0, 1fr);
}

:root[data-viewport="phone"] .fileViewer__headerActions {
	grid-column: 1 / -1;
	justify-content: flex-start;
}

:root[data-viewport="phone"] .fileViewer__preview-pdf,
:root[data-viewport="phone"] .fileViewer__preview-pdf > .iframe {
	min-height: 28rem;
}

/**
* fileAudienceEditor.css — the file whitelist editor (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.fileAudienceEditor__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.fileAudienceEditor__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--gap-inline);
}

.fileAudienceEditor__everyone {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

.fileAudienceEditor__everyoneLabel {
	color: var(--text-secondary);
}

.fileAudienceEditor__roles {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-tight) var(--gap-stack);
	transition: opacity var(--motion-fast) var(--ease-standard);
}

.fileAudienceEditor__roles-collapsed {
	opacity: .5;
}

.fileAudienceEditor__role {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
}

.fileAudienceEditor__roleLabel {
	color: var(--text-primary);
}

.fileAudienceEditor__role-locked .fileAudienceEditor__roleLabel {
	color: var(--text-secondary);
}

.fileAudienceEditor__roleHint {
	color: var(--text-disabled);
}

/**
* fileNotes.css — a file's notes thread (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.fileNotes__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.fileNotes__label {
	color: var(--text-primary);
}

.fileNotes__empty {
	color: var(--text-secondary);
}

.fileNotes__thread {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
}

.fileNotes__note {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: start;
	gap: var(--gap-inline);
}

.fileNotes__avatar {
	flex: none;
}

.fileNotes__noteBody {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.fileNotes__noteMeta {
	display: flex;
	align-items: baseline;
	gap: var(--gap-tight);
}

.fileNotes__date {
	color: var(--text-secondary);
}

.fileNotes__content {
	white-space: pre-wrap;
	overflow-wrap: anywhere;
}

.fileNotes__delete {
	color: var(--text-secondary);
}

.fileNotes__composer {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: end;
	gap: var(--gap-inline);
}

.fileNotes__composer > textarea {
	min-height: 6rem;
	resize: vertical;
}

/**
* newFileDialog.css — the Add-file dialog (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.newFileDialog__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	width: min(52rem, 90vw);
	padding: var(--pad-sheet);
}

.newFileDialog__heading {
	text-align: left;
}

.newFileDialog__hint {
	color: var(--text-secondary);
}

.newFileDialog__dropZone {
	display: flex;
	align-items: center;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	border: var(--border-width) dashed var(--border-strong);
	border-radius: var(--radius-card);
	background-color: var(--surface-sunken);
	cursor: pointer;
	transition: border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard);
}

.newFileDialog__dropZone:hover,
.newFileDialog__dropZone:focus-visible,
.newFileDialog__dropZone-active {
	border-color: var(--brand-primary);
	background-color: var(--surface-selected);
}

.newFileDialog__dropZone-picked {
	border-style: solid;
	background-color: var(--surface-card);
}

.newFileDialog__dropIcon {
	color: var(--icon-accent, var(--brand-primary));
	flex: none;
}

.newFileDialog__picked {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.newFileDialog__pickedName {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.newFileDialog__pickedMeta {
	color: var(--text-secondary);
}

.newFileDialog__srOnly {
	position: absolute;
	width: .1rem;
	height: .1rem;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
}

.newFileDialog__progress {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.newFileDialog__progressLabel {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.newFileDialog__actions {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
	padding-top: var(--pad-dense);
}

:root[data-viewport="phone"] .newFileDialog__view {
	width: 100%;
	padding: var(--pad-card);
}

:root[data-viewport="phone"] .newFileDialog__dropZone {
	flex-direction: column;
	text-align: center;
}

/**
* newFileRequestDialog.css — the Request-files dialog (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.newFileRequestDialog__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	width: min(48rem, 90vw);
	padding: var(--pad-sheet);
}

.newFileRequestDialog__heading {
	text-align: left;
}

.newFileRequestDialog__hint {
	color: var(--text-secondary);
}

.newFileRequestDialog__items {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.newFileRequestDialog__item {
	display: grid;
	grid-template-columns: 2rem minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-tight);
}

.newFileRequestDialog__itemIndex {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
	text-align: right;
}

.newFileRequestDialog__itemInput {
	min-width: 0;
}

.newFileRequestDialog__removeItem {
	color: var(--text-secondary);
}

.newFileRequestDialog__addItem {
	align-self: flex-start;
}

.newFileRequestDialog__view > textarea {
	min-height: 6rem;
	resize: vertical;
}

.newFileRequestDialog__actions {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
	padding-top: var(--pad-dense);
}

:root[data-viewport="phone"] .newFileRequestDialog__view {
	width: 100%;
	padding: var(--pad-card);
}

/**
* fileRequestsSection.css — the paperwork lane on a team member's Files (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.fileRequestsSection__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding: var(--pad-card);
}

.fileRequestsSection__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	flex-wrap: wrap;
}

.fileRequestsSection__headText {
	display: flex;
	align-items: baseline;
	gap: var(--gap-inline);
}

.fileRequestsSection__count,
.fileRequestsSection__empty,
.fileRequestsSection__requestMeta,
.fileRequestsSection__progressText,
.fileRequestsSection__note {
	color: var(--text-secondary);
}

.fileRequestsSection__request {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	padding: var(--pad-card);
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	background-color: var(--surface-card);
}

.fileRequestsSection__request-open {
	border-color: var(--border-strong);
}

.fileRequestsSection__requestHead {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--gap-inline);
	flex-wrap: wrap;
}

.fileRequestsSection__requestTitleBlock {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.fileRequestsSection__requestStatus {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

.fileRequestsSection__note {
	white-space: pre-wrap;
}

.fileRequestsSection__items {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.fileRequestsSection__item {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-row);
	border-radius: var(--radius-button);
	background-color: var(--surface-sunken);
}

.fileRequestsSection__item-done {
	background-color: var(--surface-selected);
}

.fileRequestsSection__itemIcon {
	color: var(--text-secondary);
}

.fileRequestsSection__item-done .fileRequestsSection__itemIcon {
	color: var(--text-success);
}

.fileRequestsSection__itemLabel {
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.fileRequestsSection__itemFile {
	color: var(--text-link);
	cursor: pointer;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.fileRequestsSection__itemFile:hover,
.fileRequestsSection__itemFile:focus-visible {
	text-decoration: underline;
	text-underline-offset: .2rem;
}

.fileRequestsSection__itemMissing {
	color: var(--text-warning);
}

.fileRequestsSection__requestActions {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .fileRequestsSection__item {
	grid-template-columns: auto minmax(0, 1fr);
}

:root[data-viewport="phone"] .fileRequestsSection__itemFile,
:root[data-viewport="phone"] .fileRequestsSection__itemMissing,
:root[data-viewport="phone"] .fileRequestsSection__attach {
	grid-column: 2;
}

/**
* filesSummary.css — the Details-tab Files stat card (#2272)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version
*/

.filesSummary__view[hidden] {
	display: none;
}

.filesSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
	min-width: 0;
}

.filesSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
	border-radius: var(--radius-button);
}

.filesSummary__iconLabelContainer[role="button"] {
	cursor: pointer;
}

.filesSummary__iconLabelContainer:focus-visible,
.filesSummary__row:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
}

.filesSummary__value {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.filesSummary__supporting {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
	height: auto;
	max-height: calc(3 * var(--control-height-small) + 2 * var(--gap-hairline));
}

.filesSummary__row {
	flex: none;
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
	min-height: var(--control-height-small);
	padding-inline: var(--pad-cell);
	border-radius: var(--radius-button);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.filesSummary__row:hover {
	background-color: var(--surface-hover);
}

.filesSummary__rowIcon {
	flex: none;
}

.filesSummary__rowTitle {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.filesSummary__empty {
	color: var(--text-secondary);
}

.filesSummary__row-overflow {
	justify-content: center;
}

.filesSummary__overflowText {
	color: var(--text-brand);
}

/**
* boardConversation.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version — the Board tab's threaded conversation (#2275): a reversed
*          column so the scroll opens at the newest thread, avatar-led rows, a hairline guide down each
*          reply rail, quiet text actions, brand ink on mentions
*/

.boardConversation__view {
	position: relative;
	display: flex;
	flex-direction: column-reverse;
	justify-content: flex-start;
	gap: var(--gap-section);
	padding: var(--pad-dense) 0;
}

.boardConversation__empty {
	flex: 1;
}

.boardConversation__message {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	column-gap: var(--gap-inline);
	row-gap: var(--gap-dense);
	align-items: start;
}

.boardConversation__body {
	display: grid;
	gap: var(--gap-tight);
	min-width: 0;
}

.boardConversation__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--gap-inline);
	min-height: 2.5rem; /* intentional literal: the small avatar's height, so a one-line message centres its name on the picture */
}

.boardConversation__sender {
	font-weight: var(--font-weight-medium);
	font-size: var(--font-size-body);
}

.boardConversation__time {
	color: var(--text-secondary);
}

.boardConversation__content {
	font-size: var(--font-size-body);
	line-height: var(--line-height-body);
	overflow-wrap: anywhere;
	white-space: pre-wrap;
}

.boardConversation__gif {
	display: block;
	max-width: 100%;
	max-height: 28rem;
	height: auto;
	border-radius: var(--radius-button);
	background: var(--surface-hover);
}

.boardConversation__content-deleted {
	color: var(--text-secondary);
	font-style: italic;
}

.boardConversation__mention {
	color: var(--text-brand);
	font-weight: var(--font-weight-medium);
}

.boardConversation__link {
	color: var(--text-brand);
	text-decoration: underline;
}

.boardConversation__reactions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-hairline);
}

.boardConversation__reactions[hidden] {
	display: none;
}

.boardConversation__reaction {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-hairline);
	min-height: var(--touch-target-primary);
	padding: var(--pad-cell) var(--pad-dense);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	background: var(--surface-card);
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	cursor: pointer;
	transition: border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.boardConversation__reaction:hover {
	border-color: var(--border-strong);
	background: var(--surface-hover);
	color: var(--text-primary);
}

.boardConversation__reaction-mine {
	border-color: var(--brand-primary);
	background: var(--surface-selected);
	color: var(--text-brand);
}

.boardConversation__actions {
	display: flex;
	gap: var(--gap-stack);
}

.boardConversation__action {
	min-height: var(--touch-target-minimum);
	min-width: var(--touch-target-minimum);
	padding: 0;
	border: none;
	background: none;
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	cursor: pointer;
	transition: color var(--motion-fast) var(--ease-standard);
}

.boardConversation__action:hover,
.boardConversation__action:focus-visible {
	color: var(--text-primary);
	text-decoration: underline;
	text-underline-offset: .2rem;
}

.boardConversation__replies {
	grid-column: 2;
	display: grid;
	gap: var(--gap-stack);
	padding-left: var(--pad-row);
	border-left: var(--border-width) solid var(--border-default);
}

.boardConversation__loadOlder {
	align-self: center;
}

:root[data-viewport="phone"] .boardConversation__replies {
	padding-left: var(--pad-dense);
}

:root[data-viewport="phone"] .boardConversation__replies .boardConversation__message {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .boardConversation__replies .boardConversation__avatar {
	display: none;
}

:root[data-viewport="phone"] .boardConversation__replies .boardConversation__meta {
	min-height: 0;
}

:root[data-viewport="phone"] .boardConversation__replies .boardConversation__replies {
	grid-column: 1;
}

/**
* boardSummary.css — the Details-tab Board stat card: thread count over the latest five comments (#2372)
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-15 Initial Version
*/

.boardSummary__view[hidden] {
	display: none;
}

.boardSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
	min-width: 0;
}

.boardSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
	border-radius: var(--radius-button);
}

.boardSummary__iconLabelContainer[role="button"] {
	cursor: pointer;
}

.boardSummary__iconLabelContainer:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
}

.boardSummary__value {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.boardSummary__supporting {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
	height: auto;
	max-height: calc(3 * var(--control-height-small) + 2 * var(--gap-hairline));
}

.boardSummary__comment {
	flex: none;
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
	padding-inline: var(--pad-cell);
}

.boardSummary__commentMeta {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
	min-width: 0;
}

.boardSummary__commentSender {
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.boardSummary__commentTime {
	flex: none;
	color: var(--text-secondary);
}

.boardSummary__commentContent {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	line-clamp: 2;
	overflow: hidden;
}

.boardSummary__commentContent-deleted {
	font-style: italic;
	color: var(--text-secondary);
}

.boardSummary__gif {
	display: block;
	max-width: 100%;
	max-height: 8rem;
	height: auto;
	border-radius: var(--radius-button);
	background: var(--surface-hover);
}

.boardSummary__hint {
	color: var(--text-secondary);
}

/**
 * boardUnreadCount.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-16 Initial Version
 */
.boardUnreadCount__view:empty,
[data-slot="boardUnreadCount"]:has(> .boardUnreadCount__view:empty) {
	display: none;
}

/**
* logo.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.logo__view {
    display: flex;
}

.logo__lockup {
    width: 100%;
}

:root[data-mode="dark"] .logo__lockup-black {
    display: none;
}

:root:not([data-mode="dark"]) .logo__lockup-white {
    display: none;
}

/**
* teamMemberChooser.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-07-29 Initial Version
*/

.teamMemberChooser__view {
	display: grid;
	gap: var(--gap-stack);
}

.teamMemberChooser__search {
	width: 100%;
}

.teamMemberChooser__roster {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-dense);
	align-items: center;
}

.teamMemberChooser__entityTile {
	min-height: var(--touch-target-primary);
	padding: var(--gap-hairline) var(--pad-dense) var(--gap-hairline) var(--gap-hairline);
	border-radius: var(--radius-pill);
	background-color: var(--surface-sunken);
	border: var(--border-width) solid var(--border-default);
	transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), transform var(--motion-fast) var(--ease-standard);
}

.teamMemberChooser__entityTile:hover {
	background-color: var(--surface-hover);
	border-color: var(--border-strong);
}

.teamMemberChooser__entityTile:active {
	transform: scale(.97);
}

.teamMemberChooser__entityTile.entityTile__view-highlighted {
	background-color: var(--surface-selected);
	border-color: var(--brand-primary);
}

.teamMemberChooser__entityTile .entityTile__heading {
	white-space: nowrap;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-body);
	color: var(--text-secondary);
}

.teamMemberChooser__entityTile.entityTile__view-highlighted .entityTile__heading {
	color: var(--text-primary);
	font-weight: var(--font-weight-heading);
}

.teamMemberChooser__entityTile.entityTile__view-highlighted .entityDisplayImage__view {
	border-width: .2rem;
	border-color: var(--brand-primary);
}

:root[data-viewport="phone"] .teamMemberChooser__search .searchBar__input {
	min-height: var(--touch-target-primary);
	padding-block: 0;
}

.teamMemberChooser__empty {
	color: var(--text-secondary);
}

/**
* teamMemberRoleManagement.css — the Permissions tab: the Roles sheet over a hairline, the Permissions grid
* filling what remains.
* @author Magdiel A. Marrero Rodríguez <magdiel.marrero@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-Jun-30 Initial Version (#1227)
*/

.teamMemberRoleManagement__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-section);
	height: 100%;
	min-height: 0;
}

.teamMemberRoleManagement__roles {
	flex-shrink: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.teamMemberRoleManagement__sectionHeader {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--gap-inline);
}

.teamMemberRoleManagement__heading {
	margin: 0;
}

.teamMemberRoleManagement__notice {
	color: var(--text-secondary);
}

.teamMemberRoleManagement__rolesSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.teamMemberRoleManagement__rolesSkeletonRow {
	width: 100%;
	min-width: 0;
	height: 4rem;
	border-radius: var(--radius-dense);
}

.teamMemberRoleManagement__permissions {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
	padding-block-start: var(--gap-section);
	border-block-start: var(--border-width) solid var(--border-default);
}

.teamMemberRoleManagement__permissionMatrix {
	flex: 1 1 auto;
	min-height: 0;
	width: fit-content;
	max-width: 100%;
}

:root[data-viewport="phone"] .teamMemberRoleManagement__permissionMatrix {
	width: 100%;
}

/**
* teamMemberRoleList.css — the Permissions tab's role sheet: hairline-ruled rows, a switch or a held check
* in the control column, name over descriptor, the Owner row's handshake actions trailing.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2269)
*/

.teamMemberRoleList__view {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
}

.teamMemberRoleList__row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	column-gap: var(--gap-inline);
	row-gap: var(--gap-tight);
	margin: 0;
	padding: var(--pad-dense) 0;
	border-block-end: var(--border-width) solid var(--border-default);
	font-size: var(--font-size-body);
	line-height: var(--line-height-tight);
}

.teamMemberRoleList__row:last-child {
	border-block-end: none;
}

.teamMemberRoleList__control {
	width: 4.4rem;
	display: flex;
	align-items: center;
	justify-content: flex-start;
}

.teamMemberRoleList__heldMark {
	width: 1.6rem;
	height: 1.6rem;
	color: var(--text-success);
	stroke: currentColor;
}

.teamMemberRoleList__text {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.teamMemberRoleList__name {
	color: var(--text-primary);
}

.teamMemberRoleList__row-held .teamMemberRoleList__name {
	font-weight: var(--font-weight-medium);
}

.teamMemberRoleList__descriptor,
.teamMemberRoleList__ownershipPending {
	color: var(--text-secondary);
}

.teamMemberRoleList__ownershipActions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-tight);
}

.teamMemberRoleList__ownershipActions:empty {
	display: none;
}

.teamMemberRoleList__empty {
	margin: 0;
	padding: var(--pad-row) 0;
	color: var(--text-secondary);
	font-style: italic;
}

:root[data-viewport="phone"] .teamMemberRoleList__ownershipActions {
	grid-column: 2 / -1;
	justify-content: flex-start;
}

/**
* teamMemberPermissionMatrix.css — the Permissions ledger: heading row with count and actions switch, the legend,
* and a hairline-ruled Resource × Action grid with sticky header and first column.
*
* @author Magdiel A. Marrero Rodríguez <magdiel.marrero@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-15 Initial Version (#1513)
*/

.teamMemberPermissionMatrix__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	min-height: 0;
}

.teamMemberPermissionMatrix__header {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: var(--gap-inline);
	flex-shrink: 0;
}

.teamMemberPermissionMatrix__heading {
	margin: 0;
}

.teamMemberPermissionMatrix__summary {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.teamMemberPermissionMatrix__actionsToggle {
	margin-inline-start: auto;
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
}

.teamMemberPermissionMatrix__actionsToggleLabel {
	color: var(--text-secondary);
}

.teamMemberPermissionMatrix__legend {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-stack);
	flex-shrink: 0;
}

.teamMemberPermissionMatrix__legendItem {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
}

.teamMemberPermissionMatrix__legendText {
	color: var(--text-secondary);
}

.teamMemberPermissionMatrix__mark {
	display: inline-block;
	width: 1.4rem;
	height: 1.4rem;
	vertical-align: middle;
}

.teamMemberPermissionMatrix__mark-granted {
	color: var(--text-success);
	stroke: currentColor;
}

.teamMemberPermissionMatrix__mark-denied {
	width: .8rem;
	height: .8rem;
	border: var(--border-width) solid var(--border-strong);
	border-radius: var(--radius-pill);
}

.teamMemberPermissionMatrix__skeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.teamMemberPermissionMatrix__skeletonRow {
	width: 100%;
	min-width: 0;
	height: 3.2rem;
	border-radius: var(--radius-dense);
}

.teamMemberPermissionMatrix__unavailable {
	color: var(--text-secondary);
}

.teamMemberPermissionMatrix__scroll {
	overflow: auto;
	flex: 1 1 auto;
	min-height: 12rem;
	width: fit-content;
	max-width: 100%;
	border-block: var(--border-width) solid var(--border-default);
	isolation: isolate;
	background:
		linear-gradient(to left, var(--surface-card), var(--surface-card)) right / 1.6rem 100% no-repeat local,
		linear-gradient(to left, var(--border-default), transparent) right / 1.6rem 100% no-repeat scroll;
}

.teamMemberPermissionMatrix__table {
	border-collapse: separate;
	border-spacing: 0;
	width: 100%;
	font-size: var(--font-size-body);
	line-height: var(--line-height-tight);
}

.teamMemberPermissionMatrix__actionHeader,
.teamMemberPermissionMatrix__cornerCell {
	position: sticky;
	top: 0;
	z-index: 1;
	background: var(--surface-card);
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
	padding: var(--pad-cell) var(--pad-dense);
	text-align: center;
	white-space: nowrap;
	min-width: 8rem;
	border-bottom: var(--border-width) solid var(--border-strong);
}

.teamMemberPermissionMatrix__cornerCell {
	left: 0;
	z-index: 2;
	text-align: left;
	min-width: 16rem;
}

.teamMemberPermissionMatrix__rowLabel {
	position: sticky;
	left: 0;
	background: var(--surface-card);
	color: var(--text-primary);
	padding: var(--pad-cell) var(--pad-dense);
	text-align: left;
	white-space: nowrap;
	font-weight: var(--font-weight-medium);
	border-bottom: var(--border-width) solid var(--border-default);
}

.teamMemberPermissionMatrix__rowLabelInner {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
}

.teamMemberPermissionMatrix__rowLabel:not(.teamMemberPermissionMatrix__rowLabel-expandable) .teamMemberPermissionMatrix__rowLabelInner {
	padding-inline-start: 2rem; /* intentional literal: tree indent aligning chevron-less labels with the expandable ones — an indent measure, not spacing rhythm */
}

.teamMemberPermissionMatrix__rowLabelText {
	font-size: inherit; /* intentional literal: relative keyword — the label tracks the table's body size, not getSpan's rung */
}

.teamMemberPermissionMatrix__rowLabel-child {
	padding-inline-start: 4.4rem; /* intentional literal: tree indent — the child label sits one chevron width past its parent, an indent measure, not spacing rhythm */
	font-weight: var(--font-weight-body);
	font-size: var(--font-size-caption);
	color: var(--text-secondary);
}

.teamMemberPermissionMatrix__rowLabel-child::before {
	content: '';
	position: absolute;
	inset-block: 0;
	inset-inline-start: 2.4rem;
	width: var(--border-width);
	background: var(--border-default);
}

.teamMemberPermissionMatrix__chevron {
	color: var(--text-secondary);
}

.teamMemberPermissionMatrix__chevron .icon__svg {
	transition: rotate var(--motion-fast) var(--ease-standard);
}

.teamMemberPermissionMatrix__chevron-open .icon__svg {
	rotate: 90deg;
}

.teamMemberPermissionMatrix__cell {
	padding: var(--pad-cell) var(--pad-dense);
	text-align: center;
	border-bottom: var(--border-width) solid var(--border-default);
}

.teamMemberPermissionMatrix__cell-changed {
	animation: permissionCellSettle var(--motion-slow) var(--ease-standard) backwards;
}

.teamMemberPermissionMatrix__resourceRow:hover > *,
.teamMemberPermissionMatrix__childRow:hover > * {
	background: var(--surface-hover);
}

.teamMemberPermissionMatrix__table tr:last-child > * {
	border-bottom: none;
}

:root[data-viewport="phone"] .teamMemberPermissionMatrix__scroll {
	width: 100%;
}

:root[data-viewport="phone"] .teamMemberPermissionMatrix__cornerCell {
	min-width: 9rem;
}

:root[data-viewport="phone"] .teamMemberPermissionMatrix__actionHeader {
	min-width: 0;
	padding-inline: var(--pad-cell);
}

:root[data-viewport="phone"] .teamMemberPermissionMatrix__rowLabel {
	white-space: normal;
}

:root[data-viewport="phone"] .teamMemberPermissionMatrix__cell {
	padding-inline: var(--pad-cell);
}

/**
* expandedTeamMemberTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.expandedTeamMemberTile__view {
    display: grid;
    grid-template-areas: 'expandedTeamMemberTile__TeamMemberDisplayName expandedTeamMemberTile__TeamMemberTime';
    gap: var(--gap-stack);
    width: 100%;
    justify-content: space-between;
    cursor: pointer;
    border: var(--border-shorthand);
    border-radius: var(--radius-button);
    padding: var(--pad-row);
    overflow: hidden;
    margin: var(--gap-stack) auto;
}

.expandedTeamMemberTile__view-selected {
    border-color: var(--brand-accent);
}

.expandedTeamMemberTile__TeamMemberDisplayName {
    grid-area: expandedTeamMemberTile__TeamMemberDisplayName;
}

/* Live per-second timer — tabular figures stop the digits jittering as it
   ticks. Selector case now matches ExpandedTeamMemberTile.js:55-56, which
   stamps `__TeamMemberDisplayName` / `__TeamMemberTime`; the grid-area rules
   previously spelled these with a lowercase `t` and matched nothing, so
   neither element ever received its grid area (#followup-to-ui-polish). */
.expandedTeamMemberTile__TeamMemberTime {
    grid-area: expandedTeamMemberTile__TeamMemberTime;
    font-variant-numeric: tabular-nums;
}

/**
* projectTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.projectTile__view {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--gap-dense);
	padding: var(--pad-dense);
	cursor: pointer;
}

.projectTile__view-selected {
	border-color: var(--brand-accent);
}

.projectTile__view > :only-child {
	grid-column: 1 / -1;
}

.projectTile__projectNumber {
	grid-column: 1;
}

.projectTile__projectName {
	grid-column: 1 / -1;
}

.projectTile__clientName {
	grid-column: 1/-1;
	color: var(--text-secondary);
}

.projectTile__runningCount {
	grid-column: 1 / -1;
	color: var(--text-success);
}

.projectTile__deadline .heading {
	color: var(--text-on-status);
}

.projectTile__clientSkeleton {
	grid-column: 1/-1;
	height: 1.2rem;
	min-width: 6rem;
	width: fit-content;
}

.projectTile__badges {
	grid-column: 2;
	grid-row: 1;
	display: flex;
	align-items: center;
	gap: var(--gap-dense);
}

.projectTile__deadline {
	border: none;
}

.projectTile__badges:not(:has(.chip)) {
	display: none;
}

/**
* clientTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.clientTile__view {
	display: grid;
	grid-template-columns: minmax(auto, 1fr) auto;
	cursor: pointer;
	padding: var(--pad-row) var(--pad-card);
	color: var(--text-primary);
	align-items: center;
}

.clientTile__view-selected {
	border-color: var(--brand-accent);
}

.clientTile__view::after {
	opacity: 1;
}

.clientTile__clientName {
	transition: none;
}

/**
* searchResultTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.searchResultTile__view {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	column-gap: var(--gap-inline);
	row-gap: var(--gap-tight);
	width: 100%;
	padding: var(--pad-dense) var(--pad-card);
	line-height: var(--line-height-tight);
	text-align: start;
}

.searchResultTile__identity {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.searchResultTile__nameRow {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-width: 0;
}

.searchResultTile__heading {
	margin: 0;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	text-align: start;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	color: var(--text-primary);
}

.searchResultTile__relationship {
	flex: none;
}

.searchResultTile__type {
	color: var(--text-secondary);
}

.searchResultTile__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-tight);
	justify-self: end;
}

.searchResultTile__actions .button {
	font-size: var(--font-size-caption);
	white-space: nowrap;
}

:root[data-viewport="phone"] .searchResultTile__view {
	grid-template-columns: auto minmax(0, 1fr);
}

:root[data-viewport="phone"] .searchResultTile__actions {
	grid-column: 2;
	justify-self: start;
	justify-content: flex-start;
}

:root[data-viewport="phone"] .searchResultTile__actions .button {
	min-height: var(--touch-target-primary);
	box-shadow: none;
}

/**
 * headerTiles.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2020-12-01 Initial Version 
 */

.headerTiles__tile {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    padding: var(--pad-dense);
    border-radius: var(--radius-button);
    text-align: left;
    cursor: pointer;
}

.headerTiles__tile:hover {
    background: var(--surface-sunken);
    /* color: var(--text-on-brand); */
}

.headerTiles__tile-active, .headerTiles__tile-active:hover {
    background: transparent;
    color: var(--text-accent);
}
/**
* connectionIcon.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-01-03 Initial Version
*/

.connectionIcon__view {
    display: block;
    position: relative;
    height: 8rem;
    width: 8rem;
}

.connectionIcon__circle {
    display: block;
    position: absolute;
    height: 1rem;
    width: 1rem;
    border: .2rem solid var(--text-on-brand);
    border-radius: var(--radius-avatar);
}

.connectionIcon__center {
    height: 2rem;
    width: 2rem;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.connectionIcon__upperLeft {
    height: .8rem;
    width: .8rem;
    top: 25%;
    left: 25%;
}

.connectionIcon__upperLeft::after {
    position: static;
    display: block;
    content: '';
    background-color: var(--text-on-brand);
    height: 1.1rem;
    width: .2rem;
    transform: translate(.7rem, .2rem) rotate(-45deg);
}

.connectionIcon__lowerLeft {
    left: 20%;
    bottom: 25%;
}

.connectionIcon__lowerLeft::after {
    display: block;
    content: '';
    background-color: var(--text-on-brand);
    height: 1.1rem;
    width: .2rem;
    transform: translate(.9rem, -.9rem) rotate(50deg);
}

.connectionIcon__upperRight {
    top: 20%;
    right: 25%;
}

.connectionIcon__upperRight::after {
    display: block;
    content: '';
    background-color: var(--text-on-brand);
    height: 1.2rem;
    width: .2rem;
    transform: translate(-.4rem, .5rem) rotate(40deg);
}

.connectionIcon__lowerRight {
    right: 15%;
    bottom: 15%;
    height: 1.5rem;
    width: 1.5rem;
}

.connectionIcon__lowerRight::after {
    display: block;
    content: '';
    background-color: var(--text-on-brand);
    height: 1.3rem;
    width: .2rem;
    transform: translate(-.5rem, -1rem) rotate(-45deg);
}

.disconnected {
    animation: wander .5s ease-in-out infinite;
}

.disconnected::after {
    transition: all var(--motion-slow) var(--ease-standard);
    background-color: inherit;
}
/**
* linkPreview.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-01-11 Initial Version
*/

.linkPreviewTile__view {
    width: 100%;
    display: grid;
    grid-template-areas: 'linkPreviewTile_img linkPreviewTile_title' 'linkPreviewTile_description linkPreviewTile_description';
    align-items: center;
    grid-template-columns: auto 1fr;
    gap: var(--gap-inline);
    margin-block-start: var(--gap-inline);
    padding: var(--pad-dense);
    border: var(--border-width) solid var(--border-default);
    border-radius: var(--radius-button);
    background: var(--surface-hover);
    color: inherit;
    text-decoration: none;
}

.linkPreviewTile__img {
    grid-area: linkPreviewTile_img;
    height: 5rem;
    width: auto;
    object-fit: cover;
    border-radius: var(--radius-dense);
}

.linkPreviewTile__title {
    grid-area: linkPreviewTile_title;
    font-weight: var(--font-weight-medium);
    font-size: var(--font-size-body);
}

.linkPreviewTile__description {
    grid-area: linkPreviewTile_description;
    font-size: var(--font-size-caption);
    color: var(--text-secondary);
}
/**
* stylePropTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-01-29 Initial Version
*/

.stylePropTile__view {
    width: 20rem;
    display: grid;
    grid-template-areas: 'stylePropTile_head stylePropTile_fileInput stylePropTile_control' 'stylePropTile_textField stylePropTile_textField stylePropTile_textField';
    grid-template-columns: 4fr auto 1fr;
    gap: var(--gap-inline) var(--gap-tile);
    align-items: center;
}

.stylePropTile__header {
    grid-area: stylePropTile_head;
}

.stylePropTile__textField {
    grid-area: stylePropTile_textField;
    margin: auto;
    background: var(--surface-card);
    color: var(--text-primary);
}

.stylePropTile__colorInput,
.stylePropTile__numberInput,
.stylePropTile__selectInput,
.stylePropTile__controlPlaceholder {
    grid-area: stylePropTile_control;
}

.stylePropTile__numberInput {
    width: 5rem;
}

.stylePropTile__imageInput {
    grid-area: stylePropTile_fileInput;
    width: 2rem;
}

/**
* clientInfo.css
* @author Raúl E. Barroso <raul.barroso@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-22 Initial Version
*/

.clientInfo__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-inline);
	padding: var(--pad-card);
}

.clientInfo__heading {
	text-align: left;
}

.clientInfo__groups {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
	gap: var(--gap-section) var(--gap-tile);
	align-items: start;
}

.clientInfo__group {
	display: grid;
	gap: var(--gap-dense);
	min-width: 0;
}

.clientInfo__groupHeading {
	text-align: left;
	color: var(--text-secondary);
	font-weight: var(--font-weight-medium);
}

.clientInfo__detail {
	min-width: 0;
}

.clientInfo__detail .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.clientInfo__detail .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
	overflow-wrap: anywhere;
}

.clientInfo__backingRow {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-dense) var(--gap-inline);
}

.clientInfo__backingName {
	font-weight: var(--font-weight-medium);
}

.clientInfo__pendingCopy {
	color: var(--text-secondary);
}

/**
* deadlineTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-24 Initial Version
*/

.deadlineTile__view {
	height: fit-content;
	position: relative;
	display: grid;
	grid-template-areas:
		'deadlineTile__header  deadlineTile__editButton'
		'deadlineTile__begin deadlineTile__end';
	grid-template-columns: 1fr auto;
	justify-content: space-between;
	padding: var(--pad-row);
	border: var(--border-shorthand);
	border-radius: var(--radius-button);
}

.deadlineTile__expandablePanel {
	padding: var(--pad-row);
}

.deadlineTile__header {
	grid-area: deadlineTile__header;
}

.deadlineTile__begin {
	grid-area: deadlineTile__begin;
}

.deadlineTile__end {
	grid-area: deadlineTile__end;
}

.deadlineTile__editButton {
	grid-area: deadlineTile__editButton;
	cursor: pointer;
	position: absolute;
	top: 0;
	right: 0;
	transform: translate(80%, -80%);
}

/* Hover-reveal is a hover-capable-only affordance (#1641): only devices that
   CAN hover hide the edit button behind it — touch devices see it always. */
@media (hover: hover) {
	.deadlineTile__editButton {
		opacity: 0;
	}

	.deadlineTile__view:hover .deadlineTile__editButton {
		opacity: 1;
	}
}

.newDeadlineView__cancelButton,
.newDeadlineView__saveButton {
	width: 6rem;
}
/**
* deadlineTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-24 Initial Version
*/

.newDeadlineView__view {
	height: 100%;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: var(--gap-tile);
	width: fit-content;
}

.newDeadlineView__buttonContainer {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-tile);
}
/**
* endlessBucket.css
* @author Magdiel A. Marrero Rodríguez <magdiel.marrero@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-30 Initial Version
*/

.endlessBucket__view {
	width: 100%;
	height: 100%;
}

.endlessBucket__list {
	width: 100%;
	min-height: 100%;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);

	&>* {
		flex: none;
	}
}

.endlessBucket__list-reverse {
	justify-content: end;
}

/* First-load stand-in — mirrors .endlessBucket__list spacing so the
   skeleton → tiles swap doesn't reflow. */
.endlessBucket__firstLoadSkeleton {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

/* Edge-of-window fetch indicator — spaced off the item list like a row about
   to join it. */
.endlessBucket__edgeSkeleton {
	margin: var(--gap-stack) 0;
}

/**
* searchBar.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-03-08 Initial Version
*/

.searchBar__view {
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: var(--gap-inline);
	position: relative;
}

.searchBar__view::after {
	content: '';
	position: absolute;
	right: 1rem;
	top: 50%;
	translate: 0 -50%;
	width: 1.3rem;
	height: 1.3rem;
	pointer-events: none;
	background-color: var(--icon-accent, currentColor);
	-webkit-mask: var(--searchBar-glyph) no-repeat center / contain;
	mask: var(--searchBar-glyph) no-repeat center / contain;
	--searchBar-glyph: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='10.5' cy='10.5' r='6.5'/%3E%3Cpath d='M15.5 15.5L21 21'/%3E%3C/svg%3E");
}

/* getSearchBar is now `type="search"` (announced as a search field, WCAG 4.1.2).
   WebKit adds its own clear-button/decoration chrome to search inputs — strip it
   so the input looks exactly like the text input it used to be. (Lives here, next
   to the sole getSearchBar consumer; the base `.searchBar` rule is in
   compoundElements.css.) */
.searchBar::-webkit-search-cancel-button,
.searchBar::-webkit-search-decoration,
.searchBar::-webkit-search-results-button,
.searchBar::-webkit-search-results-decoration {
	-webkit-appearance: none;
	appearance: none;
}
/**
* projectHeader.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-30 Initial Version — extracted from projectPanel.css
*/

.projectHeader__view {
	display: grid;
	gap: var(--gap-tile);
	align-items: center;
	grid-template-areas:
		'projectHeader_displayName projectHeader_actionButtonsContainer'
		'projectHeader_clientLink .';
	grid-template-columns: auto 1fr;
}

.projectHeader__displayName {
	grid-area: projectHeader_displayName;
	text-align: left;
}

.projectHeader__status {
	grid-area: projectHeader_statusSlider;
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	padding: 0 var(--pad-dense);
	background-color: var(--brand-accent);
}

.projectHeader__statusSlider {
	grid-area: projectHeader_statusSlider;
}

.projectHeader__clientLink {
	grid-area: projectHeader_clientLink;
	justify-self: start;
}

.projectHeader__actionButtonsContainer {
	grid-area: projectHeader_actionButtonsContainer;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: var(--gap-tile);
}

:root[data-viewport="phone"] .projectHeader__view {
	padding-left: var(--pad-shell);
}

/**
* teamMemberPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.teamMemberPanel__view {
	height: 100%;
	min-width: 0;
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-tile);
}

.teamMemberPanel__header {
	display: grid;
	gap: var(--gap-inline) var(--gap-tile);
	align-items: center;
	grid-template-areas:
		'teamMemberPanel_initialsRoundHeading teamMemberPanel_nameRow  teamMemberPanel_actionButtonsContainer'
		'teamMemberPanel_initialsRoundHeading teamMemberPanel_description  .';
	grid-template-columns: auto minmax(0, 1fr) auto;
	min-width: 0;
}

.teamMemberPanel__headerSkeleton {
	border-radius: 0;
}

.teamMemberPanel__initialsRoundHeading {
	grid-area: teamMemberPanel_initialsRoundHeading;
}

.teamMemberPanel__nameRow {
	grid-area: teamMemberPanel_nameRow;
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
}

.teamMemberPanel__displayName {
	text-align: left;
	color: var(--text-primary);
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.teamMemberPanel__statusBadge {
	flex: 0 0 auto;
}

.teamMemberPanel__description {
	grid-area: teamMemberPanel_description;
	color: var(--text-secondary);
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.teamMemberPanel__actionButtonsContainer {
	grid-area: teamMemberPanel_actionButtonsContainer;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: var(--gap-tile);
}

.teamMemberPanel__files {
	min-height: 32rem;
	height: 100%;
}

.teamMemberPanel__tabHeader {
	display: flex;
	align-items: center;
	gap: var(--gap-tile);
}

.teamMemberPanel__sectionTabs {
	min-width: 0;
	overflow-x: auto;
}

.teamMemberPanel__tabView {
	padding: var(--pad-card);
	height: 100%;
	overflow: auto;
}

.teamMemberPanel__tabView:focus-visible {
	outline: var(--border-width) solid var(--brand-primary);
	outline-offset: calc(-1 * var(--border-width));
}

.teamMemberPanel__performanceView {
	display: grid;
	align-content: start;
	gap: var(--gap-section);
	min-width: 0;
}

.teamMemberPanel__performanceView > * {
	min-width: 0;
}

.teamMemberPanel__performanceControls {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .teamMemberPanel__view {
	margin: var(--gap-tile);
}

:root[data-viewport="phone"] .teamMemberPanel__header {
	padding: var(--pad-card);
	grid-template-areas:
		'teamMemberPanel_initialsRoundHeading teamMemberPanel_nameRow            teamMemberPanel_actionButtonsContainer'
		'teamMemberPanel_description          teamMemberPanel_description            teamMemberPanel_description';
	grid-template-columns: auto minmax(0, 1fr) auto;
}

:root[data-viewport="phone"] .teamMemberPanel__nameRow {
	flex-wrap: wrap;
}

:root[data-viewport="phone"] .teamMemberPanel__performanceControls {
	justify-content: stretch;
}

/**
* teamMemberDetails.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2270) — the Details tab grid: Status and Membership side by side over
*   the full-width Contact card, one column on the phone band
*/

.teamMemberDetails__view {
	display: grid;
	grid-template-areas:
		'teamMemberDetails_status teamMemberDetails_membership'
		'teamMemberDetails_contact teamMemberDetails_contact';
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--gap-stack);
	align-content: start;
}

.teamMemberDetails__card {
	display: grid;
	align-content: start;
	gap: var(--gap-inline);
	padding: var(--pad-card);
	min-width: 0;
}

.teamMemberDetails__status {
	grid-area: teamMemberDetails_status;
}

.teamMemberDetails__membership {
	grid-area: teamMemberDetails_membership;
}

.teamMemberDetails__contact {
	grid-area: teamMemberDetails_contact;
}

.teamMemberDetails__cardHeading {
	text-align: left;
}

.teamMemberDetails__statusSlider {
	justify-self: start;
	max-width: 100%;
}

.teamMemberDetails__statusBadge {
	justify-self: start;
}

.teamMemberDetails__supporting {
	color: var(--text-secondary);
}

.teamMemberDetails__tenure {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.teamMemberDetails__membershipFacts {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.teamMemberDetails__detail {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.teamMemberDetails__detail .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.teamMemberDetails__detail .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
	overflow-wrap: anywhere;
}

.teamMemberDetails__roleChips {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-tight);
}

.teamMemberDetails__roleChip {
	padding: var(--gap-hairline) var(--pad-cell);
	border: var(--border-width) solid var(--border-strong);
	border-radius: var(--radius-dense);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	color: var(--text-secondary);
	overflow-wrap: anywhere;
}

.teamMemberDetails__contactGroups {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr));
	gap: var(--gap-section) var(--gap-tile);
	align-items: start;
}

.teamMemberDetails__contactGroup {
	display: grid;
	gap: var(--gap-dense);
	min-width: 0;
}

.teamMemberDetails__groupHeading {
	text-align: left;
	color: var(--text-secondary);
	font-weight: var(--font-weight-medium);
}

.teamMemberDetails__emptyContact,
.teamMemberDetails__message {
	text-align: left;
}

:root[data-viewport="phone"] .teamMemberDetails__view {
	grid-template-areas:
		'teamMemberDetails_status'
		'teamMemberDetails_membership'
		'teamMemberDetails_contact';
	grid-template-columns: minmax(0, 1fr);
}

/**
* compensation.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.compensationView__view {
    position: relative;
    display: block;
    margin: var(--gap-stack);
}

.compensationView__viewContainer {
    position: relative;
}

.compensationView__view--edit {
    display: grid;
    grid-template-areas: '. compensationView__backgroundToggleBar compensationView__backgroundToggleBar compensationView__backgroundToggleBar' 'compensationView__dollarSign compensationView__rate compensationView__rate compensationView__buttonContainer';
    grid-template-columns: 1rem 1fr;
    grid-gap: 0.5rem;
}

.compensationView__backgroundToggleBar {
    grid-area: compensationView__backgroundToggleBar;
    width: 100%;
}

.compensationView__dollarSign {
    grid-area: compensationView__dollarSign;
}

.compensationView__rate {
    grid-area: compensationView__rate;
}

.compensationView__buttonContainer {
    grid-area: compensationView__buttonContainer;
    margin-left: auto;
}

.compensationView__cancelButton {
    margin-right: var(--gap-stack);
}

.compensationView__editButton {
    position: absolute;
    top: 0;
    right: 0;
    transform: translate(50%, -50%);
    cursor: pointer;
}

/* Hover-reveal is a hover-capable-only affordance (#1641): only devices that
   CAN hover hide the edit button behind it — touch devices see it always. */
@media (hover: hover) {
    .compensationView__editButton {
        opacity: 0;
    }

    .compensationView__view:hover .compensationView__editButton {
        opacity: 1;
    }
}
/**
* timeLimitTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-03-23 Initial Version
*/

.timeLimitTile__view {
    position: relative;
}

.timeLimitTile__editButton {
    position: absolute;
    top: 0;
    right: 0;
    transform: translate(50%, -50%);
    cursor: pointer;
}

/* Hover-reveal is a hover-capable-only affordance (#1641): only devices that
   CAN hover hide the edit button behind it — touch devices see it always. */
@media (hover: hover) {
    .timeLimitTile__editButton {
        opacity: 0;
    }

    .timeLimitTile__view:hover .timeLimitTile__editButton {
        opacity: 1;
    }
}

.timeLimitTile__infinitySymbol {
    font-size: var(--font-size-stat);
    height: 1rem;
    transform: translateY(-1rem);
}
.timeLimitTile__controllers{
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: flex-end;
    gap: var(--gap-inline);
}
/**
* noteList.css — the notepad's rows: hairline-divided, the open row on the selected wash.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2276)
*/

.noteList__view {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.noteList__rows {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.noteList__item {
	display: block;
	border-bottom: var(--border-width) solid var(--border-default);
}

.noteList__row {
	display: grid;
	gap: var(--gap-hairline);
	width: 100%;
	padding: var(--pad-row) var(--pad-card);
	text-align: left;
	color: var(--text-primary);
	background-color: transparent;
	border: 0;
	border-radius: 0;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.noteList__row:hover {
	background-color: var(--surface-hover);
}

.noteList__row-open,
.noteList__row-open:hover {
	background-color: var(--surface-selected);
}

.noteList__title {
	display: block;
	width: auto;
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.noteList__title-untitled {
	color: var(--text-secondary);
	font-weight: var(--font-weight-body);
}

.noteList__excerpt {
	display: block;
	width: auto;
	min-height: 1lh;
	color: var(--text-secondary);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.noteList__meta {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
	margin-top: var(--gap-tight);
	color: var(--text-secondary);
}

.noteList__date,
.noteList__shared {
	width: auto;
	white-space: nowrap;
}

.noteList__shared {
	overflow: hidden;
	text-overflow: ellipsis;
	padding: 0 var(--pad-cell);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	color: var(--text-secondary);
	line-height: var(--line-height-relaxed);
}

.noteList__skeletonRow {
	padding: var(--pad-row) var(--pad-card);
	border-bottom: var(--border-width) solid var(--border-default);
}

.noteList__status,
.noteList__empty {
	display: block;
	padding: var(--pad-sheet) var(--pad-card);
}

/**
* noteEditor.css — the open note as a bare page: head row, title, hairline, body, a format bar
* pinned to the foot beside the save caption.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2276)
*/

.noteEditor__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr) auto;
	height: 100%;
	min-height: 0;
}

.noteEditor__head {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-card) var(--pad-dense) var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
}

.noteEditor__backIcon {
	rotate: 180deg;
}

.noteEditor__headMeta {
	display: flex;
	align-items: center;
	min-width: 0;
	color: var(--text-secondary);
}

.noteEditor__share {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.noteEditor__shareLabel,
.noteEditor__author {
	width: auto;
	color: var(--text-secondary);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.noteEditor__title {
	margin: 0;
	padding: var(--pad-sheet) var(--pad-card) var(--pad-dense);
	text-align: left;
	font-size: var(--font-size-heading);
	font-weight: var(--font-weight-heading);
	line-height: var(--line-height-tight);
	letter-spacing: var(--letter-spacing-display);
	white-space: normal;
	overflow-wrap: anywhere;
	outline: none;
}

.noteEditor__title:focus-visible {
	box-shadow: inset var(--focus-ring-width) 0 0 var(--focus-ring-color);
}

.noteEditor__page {
	min-height: 0;
	overflow-y: auto;
	scrollbar-gutter: stable;
	border-top: var(--border-width) solid var(--border-default);
}

.noteEditor__body {
	min-height: 100%;
	padding: var(--pad-card) var(--pad-card) var(--pad-shell);
	line-height: var(--line-height-relaxed);
	overflow-wrap: anywhere;
	cursor: text;
	outline: none;
	caret-color: var(--brand-accent);
}

.noteEditor__body:empty::before {
	content: attr(data-placeholder);
	color: var(--text-disabled);
	pointer-events: none;
}

.noteEditor__body ul {
	margin: var(--gap-tight) 0;
	padding-left: var(--pad-shell);
}

.noteEditor__body p {
	margin: 0 0 var(--gap-tight);
}

.noteEditor__body b,
.noteEditor__body strong {
	font-weight: var(--font-weight-heading);
}

.noteEditor__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-card);
	border-top: var(--border-width) solid var(--border-default);
	background-color: var(--surface-raised);
}

.noteEditor__formatBar {
	display: flex;
	gap: var(--gap-tight);
}

.noteEditor__formatButton {
	display: grid;
	place-items: center;
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
	padding: 0;
	border: 0;
	border-radius: var(--radius-button);
	background-color: transparent;
	color: var(--text-secondary);
	fill: currentColor;
	--icon-accent: currentColor;
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.noteEditor__formatButton:hover {
	background-color: var(--surface-hover);
	color: var(--text-primary);
}

.noteEditor__saveState {
	width: auto;
	white-space: nowrap;
	transition: opacity var(--motion-base) var(--ease-standard);
}

.noteEditor__saveState-idle {
	opacity: 0;
}

.noteEditor__saveState-failed {
	color: var(--text-danger);
}

.noteEditor__view-readOnly .noteEditor__title,
.noteEditor__view-readOnly .noteEditor__body {
	cursor: default;
}

/**
 * entityBox.css
 * @author Eduardo Valladares <eduardo.valladares@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-Jun-22 Deep-theming Phase 7: de-baked from the `-${theme}` class suffixes to one
 *                      stable structure painting from tokens; cyber restyles via the token layer
 *                      under [data-theme="cyber"] (no per-theme DOM).
 */

.entityBox__view {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	column-gap: var(--gap-stack);
	padding: var(--pad-row) var(--pad-card);
	min-height: var(--touch-target-primary);
	background-color: transparent;
	border-radius: var(--radius-card);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.entityBox__view-current {
	background-color: var(--surface-selected);
}

.entityBox__identity {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		'entityBox_displayName entityBox_role'
		'entityBox_meta entityBox_role';
	align-items: center;
	column-gap: var(--gap-stack);
	row-gap: var(--gap-hairline);
	min-width: 0;
}

.entityBox__displayName {
	grid-area: entityBox_displayName;
}

.entityBox__meta {
	grid-area: entityBox_meta;
}

.entityBox__role {
	grid-area: entityBox_role;
	text-align: end;
}

.entityBox__displayName,
.entityBox__meta,
.entityBox__role {
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
}

.entityBox__meta,
.entityBox__role {
	color: var(--text-secondary);
}

.entityBox__mark {
	color: var(--text-secondary);
	transition: transform var(--motion-fast) var(--ease-standard);
}

.entityBox__view-current .entityBox__mark {
	color: var(--text-brand);
}

.entityBox__view.tileContainer-hover:hover {
	transform: none;
	box-shadow: none;
}

@media (hover: hover) {
	.entityBox__view.tileContainer-hover:hover {
		background-color: var(--surface-hover);
	}

	.entityBox__view-current.tileContainer-hover:hover {
		background-color: var(--surface-selected);
	}

	.entityBox__view.tileContainer-hover:hover .entityBox__mark {
		transform: translateX(var(--gap-hairline));
	}

	.entityBox__view-current.tileContainer-hover:hover .entityBox__mark {
		transform: none;
	}
}

:root[data-viewport="phone"] .entityBox__identity {
	grid-template-areas:
		'entityBox_displayName entityBox_role'
		'entityBox_meta entityBox_meta';
}

/**
* personalInfo.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.personalInfo__view {
    height: auto;
    display: block;
    width: 100%;
}

.personalInfo__displayInfoContainer {
    display: grid;
    grid-template-areas: 'personalInfo_name personalInfo_email' 'personalInfo_tel personalInfo_address' 'personalInfo_cancelButton personalInfo_editButton';
    grid-gap: 7rem;
    grid-template-columns: 1fr 1fr;
}

.personalInfo__name {
    display: grid;
    grid-area: personalInfo_name;
}
.personalInfo__nameTitle{
    border: .1rem solid var(--brand-accent);
}
.personalInfo__fullNameString{
    margin: auto;

}
.personalInfo__email {
    grid-area: personalInfo_email;
    display: grid;

}
.personalInfo__emailTitle{
    border: .1rem solid var(--brand-accent);
}
.personalInfo__emailString{
    margin: auto;

}
.personalInfo__tel {
    grid-area: personalInfo_tel;
    display: grid;

}
.personalInfo__telTitle{
    border: .1rem solid var(--brand-accent);
}
.personalInfo__telephoneString{
    margin: auto;

}
.personalInfo__address {
    grid-area: personalInfo_address;
    display: grid;

}
.personalInfo__addressTitle{
    border: .1rem solid var(--brand-accent);
}
.personalInfo__addressString{
    margin: auto;

}
.personalInfo__editButton {
    grid-area: personalInfo_editButton;
}

.personalInfo__displayEditContainer {
    display: grid;
    grid-template-areas: 'personalInfo_editName personalInfo_editEmail' 'personalInfo_editTel personalInfo_editAddress' 'personalInfo_cancelButton personalInfo_commitButton';
    grid-template-columns: 1fr 1fr;
    grid-gap: 1rem;
}

.personalInfo__editName {
    grid-area: personalInfo_editName;
}

.personalInfo__editName-title{
    border: .1rem solid var(--brand-accent);   
}

.personalInfo__editEmail {
    grid-area: personalInfo_editEmail;
}

.personalInfo__editEmail-title{
    border: .1rem solid var(--brand-accent);   
}
.personalInfo__editTel {
    grid-area: personalInfo_editTel;
}

.personalInfo__editTel-title{
    border: .1rem solid var(--brand-accent);   
}
.personalInfo__editAddress {
    grid-area: personalInfo_editAddress;
}

.personalInfo__editAddress-title{
    border: .1rem solid var(--brand-accent);   
}
.personalInfo__cancelButton {
    grid-area: personalInfo_cancelButton;
}
.personalInfo__commitButton {
    grid-area: personalInfo_commitButton;
}
/**
* companyNameField.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/


/**
* contactPillBox.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.contactPillBox__view {
    height: 15rem;
    width: 20rem;
    display: grid;
    grid-template-areas: 'contactPillBox__topContainer' 'contactPillBox__bottomContainer';
}

.contactPillBox__topContainer {
    grid-area: contactPillBox__topContainer;
    display: grid;
    grid-template-areas: 'contact__image' 'contactPillBox__displayName';
}

.contact__image {
    grid-area: contact__image;
    margin: auto;
}

.contactPillBox__displayName {
    grid-area: contactPillBox__displayName;
}

.contactPillBox__bottomContainer {
    grid-area: contactPillBox__bottomContainer;
    display: grid;
    grid-template-areas: 'contactPillBox__visitContact contactPillBox__deleteContact';
}

.contactPillBox__visitContact {
    grid-area: contactPillBox__visitContact;
    height: 3rem;
    width: 3rem;
    margin: auto;
}

.contactPillBox__deleteContact {
    grid-area: contactPillBox__deleteContact;
    margin: auto;
}
/**
* entitiesPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.entitiesPanel__view {
    display: grid;
    grid-template-areas: 'entitiesPanel__searchBar' 'entitiesPanel__scrollArea';
    height: 100%;
}

.entitiesPanel__searchBar {
    grid-area: entitiesPanel__searchBar;
    margin-right: auto;
    width: 100%;
}

.entitiesPanel__scrollAreaContainer {
    grid-area: entitiesPanel__scrollArea;
    overflow: scroll;
    display: flex;
}

.entitiesPanel__scrollArea {
    height: fit-content;
    display: block;
}

.entitiesPanel__showAllEntityTile {
    width: fit-content;
    margin: var(--gap-stack) var(--gap-stack) var(--gap-stack) 4.5rem; /* intentional literal: the 4.5rem is a rail-aligned indent, not a density step */
    cursor: pointer;
}

.entitiesPanel__entityTile {
    margin: var(--gap-stack);
}
/**
* headerWithExpandableScrollArea.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-02-24 Initial Version
*/

.headerWithExpandableScrollArea__view {
    display: grid;
    width: 100%;
    height: 100%;
}

.headerWithExpandableScrollArea__headerContainer {
    width: 50%;
    margin: auto auto auto 0;
    /* The 0 bottom is deliberate — the expandable scroll area below supplies its own. */
    padding: var(--pad-row) var(--pad-row) 0 var(--pad-row);
}

.headerWithExpandableScrollArea__header {
    text-align: left;
}

.headerWithExpandableScrollArea__scrollAreaContainer {
    max-height: 0;
    overflow: hidden;
}

.headerWithExpandableScrollArea__scrollAreaContainer-expanded {
    max-height: inherit;
}

.headerWithExpandableScrollArea__scrollArea {
    padding: var(--pad-row);
}
/**
 * projectEntryTile.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2019-03-19 Initial Version
 */

.projectEntryTile__view {
	width: auto;
	display: grid;
	grid-template-columns: 1fr auto;
}

/* Hover-reveal is a hover-capable-only affordance (#1641): only devices that
   CAN hover hide the edit button behind it — touch devices see it always. */
@media (hover: hover) {
	.projectEntryTile__view:hover .projectEntryTile__editButton {
		opacity: 1;
	}

	/* The transition belongs on the base rule, not the `:hover` rule — declared
	   on `:hover` it only existed while hovered, so the reveal faded in and then
	   snapped out on exit. */
	.projectEntryTile__editButton {
		opacity: 0;
		transition: all var(--motion-fast) var(--ease-enter);
	}
}

.projectEntryTile__projectDescription {
	grid-column: 1/1;
	font-weight: bold;
}

.projectEntryTile__total {
	grid-column: 1/2;
}

.projectEntryTile__project {
	grid-column: 2/1;
}

.projectEntryTile__editButton {
	grid-column: 2/2;
	justify-self: end;
	cursor: pointer;
}
/**
* mainSearchBar.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-May-25 Initial Version
*/

.mainSearchBar__view {
	position: relative;
	width: 25rem;
	height: 2.6rem;
}

.mainSearchBar__view::before {
	content: '';
	background-color: var(--brand-primary);
	position: absolute;
	right: 0;
	top: 0;
	width: 5rem;
	height: 2rem;
	clip-path: polygon(calc(100% - 1.5rem) 100%, 100% 0, 1.1rem 0, 1.1rem .1rem, calc(100% - 0.2rem) .1rem, calc(100% - 1.6rem) 100%);
}

.mainSearchBar__view::after {
	content: '';
	background-color: var(--brand-accent);
	position: absolute;
	left: 0;
	bottom: 0;
	width: 4rem;
	height: 1.5rem;
	clip-path: polygon(0 100%, 100% 100%, 100% calc(100% - .1rem), 0.15rem calc(100% - .1rem), 1.2rem 0, 1.1rem 0);
}

.mainSearchBar__input {
	width: calc(100% - 5.1rem);
	height: 2rem;
	border: none;
	background-color: var(--surface-sunken);
	color: var(--text-primary);
	border-radius: 0;
	clip-path: polygon(0 100%, calc(100% - 1.5rem) 100%, 100% 0, 1.5rem 0);
	padding: 0.3rem 2rem; /* intentional literal: geometry-coupled to the clip-path parallelogram on this rule — the 2rem keeps text clear of the diagonals */
	position: absolute;
	bottom: .3rem;
	right: 4.4rem;
}

.mainSearchBar__input::placeholder {
	color: var(--text-secondary);
}

.mainSearchBar__button {
	background-color: var(--brand-primary);
	color: var(--text-on-brand);
	position: absolute;
	right: 1rem;
	width: 4.5rem;
	height: 2rem;
	clip-path: polygon(0 100%, calc(100% - 1.5rem) 100%, 100% 0, 1.5rem 0);
	display: inline-flex;
	bottom: .3rem;
	cursor: pointer;
}

.mainSearchBar__icon {
	margin: auto;
	fill: var(--text-on-brand);
}

:root[data-viewport="phone"] .mainSearchBar__view {
	height: var(--touch-target-primary);
	width: 100%;
}

:root[data-viewport="phone"] .mainSearchBar__view::before {
	height: 3rem;
}

:root[data-viewport="phone"] .mainSearchBar__view::after {
	height: 2.5rem;
}

:root[data-viewport="phone"] .mainSearchBar__input,
:root[data-viewport="phone"] .mainSearchBar__button {
	height: var(--touch-target-primary);
	bottom: 0;
}

:root[data-viewport="phone"] .mainSearchBar__button {
	min-width: var(--touch-target-primary);
}

/**
* mastheadCover.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version (#2222) — brand gradient ground, the picture over it, a brand wash that blurs it from above (a backdrop blur clamps at the box edge, so nothing bleeds past the phone viewport); themes paint the wash through decision-0014 slot 10
*/

.mastheadCover__view {
	position: relative;
	height: 100%;
	width: 100%;
	overflow: hidden;
	background-image: radial-gradient(ellipse at 18% 0%, rgba(255, 255, 255, .3), transparent 55%), radial-gradient(ellipse at 88% 120%, color-mix(in srgb, var(--brand-accent) 55%, transparent), transparent 60%), linear-gradient(135deg, var(--brand-primary), var(--brand-secondary));
}

.mastheadCover__image {
	position: absolute;
	inset: 0;
	background-position: center;
	background-size: cover;
	background-repeat: no-repeat;
	opacity: 0;
	transition: opacity var(--motion-slow) var(--ease-enter);
}

.mastheadCover__image-loaded {
	opacity: 1;
}

.mastheadCover__wash {
	position: absolute;
	inset: 0;
	backdrop-filter: blur(1.6rem) saturate(1.1);
	-webkit-backdrop-filter: blur(1.6rem) saturate(1.1);
	background-image: linear-gradient(135deg, color-mix(in srgb, var(--brand-primary) 55%, transparent), color-mix(in srgb, var(--brand-secondary) 35%, transparent));
}

:root[data-mode="dark"] .mastheadCover__wash {
	backdrop-filter: blur(1.6rem) saturate(.9) brightness(.7);
	-webkit-backdrop-filter: blur(1.6rem) saturate(.9) brightness(.7);
}

/**
* navigationRail.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-May-25 Initial Version (as settingsBar.css)
*/

:root {
	--nav-rail-height: calc(var(--nav-rail-peek-height) + var(--touch-target-primary));
}

.overlayPanel:has(.navigationRail__view-mobileSheet .navigationRail__mainPanel-expanded) {
	--nav-rail-height: 70dvh;
}

.navigationRail__view {
	height: fit-content;
	width: fit-content;
}

.navigationRail__mainPanel__optionsPanel {
	height: fit-content;
	display: grid;
	gap: var(--gap-tile);
	justify-content: flex-start;
	align-content: start;
	align-items: start;
	padding-right: var(--pad-card);
}

/* Both bottom-of-rail selectors share the same left-alignment so they line up. */
.navigationRail__colorSchemeSelector,
.navigationRail__depthSelector {
	justify-self: start;
}

.navigationRail__mainPanel__displayPanel {
	display: grid;
	grid-template-rows: auto 1fr;
	padding: 0 var(--pad-card);
	width: 100%;
	height: 0;
	opacity: 0;
	visibility: hidden;
	/* pulls the panel's close <button> out of the tab order while collapsed */
}

.navigationRail__mainPanel {
	display: grid;
	grid-template-columns: auto 0;
	padding: var(--pad-card) 0;
	position: absolute;
	z-index: 2;
	overflow: hidden;
}

:root:not([data-viewport="phone"]) .navigationRail__mainPanel:not(.navigationRail__mainPanel-expanded) {
	.navigationRail__mainPanel__optionsPanel {
		padding-right: 0;
	}

	.navigationRail__mainPanel__option {
		gap: 0;
	}

	.navigationRail__mainPanel__option__heading {
		width: 0;
	}
}

/* Hover-affordance audit #11 (#1641): hover-to-expand is a hover-capable-only
   affordance — on touch it only causes sticky-hover jank (the tap's synthetic
   hover expands the rail under the finger). Touch operability is already fully
   covered by the click path: every option is clickable collapsed and
   displayExpandedView() is the click-to-expand. */
@media (hover: hover) {
	:root:not([data-viewport="phone"]) .navigationRail__mainPanel:not(.navigationRail__mainPanel-expanded):hover {
		max-width: 30rem;
		padding-left: var(--pad-card);

		.navigationRail__mainPanel__optionsPanel {
			padding-right: var(--pad-card);
		}

		.navigationRail__mainPanel__option {
			gap: var(--gap-stack);
		}

		.navigationRail__mainPanel__option__heading {
			width: auto;
		}
	}
}

.navigationRail__mainPanel.navigationRail__mainPanel-expanded {
	padding-left: var(--pad-card);
	grid-template-columns: auto var(--rail-panel-width, 50dvw);
	max-width: 100dvw;
	max-height: 100dvh;

	.navigationRail__mainPanel__displayPanel {
		height: var(--rail-panel-height, 50dvh);
		opacity: 1;
		visibility: visible;
	}
}

.navigationRail__mainPanel.navigationRail__mainPanel-expanded.navigationRail__mainPanel-page {
	inset: 5rem;
	grid-template-columns: auto minmax(0, 1fr);
	grid-template-rows: minmax(0, 1fr);
	max-width: none;
	max-height: none;
	box-shadow: var(--elevation-overlay);

	.navigationRail__mainPanel__displayPanel {
		height: 100%;
		min-height: 0;
		grid-template-rows: auto minmax(0, 1fr);
	}

	.navigationRail__mainPanel__displayPanel > .scrollArea {
		min-height: 0;
		overflow: hidden;
	}
}

.navigationRail__mainPanel__option {
	padding: 0 var(--pad-dense);
	align-items: center;
	cursor: pointer;
	width: 100%;
	box-shadow: var(--elevation-flat);
}

.navigationRail__mainPanel__option:not(.navigationRail__mainPanel__option-active):hover {
	background-color: var(--surface-hover);
}

.navigationRail__mainPanel__option-active {
	background-color: var(--brand-accent);
	color: var(--text-on-brand);
}

.navigationRail__mainPanel__option-active .navigationRail__mainPanel__option__heading {
	color: var(--text-on-brand);
}

.navigationRail__controllerContainer {
	display: flex;
	justify-content: space-between;
}

:root[data-viewport="phone"] .navigationRail__mainPanel__option {
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .navigationRail__mainPanel__option:first-of-type:has(+ *[data-slot="colorSchemeSelector"]) {
	grid-column: 1/7;
}

:root[data-viewport="phone"] .navigationRail__mainPanel {
	height: 100%;
}

.overlayPanel:has(.navigationRail__view-mobileSheet) {
	background: var(--surface-raised);
}

.navigationRail__view-mobileSheet {
	height: 100%;
}

/* #endregion */

/* #region mobile sheet layout (#1954) — the phone-band NavigationRail lives
   inside a peeked `DisplayOverlay` bottom sheet (mounted by
   NavigationRail.reconcileMobileSheet, which reparents `NavigationRail.view`
   into a `.navigationRail__view-mobileSheet` wrapper before handing it to
   `Application.methods.displayOverlay`). Rules under the wrapper class scope
   the mobile-sheet chrome to the phone band; the phone-band rules that adapt
   the rail tree itself — `.navigationRail__mainPanel__option`'s touch-target
   floor, its signed-out first-of-type grid span, and
   `.navigationRail__mainPanel`'s full-height fill — are `:root[data-viewport="phone"]`
   -scoped instead because they apply to the rail, not to the sheet chrome
   around it. */

.navigationRail__view-mobileSheet .navigationRail__view {
	width: 100%;
	height: inherit;
}

.navigationRail__view-mobileSheet .navigationRail__mainPanel {
	position: static;
	max-width: 100%;
	max-height: 100%;
	padding: var(--pad-card);
	grid-template-columns: 1fr;
	grid-template-rows: auto minmax(0, 1fr);
	overflow: visible;
	border-radius: var(--radius-card) var(--radius-card) 0 0;
	background: transparent;
	box-shadow: var(--elevation-flat);
}

.navigationRail__view-mobileSheet .navigationRail__mainPanel__optionsPanel {
	grid-template-columns: repeat(6, minmax(0, 1fr));
	column-gap: 0;
	align-items: center;
	padding-right: 0;
}

.navigationRail__view-mobileSheet .navigationRail__mainPanel__option {
	flex-direction: column;
	width: auto;
	padding: var(--pad-dense) 0;
	gap: var(--gap-tight);
}

.navigationRail__view-mobileSheet .navigationRail__mainPanel__option__heading {
	font-size: var(--font-size-label);
}

.navigationRail__view-mobileSheet .navigationRail__mainPanel.navigationRail__mainPanel-expanded {
	grid-template-columns: 1fr;
	grid-template-rows: auto minmax(0, 1fr);
	inset: auto;
	max-width: 100%;
	max-height: 100%;
	box-shadow: var(--elevation-flat);

	.navigationRail__mainPanel__displayPanel {
		width: 100%;
		height: 100%;
	}
}

.navigationRail__view-mobileSheet .navigationRail__colorSchemeSelector {
	grid-column: 2;
}

.navigationRail__view-mobileSheet .navigationRail__depthSelector {
	grid-column: 5;
}

.navigationRail__view-mobileSheet .navigationRail__colorSchemeSelector,
.navigationRail__view-mobileSheet .navigationRail__depthSelector {
	margin-left: 0;
	justify-self: center;
}

/* TODO: replace this CSS shim with a primitive-level `dismissible: false` prop
   on DisplayOverlay (Gap 2 follow-up). Hides both the SVG (desktop) and the
   button wrapper the phone rule at displayOverlay.css adds around it. */
.overlayPanel:has(.navigationRail__view-mobileSheet) .overlayPanel__closeButton,
.overlayPanel:has(.navigationRail__view-mobileSheet) .icon__view:has(.overlayPanel__closeButton) {
	display: none;
}

/**
* onlineIndicator.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-September-27 Initial Version
*/

.onlineIndicator__view {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	height: fit-content;
	width: fit-content;
}

.onlineIndicator__lamp {
	flex: none;
	width: .9rem;
	height: .9rem;
	border-radius: var(--radius-dense);
	background-color: var(--text-danger);
	background-image: radial-gradient(circle at 32% 28%, rgba(255, 255, 255, .55), rgba(255, 255, 255, 0) 55%);
	box-shadow: inset 0 .1rem .1rem rgba(255, 255, 255, .35), inset 0 -.1rem .2rem rgba(0, 0, 0, .25), 0 0 .3rem .1rem color-mix(in srgb, var(--status-danger) 90%, transparent), 0 0 1.2rem .3rem color-mix(in srgb, var(--status-danger) 55%, transparent); /* intentional literal: the lamp — lens highlight, bulb shade and a halo in the status FILL hue (the bulb keeps the ink twin for the glyph gate); a light source, not an elevation */
	transition: background-color var(--motion-base) var(--ease-standard), box-shadow var(--motion-base) var(--ease-standard);
}

.onlineIndicator__view-online .onlineIndicator__lamp {
	background-color: var(--text-success);
	box-shadow: inset 0 .1rem .1rem rgba(255, 255, 255, .35), inset 0 -.1rem .2rem rgba(0, 0, 0, .25), 0 0 .3rem .1rem color-mix(in srgb, var(--status-success) 90%, transparent), 0 0 1.2rem .3rem color-mix(in srgb, var(--status-success) 55%, transparent); /* intentional literal: the same lamp lit in the success hue */
}

.onlineIndicator__view-offline .onlineIndicator__lamp {
	animation: onlineIndicatorBreathe 2.4s var(--ease-standard) infinite; /* intentional literal: a breathing period, far above the motion ladder's 500ms ceiling by design */
}

.onlineIndicator__header {
	color: var(--text-secondary);
	font-weight: var(--font-weight-medium);
	letter-spacing: .1rem;
	white-space: nowrap;
	transition: color var(--motion-base) var(--ease-standard);
}

:root[data-viewport="phone"] .onlineIndicator__header {
	position: absolute;
	width: .1rem;
	height: .1rem;
	margin: -.1rem; /* intentional literal: fixed a11y clip-pattern hairline, not spacing rhythm */
	overflow: hidden;
	clip-path: inset(50%);
	border: 0;
}

/**
* menuTabButton.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.menuTabButton__view {
    margin: 2rem 4rem; /* intentional literal: page-header offset — no role token above 24px */
    height: 6rem;
    display: grid;
}

.menuTabButton__pillbox {
    border-color: currentColor;
    height: 6rem;
    border-radius: unset;
    cursor: pointer;
    display: flex;
    /* color: var(--grey); */
    color: var(--text-primary);
    /* clip-path: polygon(0 0, calc(100% - 10px) 0, calc(100% - 0px) 10px, 100% 20.00px, 100% 100%, 0 100%) */
}

.menuTabButton__pillbox--active {
    border-color: var(--brand-accent);
    color: var(--text-accent);
}



.menuTabButton__pillbox:before {
    /* background: var(--brand-accent); */
    /* background: var(--surface-sunken); */
    /* height: 2.4rem;
    width: 0.1rem;
    right: 0.6rem;
    top: -0.96rem; */
    /* background: currentColor; */
}

.menuTabButton__heading {
    margin-left: var(--gap-stack);
    /* color: var(--grey); */
    color: var(--text-primary);
}

.menuTabButton__heading--active {
    color: var(--text-accent);
}

.menuTabButton__subTabsContainer {
    /* position: relative; */
    /* clip-path: polygon(0 0, calc(100% - 20.00px) 0, calc(100% - 10px) 10px, 100% 20.00px, 100% 100%, 0 100%); */
    display: grid;
    gap: var(--gap-section);
    justify-content: flex-start;
    margin: var(--gap-section);

}
/**
* subTabButton.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.subTabButton__view {
	display: grid;
	grid-template-areas: 'subTabButton_circle subTabButton_heading';
	width: fit-content;
	gap: var(--gap-stack);
}

.subTabButton__circle {
	grid-area: subTabButton_circle;
	background-color: var(--text-disabled);
	width: .5rem;
	height: .5rem;
	border-radius: var(--radius-shell);
	margin: auto;

	.subTabButton__view:hover & {
		background-color: var(--brand-accent);
	}
}

.subTabButton__circle--active {
	background-color: var(--brand-accent);
}

.subTabButton__heading {
	grid-area: subTabButton_heading;
	cursor: pointer;

	.subTabButton__view:hover & {
		color: var(--text-accent);
	}
}

.subTabButton__heading--active {
	color: var(--text-accent);
}

/**
* themePicker.css — the Personalize dock's theme list: hairline-separated rows, each with a
* light | dark miniature painted from `--sample-*` custom properties the component resolves
* per theme, the checked row on the selected wash unrolling its action row, a Yours divider
* before the entity's own themes.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version (#2253)
*/

.themePicker__view {
	display: flex;
	flex-direction: column;
	min-width: 0;
}

.themePicker__item {
	display: flex;
	flex-direction: column;
	border-bottom: var(--border-width) solid var(--border-default);
}

.themePicker__item:last-child {
	border-bottom: none;
}

.themePicker__row {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	gap: var(--gap-stack);
	padding: var(--pad-row) var(--pad-card);
	cursor: pointer;
	color: var(--text-primary);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

@media (hover: hover) {
	.themePicker__row:hover {
		background-color: var(--surface-hover);
	}
}

.themePicker__row:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: calc(-1 * var(--focus-ring-width));
}

.themePicker__row-checked,
.themePicker__row-checked:hover {
	background-color: var(--surface-selected);
	cursor: default;
}

.themePicker__miniature {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	width: 6.4rem;
	height: 4rem;
	overflow: hidden;
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-dense);
	background-color: var(--surface-sunken);
}

.themePicker__scene {
	--sample-page: var(--surface-page);
	--sample-card: var(--surface-card);
	--sample-brand: var(--brand-primary);
	--sample-border: var(--border-default);
	--sample-radius: var(--radius-card);
	--sample-backdrop: var(--surface-page-backdrop, none);
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
	padding: var(--pad-cell);
	background-color: var(--sample-page);
	background-image: var(--sample-backdrop);
	background-size: cover;
}

.themePicker__scene + .themePicker__scene {
	border-left: var(--border-width) solid var(--border-default);
}

.themePicker__sceneMark {
	width: 1rem;
	height: .4rem;
	border-radius: var(--radius-pill);
	background-color: var(--sample-brand);
}

.themePicker__sceneCard {
	flex: 1;
	border: var(--border-width) solid var(--sample-border);
	border-radius: calc(var(--sample-radius) / 2);
	background-color: var(--sample-card);
}

.themePicker__rowText {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.themePicker__rowTitle {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	min-width: 0;
}

.themePicker__rowName {
	width: auto;
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.themePicker__activeBadge {
	width: auto;
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-pill);
	background-color: var(--surface-card);
	color: var(--text-brand);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	white-space: nowrap;
}

.themePicker__rowMeta {
	width: auto;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-body);
}

.themePicker__actions {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	padding: 0 var(--pad-card) var(--pad-row) calc(var(--pad-card) + 6.4rem /* intentional literal: the miniature's width (.themePicker__miniature), so the actions align under the row text */ + var(--gap-stack));
	background-color: var(--surface-selected);
}

.themePicker__deleteButton {
	margin-left: auto;
	color: var(--text-danger);
}

.themePicker__divider {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-row) var(--pad-card) var(--pad-cell);
}

.themePicker__divider::after {
	content: '';
	flex: 1;
	border-top: var(--border-width) solid var(--border-default);
}

.themePicker__dividerLabel {
	width: auto;
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	letter-spacing: var(--letter-spacing-body, normal);
}

.themePicker__empty {
	margin: 0;
	padding: var(--pad-cell) var(--pad-card) var(--pad-row);
	color: var(--text-secondary);
}

/**
* themeEditor.css — the Personalize dock's customizer pane: a header row (back chevron, the
* theme's name or the new theme's name field, the parent + mode line), a scrolling body of
* property disclosures whose rows hold a StylePropTile and its Reset, and the footer bar
* pinned under it.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version (#2253)
*/

.themeEditor__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	height: 100%;
	min-height: 0;
	color: var(--text-primary);
}

.themeEditor__header {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: start;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-card) var(--pad-row) var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
}

.themeEditor__back {
	margin-top: var(--gap-hairline);
}

.themeEditor__backIcon {
	rotate: 180deg;
}

.themeEditor__title {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	min-width: 0;
}

.themeEditor__name {
	margin: 0;
	text-align: left;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.themeEditor__nameInput {
	width: 100%;
	padding: var(--pad-cell) var(--pad-dense);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-input);
	background-color: var(--surface-card);
	color: var(--text-primary);
	font-family: var(--font-display);
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
}

.themeEditor__nameInput:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
	border-color: var(--brand-primary);
}

.themeEditor__meta {
	width: auto;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-body);
}

.themeEditor__body {
	display: flex;
	flex-direction: column;
	overflow-y: auto;
	scrollbar-gutter: stable;
}

.themeEditor__skeleton {
	margin: var(--pad-cell) var(--pad-card);
}

.themeEditor__status {
	margin: var(--pad-row) var(--pad-card);
}

.themeEditor__group {
	border-bottom: var(--border-width) solid var(--border-default);
}

.themeEditor__groupSummary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: var(--pad-row) var(--pad-card);
	font-weight: var(--font-weight-medium);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

@media (hover: hover) {
	.themeEditor__groupSummary:hover {
		background-color: var(--surface-hover);
	}
}

.themeEditor__groupSummary:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: calc(-1 * var(--focus-ring-width));
}

.themeEditor__groupSummary::before {
	content: '';
	width: .6rem;
	height: .6rem;
	margin-right: var(--gap-tight);
	border-right: var(--border-width) solid var(--text-secondary);
	border-bottom: var(--border-width) solid var(--text-secondary);
	rotate: -45deg;
	transition: rotate var(--motion-fast) var(--ease-standard);
}

.themeEditor__group[open] > .themeEditor__groupSummary::before {
	rotate: 45deg;
}

.themeEditor__groupTitle {
	flex: 1;
	width: auto;
}

.themeEditor__groupCount {
	width: auto;
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-variant-numeric: tabular-nums;
}

.themeEditor__groupCount-changed {
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-pill);
	background-color: var(--surface-selected);
	color: var(--text-brand);
	font-weight: var(--font-weight-medium);
}

.themeEditor__rows {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding: var(--pad-cell) var(--pad-card) var(--pad-card);
}

.themeEditor__row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: start;
	gap: var(--gap-inline);
}

.themeEditor__row .stylePropTile__view {
	width: auto;
	min-width: 0;
}

.themeEditor__row .stylePropTile__textField {
	width: 100%;
}

:root[data-viewport="phone"] .themeEditor__row .stylePropTile__header {
	font-size: var(--font-size-body);
}

.themeEditor__resetButton {
	margin-top: var(--gap-hairline);
	color: var(--text-secondary);
}

.themeEditorFooter__view {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	flex-wrap: wrap;
	gap: var(--gap-tight) var(--gap-inline);
	padding: var(--pad-dense) var(--pad-card) var(--pad-row);
	border-top: var(--border-width) solid var(--border-default);
	background-color: var(--surface-raised);
}

.themeEditorFooter__count {
	flex-basis: 100%;
	width: auto;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
}

.themeEditorFooter__discardButton {
	margin-right: auto;
}

.themeEditorFooter__error {
	flex-basis: 100%;
	width: auto;
	color: var(--text-danger);
	font-size: var(--font-size-caption);
}

/**
 * addTeamMemberPanel.css
 * @author Eduardo Valladares <eduardo.valladares@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2022-Oct-19 Initial Version
 */

.addTeamMemberPanel__view {
	/* width: calc(100% - 55rem);
	height: calc(100% - 45rem); */
	margin: 10rem auto; /* intentional literal: dialog top offset — positioning, not density; no role token above 24px */
	display: grid;
	grid-template-areas: 'addTeamMemberPanel_closeButton addTeamMemberPanel_searchBar' 'addTeamMemberPanel_scrollArea addTeamMemberPanel_scrollArea';
	grid-template-rows: auto minmax(0, 1fr);
	row-gap: var(--gap-stack);
	overflow: hidden;
}

.addTeamMemberPanel__closeButton {
	grid-area: addTeamMemberPanel_closeButton;
}

.addTeamMemberPanel__searchBar {
	grid-area: addTeamMemberPanel_searchBar;
	margin: auto var(--gap-stack) auto auto;
}

.addTeamMemberPanel__scrollArea {
	grid-area: addTeamMemberPanel_scrollArea;
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: var(--gap-tile);
}

.addTeamMemberPanel__closeButton {
	transform: rotate(180deg);
}
/**
* addressFields.css
* @author John A Cruz Merced <john.cruz@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-24 Initial Version
*/

/* The form's only child is the fieldset (getFieldset resets the UA chrome via
   `.fieldset`), so the 6-column grid rides the fieldset now. The hidden legend
   is position:absolute (.visuallyHidden) — it never occupies a grid cell. */
.addressFields__fieldset {
	display: grid;
	grid-template-columns: repeat(6, minmax(0, 1fr));
	gap: var(--gap-stack);
}

.addressFields__lineInput {
	grid-column: 1 / -1;
}

.addressFields__dropdown {
	width: 100%;
	grid-column: span 2
}

.addressFields__postalInput {
	grid-column: span 3;
}

.addressFields__removeButton {
	align-self: center;
}

.addressFields__addressType {
	grid-column: -3 / -1;
}
/**
* emailFields.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/


/**
* telephoneFields.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.telephoneFields__view {
	display: grid;
	grid-template-areas: 'cCode aCode pre post';
	grid-template-columns: 2.5rem 3rem repeat(2, 1fr);
	column-gap: var(--gap-inline);
}

.telephone__view {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
	gap: var(--gap-inline);

	>* {
		width: auto;
	}
}
/**
* textInput.css
* @author Jorge Pacheco <jorge.pacheco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2023-January-24 Initial Version
*/

.textInput__view {
	display: flex;
	align-items: center;
	box-sizing: border-box;
	min-height: var(--control-height-medium);
	position: relative;
	width: 100%;
	background: var(--surface-sunken);
	border-radius: var(--radius-input);
}

.textInput__frame {
	position: absolute;
	inset: 0;
	border: var(--border-shorthand);
	border-radius: var(--radius-input);
	width: 100%;
	height: 100%;
	pointer-events: none;
	transition: clip-path var(--motion-base) var(--ease-standard) var(--motion-fast), border-color var(--motion-fast) var(--ease-standard);
}

.textInput__frame::before {
	content: '';
	position: absolute;
	inset: 0;
	border-radius: inherit;
	box-shadow: var(--elevation-inset);
}

.textInput__frame-open {
	transition: clip-path var(--motion-base) var(--ease-standard) 0s, border-color var(--motion-fast) var(--ease-standard);
}

.textInput__view:hover .textInput__frame {
	border-color: var(--border-strong);
}

.textInput__view:has(.textInput__input:focus) .textInput__frame {
	border-color: var(--brand-primary);
}

.textInput__view:has(.textInput__input:focus-visible) .textInput__frame {
	box-shadow: inset 0 0 0 var(--focus-ring-width) var(--focus-ring-color);
}

.textInput__input:focus-visible {
	outline: none;
}

.textInput__view-disabled .textInput__frame {
	border-color: var(--border-default);
}

.textInput__input {
	border: none;
	height: 100%;
	width: 100%;
	position: absolute;
	background: transparent;
	box-shadow: none;
	font-size: var(--font-size-body);
}

.textInput__input:not(:focus) {
	text-overflow: ellipsis;
}

.textInput__input:-webkit-autofill,
.textInput__input:-webkit-autofill:hover,
.textInput__input:-webkit-autofill:focus,
.textInput__input:-webkit-autofill:active {
	/* intentional literal: the canonical Chrome autofill-yellow suppression hack —
	   an absurd duration so the UA's background paint never actually arrives.
	   Not a motion value; do not put it on the --motion-* ladder. */
	transition: background-color 5000s ease-in-out 0s;
}

.textInput__placeholderNode {
	position: absolute;
	left: 1rem;
	top: 50%;
	translate: 0 -50%;
	transition: top var(--motion-base) var(--ease-standard), left var(--motion-base) var(--ease-standard), font-size var(--motion-base) var(--ease-standard), translate var(--motion-base) var(--ease-standard), width var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
	line-height: 1.1;
	max-width: calc(100% - 1.2rem);
	width: calc(100% - 3rem);
	text-align: start;
	color: var(--text-secondary);
	overflow: hidden;
	display: flex;
	align-items: baseline;
	pointer-events: none;
}

.textInput__placeholderText {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	min-width: 0;
}

.textInput__placeholderNode-shrunk {
	top: 0;
	left: 1.5rem;
	font-size: var(--font-size-label);
	width: calc(100% - 3.5rem);
	transition: top var(--motion-base) var(--ease-standard) var(--motion-fast), left var(--motion-base) var(--ease-standard) var(--motion-fast), font-size var(--motion-base) var(--ease-standard) var(--motion-fast), translate var(--motion-base) var(--ease-standard) var(--motion-fast), width var(--motion-base) var(--ease-standard) var(--motion-fast), color var(--motion-fast) var(--ease-standard);
}

.textInput__view:has(.textInput__input:focus) .textInput__placeholderNode-shrunk {
	color: var(--text-brand);
}

.textInput__placeholderNodeProxy {
	opacity: 0;
	position: fixed;
	font-size: var(--font-size-label);
}

.textInput__required {
	color: var(--text-danger);
	margin-left: var(--gap-hairline);
	flex: none;
}

.textInput__view-error {
	animation: shake var(--motion-base) linear;
}

.textInput__view-error .textInput__frame {
	animation: shake var(--motion-fast) linear;
}

.textInput__view-error .textInput__frame,
.textInput__view-error:hover .textInput__frame,
.textInput__view-error:has(.textInput__input:focus) .textInput__frame {
	border-color: var(--status-danger);
}

.textInput__errorText {
	position: absolute;
	top: 100%;
	left: var(--pad-dense);
	color: var(--text-danger);
	opacity: 1;
	text-align: left;
	font-style: normal;
}

.textInput__view-disabled {
	opacity: 0.4;
	pointer-events: none;
}

.textInput__input__upperCase {
	text-transform: uppercase;
}

:root[data-viewport="phone"] {
	.textInput__placeholderNode-shrunk,
	.textInput__placeholderNodeProxy {
		font-size: var(--font-size-caption);
	}
}

/**
* passwordInput.css
* @author Louis Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-01 Initial Version
*/

.passwordInput__view {
	position: relative;
	width: 100%;
}

.passwordInput__toggle {
	position: absolute;
	right: 0.5rem;
	top: 50%;
	translate: 0 -50%;
	width: 2.5rem;
	height: 2.5rem;
}

.passwordInput__toggle-hidden {
	visibility: hidden;
}

.passwordInput__view .textInput__input {
	padding-right: 2.5rem; /* intentional literal: coupled to toggle button width */
}

/**
* dropdownInputCollection.css
* @author John A Cruz Merced <john.cruz@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-25 Initial Version
*/

.dropdownInputCollection__view {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-template-rows: auto minmax(0, 1fr);
}

.dropdownInputCollection__addButton {
	align-items: center;
	display: flex;
	gap: var(--gap-stack);
}

.dropdownInputCollection__uList {
	grid-column: 1 / -1;
	padding: var(--pad-dense) 0 var(--gap-stack);
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	list-style: none;

	.heading {
		text-align: start;
	}

	.dropdownInputCollection__item {
		border-radius: var(--radius-card);
		background-color: var(--surface-raised);
		padding: var(--pad-card);
		margin: 0;

		.dropdownInputCollection__form {
			display: grid;
			grid-template-columns: auto minmax(0, 1fr) minmax(0, 1fr);
			align-items: center;
			gap: var(--gap-stack);

			.dropdown__view {
				width: auto;
			}
		}
	}
}
/**
* addressCollection.css
* @author John A Cruz Merced <john.cruz@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-26 Initial Version
*/

.addressCollection__view {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	grid-template-rows: auto minmax(0, 1fr);
}

.addressCollection__heading {
	text-align: start;
}

.addressCollection__addButton {
	align-items: center;
	display: flex;
	gap: var(--gap-stack);
}

.addressCollection__uList {
	grid-column: 1 / -1;
	padding: var(--pad-dense) 0 var(--gap-stack);
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
	list-style: none;

	.addressCollection__item {
		background-color: var(--surface-raised);
		border-radius: var(--radius-card);
		padding: var(--pad-card);
		margin: 0;
	}
}

/**
* clientEntityPreview.css
* @author John A Cruz Merced <john.cruz@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-31 Initial Version
*/

.clientEntityPreview__view {
	width: 100%;
	display: flex;
	flex-direction: column;
	gap: var(--gap-inline);
}

.clientEntityPreview__header {
	height: 10rem;
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--gap-stack);
}

.clientEntityPreview__image {
	height: 75%;
	aspect-ratio: 1;
	min-width: auto;
	display: flex;
	border-radius: var(--radius-circle);
	background: var(--surface-sunken);
}

.clientEntityPreview__displayName {
	background: var(--surface-sunken);
}

/**
* newEntityPanel.css — the two-step Create Entity flow: a header with the step rail, the
* display-cut name field pinned under it on both steps, a scrolling body holding the
* Details pane (grouped type cards) and the Appearance pane (theme cards), and a footer
* with Cancel opposite Continue / Back + Create. The surface and position belong to the host.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-04 Initial Version
*/

.newEntityPanel__view {
	display: flex;
	flex-direction: column;
	min-height: 0;
	max-height: 100%;
	width: min(96rem, 100%);
}

.newEntityPanel__form {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr) auto;
	min-height: 0;
	height: 100%;
	gap: 0;
}

.newEntityPanel__header {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline) var(--gap-section);
	padding-bottom: var(--pad-row);
	border-bottom: var(--border-width) solid var(--border-default);
}

.newEntityPanel__heading {
	margin: 0;
	text-align: left;
}

.newEntityPanel__steps {
	display: flex;
	gap: var(--gap-section);
}

.newEntityPanel__step {
	position: relative;
	margin: 0;
	padding: 0 0 var(--pad-cell);
	border: none;
	background: none;
	cursor: pointer;
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	letter-spacing: var(--letter-spacing-body, normal);
	transition: color var(--motion-fast) var(--ease-standard);
}

.newEntityPanel__step:hover:not(:disabled),
.newEntityPanel__step-current {
	color: var(--text-primary);
}

.newEntityPanel__step:disabled {
	cursor: default;
	color: var(--text-disabled);
}

.newEntityPanel__step:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--focus-ring-offset);
	border-radius: var(--radius-dense);
}

.newEntityPanel__step::after {
	content: '';
	position: absolute;
	left: 0;
	right: 0;
	bottom: calc(-1 * var(--pad-row) - var(--border-width));
	height: .2rem;
	border-radius: var(--radius-pill);
	background-color: var(--text-primary);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--motion-base) var(--ease-emphasized);
}

.newEntityPanel__step-current::after {
	transform: scaleX(1);
}

.newEntityPanel__body {
	padding: var(--pad-sheet) 0;
	scrollbar-gutter: auto;
}

.newEntityPanel__pane {
	display: flex;
	flex-direction: column;
	gap: var(--gap-section);
	padding-bottom: var(--pad-row);
}

.newEntityPanel__pane[hidden] {
	display: none;
}

.newEntityPanel__nameSection {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	max-width: 56rem;
	padding-top: var(--pad-sheet);
}

.newEntityPanel__entityNameInput {
	width: 100%;
	min-height: 5.6rem;
}

.newEntityPanel__entityNameInput .textInput__input {
	padding: 0 var(--pad-input-inline);
	font-family: var(--font-display);
	font-size: var(--font-size-heading);
	font-weight: var(--font-weight-heading);
	letter-spacing: var(--letter-spacing-display, normal);
}

.newEntityPanel__hint {
	margin: 0;
	color: var(--text-secondary);
}

.newEntityPanel__section {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.newEntityPanel__sectionHeading {
	margin: 0;
	text-align: left;
}

.newEntityPanel__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-tile);
	padding-top: var(--pad-row);
	border-top: var(--border-width) solid var(--border-default);
}

.newEntityPanel__footerActions {
	display: flex;
	align-items: center;
	gap: var(--gap-tile);
}

.newEntityPanel__saveSlot[hidden] {
	display: none;
}

.newEntityPanel__cancelButton,
.newEntityPanel__backButton,
.newEntityPanel__continueButton,
.newEntityPanel__saveButton {
	min-width: 9rem;
}

:root[data-viewport="phone"] .newEntityPanel__body {
	overflow-y: auto;
}

:root[data-viewport="phone"] .newEntityPanel__header {
	flex-direction: column;
	align-items: stretch;
}

:root[data-viewport="phone"] .newEntityPanel__steps {
	justify-content: space-between;
}

:root[data-viewport="phone"] .newEntityPanel__footer {
	flex-wrap: wrap;
}

:root[data-viewport="phone"] .newEntityPanel__footerActions {
	flex: 1;
	justify-content: end;
}

/**
* editEntityPanel.css — the Edit Entity panel `EntityInfo` swaps in place: name, the fixed type, the contact collections
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-04 Initial Version
*/


.editEntityPanel__form {
	display: grid;
	grid-template-rows: auto auto auto minmax(0, 30rem) auto;
	gap: var(--gap-stack);
}

.editEntityPanel__heading {
	text-align: left;
}

.editEntityPanel__nameInputContainer {
	display: grid;
	gap: var(--gap-tight);
}

.editEntityPanel__entitiesTypeDropdown {
	width: 100%;
}

.editEntityPanel__contactsContainer {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tile);
}

.editEntityPanel__contactsContainer:empty {
	display: none;
}

.editEntityPanel__buttonsContainer {
	display: flex;
	gap: var(--gap-tile);
	justify-content: end;
	padding-top: var(--pad-row);
}

.editEntityPanel__cancelButton,
.editEntityPanel__saveButton {
	width: 7rem;
}


/**
* entityTypeChooser.css — grouped entity-type cards: a family heading over a responsive
* card grid, each card an illustration plate over its copy and use-case chips.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version (#2236)
*/

.entityTypeChooser__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-section);
	min-width: 0;
}

.entityTypeChooser__group {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.entityTypeChooser__groupHeader {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	gap: var(--gap-inline);
	padding-bottom: var(--pad-cell);
	border-bottom: var(--border-width) solid var(--border-default);
}

.entityTypeChooser__groupName {
	margin: 0;
	text-transform: none;
	letter-spacing: var(--letter-spacing-body, normal);
}

.entityTypeChooser__groupDescription {
	margin: 0;
	color: var(--text-secondary);
}

.entityTypeChooser__cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 26rem), 1fr));
	gap: var(--gap-tile);
}

.entityTypeChooser__card {
	min-height: var(--touch-target-primary);
}

.entityTypeChooser__media {
	aspect-ratio: 16 / 9;
	padding: var(--pad-dense) var(--pad-card);
}

.entityTypeChooser__illustration {
	width: 100%;
	height: 100%;
	overflow: visible;
}

.entityTypeChooser__useCases {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-tight);
	margin-top: var(--gap-tight);
}

.entityTypeChooser__useCase {
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-pill);
	background-color: var(--surface-sunken);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	line-height: var(--line-height-tight);
	white-space: nowrap;
}

.card-selected .entityTypeChooser__useCase {
	background-color: var(--surface-card);
}

.entityTypeChooser__skeleton {
	min-height: 18rem;
}

:root[data-viewport="phone"] .entityTypeChooser__media {
	aspect-ratio: 2 / 1;
}

/**
* themeChooser.css — theme cards whose media is a light | dark pair of miniature screens
* painted from `--sample-*` custom properties the component resolves per theme; the card
* chrome (ring, wash, check) is the shared .card family. The mode caption sits on its own row
* under the mini card in the host's body face — the theme's fonts are not loaded for a preview.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version (#2236)
*/

.themeChooser__view {
	min-width: 0;
}

.themeChooser__cards {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: var(--gap-tile);
}

.themeChooser__media {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	align-items: stretch;
	aspect-ratio: 2 / 1;
	padding: 0;
	background-color: var(--surface-sunken);
}

.themeChooser__scene {
	--sample-page: var(--surface-page);
	--sample-card: var(--surface-card);
	--sample-sunken: var(--surface-sunken);
	--sample-brand: var(--brand-primary);
	--sample-text: var(--text-primary);
	--sample-textSecondary: var(--text-secondary);
	--sample-border: var(--border-default);
	--sample-radius: var(--radius-card);
	position: relative;
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	min-width: 0;
	padding: var(--pad-dense);
	background-color: var(--sample-page);
	color: var(--sample-text);
	overflow: hidden;
}

.themeChooser__scene + .themeChooser__scene {
	border-left: var(--border-width) solid var(--border-default);
}

.themeChooser__sceneMasthead {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

.themeChooser__sceneMark {
	width: 1.2rem;
	height: 1.2rem;
	border-radius: calc(var(--sample-radius) / 2);
	background-color: var(--sample-brand);
}

.themeChooser__sceneTitle {
	width: 46%;
	height: .5rem;
	border-radius: var(--radius-pill);
	background-color: var(--sample-text);
}

.themeChooser__sceneCard {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	flex: 1;
	padding: var(--pad-dense);
	border: var(--border-width) solid var(--sample-border);
	border-radius: var(--sample-radius);
	background-color: var(--sample-card);
}

.themeChooser__sceneLine {
	width: 72%;
	height: .4rem;
	border-radius: var(--radius-pill);
	background-color: var(--sample-text);
}

.themeChooser__sceneLine-secondary {
	width: 52%;
	background-color: var(--sample-textSecondary);
}

.themeChooser__sceneButton {
	width: 34%;
	height: .8rem;
	margin-top: auto;
	border-radius: calc(var(--sample-radius) / 2);
	background-color: var(--sample-brand);
}

.themeChooser__sceneLabel {
	align-self: end;
	font-size: var(--font-size-label);
	line-height: var(--line-height-tight);
	color: var(--sample-textSecondary);
	width: auto;
}

.themeChooser__titleRow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.card-selected .themeChooser__defaultTag {
	background-color: var(--surface-card);
}

.themeChooser__defaultTag {
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-pill);
	background-color: var(--surface-selected);
	color: var(--text-brand);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	width: auto;
	white-space: nowrap;
}

.themeChooser__skeleton {
	min-height: 14rem;
}

/**
* newClientPanel.css
* @author John A Cruz Merced <john.cruz@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-20 Initial Version
*/

.newClientPanel__view {
	position: relative;
	display: flex;
	width: 100%;
	height: 85dvh;

	.addressCollection__item,
	.dropdownInputCollection__item {
		padding: unset;
	}
}

.newClientPanel__main {
	flex: 1 1 0;
	min-width: 0;
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-tile);
}

.newClientPanel__header {
	justify-self: start;
}

.newClientPanel__nameInput {
	width: 100%;
}

.newClientPanel__buttonsContainer {
	justify-content: end;
	display: flex;
	gap: var(--gap-tile);
}

.newClientPanel__suggestionsPillbox {
	max-width: 40rem;
	width: 0;
	display: flex;
	overflow: hidden;
	flex-shrink: 0;
	position: absolute;
	height: 100%;
	top: 0;
	right: 0;
	padding: 0;
}

.newClientPanel__suggestionsPillbox-expanded {
	width: 50%;
	padding: var(--pad-card);
}

.newClientPanel__suggestionsSection {
	width: 100%;
	height: 100%;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: var(--gap-dense);
}

.newClientPanel__suggestedList {
	display: grid;
	gap: var(--gap-tile);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 32rem), 1fr));
	padding: var(--pad-card);
	width: auto;
	height: auto;

	>* {
		list-style-type: none;
		margin: 0;
	}
}

.newClientPanel__defaultEmailPicker {
	margin: 0 0 var(--gap-stack);
}

:root[data-viewport="phone"] .newClientPanel__view {
	width: 92vw;
	flex-direction: column;
	overflow-y: auto;
}

:root[data-viewport="phone"] .newClientPanel__suggestionsPillbox-expanded {
	width: 100%;
	max-width: none;
}

:root[data-viewport="phone"] .newClientPanel__suggestionsSection {
	border-top: var(--border-width) solid var(--border-default);
}

:root[data-viewport="phone"] .newClientPanel__suggestedList {
	width: 100%;
	height: fit-content;
}

.newClientPanel__customDetails {
	height: auto;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.newClientPanel__scrollArea {
	flex: 1 1 auto;
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding: var(--pad-cell);
}

/**
* clientHeader.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the projectHeader.css shape: name over the since line, actions trailing (#2219)
*/

.clientHeader__view {
	display: grid;
	gap: var(--gap-tile);
	align-items: center;
	grid-template-areas:
		'clientHeader_displayName clientHeader_actionButtonsContainer'
		'clientHeader_since .';
	grid-template-columns: minmax(0, 1fr) auto;
}

.clientHeader__displayName {
	grid-area: clientHeader_displayName;
	text-align: left;
	overflow-wrap: anywhere;
}

.clientHeader__status {
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	padding: 0 var(--pad-dense);
	background-color: var(--brand-accent);
}

.clientHeader__since {
	grid-area: clientHeader_since;
	justify-self: start;
	color: var(--text-secondary);
}

.clientHeader__actionButtonsContainer {
	grid-area: clientHeader_actionButtonsContainer;
	display: flex;
	justify-content: flex-end;
	align-items: center;
	gap: var(--gap-tile);
}

.clientHeader__newInvoiceView {
	padding: var(--pad-shell);
}

.clientHeader__newClientPanel {
	width: 50%;
}

:root[data-viewport="phone"] .clientHeader__newClientPanel {
	width: 100%;
}

:root[data-viewport="phone"] .clientHeader__view {
	padding-left: var(--pad-shell);
}

/**
* clientProjectsSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the shared stat-card template (top-anchored header / value / supporting) (#2219)
*/

.clientProjectsSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.clientProjectsSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientProjectsSummary__value {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.clientProjectsSummary__value-live {
	color: var(--text-brand);
}

.clientProjectsSummary__done,
.clientProjectsSummary__archived {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.clientProjectsSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.clientProjectsSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.clientProjectsSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* clientInvoicesSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the shared stat-card template; the balance reads the --text-* status INK roles (#2219)
*/

.clientInvoicesSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.clientInvoicesSummary__view-hidden {
	display: none;
}

.clientInvoicesSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientInvoicesSummary__value {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.clientInvoicesSummary__value-outstanding {
	color: var(--text-warning);
}

.clientInvoicesSummary__value-settled {
	color: var(--text-success);
}

.clientInvoicesSummary__open,
.clientInvoicesSummary__collected {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.clientInvoicesSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.clientInvoicesSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.clientInvoicesSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* clientTasksSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the shared stat-card template (top-anchored header / value / supporting) (#2219)
*/

.clientTasksSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.clientTasksSummary__view-hidden {
	display: none;
}

.clientTasksSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientTasksSummary__value {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.clientTasksSummary__value-live {
	color: var(--text-brand);
}

.clientTasksSummary__done,
.clientTasksSummary__total {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.clientTasksSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.clientTasksSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.clientTasksSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* clientRelationshipSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the shared stat-card template (top-anchored header / value / supporting) (#2219)
*/

.clientRelationshipSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.clientRelationshipSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientRelationshipSummary__value {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.clientRelationshipSummary__since,
.clientRelationshipSummary__linked {
	min-width: 0;
}

.clientRelationshipSummary__linked-none .headerWithSmallHeading__header {
	color: var(--text-secondary);
}

.clientRelationshipSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.clientRelationshipSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.clientRelationshipSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
	overflow-wrap: anywhere;
}

/**
* clientActiveTasks.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the projectActiveTasks.css shape (#2219)
*/

.clientActiveTasks__view {
	display: grid;
	row-gap: var(--gap-stack);
	grid-template-rows: auto auto 1fr;
	min-height: 0;
	padding: var(--pad-card);
}

.clientActiveTasks__view-hidden {
	display: none;
}

.clientActiveTasks__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientActiveTasks__value {
	font-size: var(--font-size-subheading);
	color: var(--text-brand);
	font-variant-numeric: tabular-nums;
}

.clientActiveTasks__empty {
	color: var(--text-secondary);
	font-style: italic;
}

.clientActiveTasks__scrollArea {
	min-height: 0;
	max-height: 34rem;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

.clientActiveTasks__scrollArea .taskTile__view {
	margin: 0;
	width: 100%;
}

/**
* clientWorkingNow.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the projectWorkingNow.css shape (#2219)
*/

.clientWorkingNow__view {
	display: grid;
	row-gap: var(--gap-stack);
	grid-template-rows: auto auto 1fr;
	min-height: 0;
	padding: var(--pad-card);
}

.clientWorkingNow__view-hidden {
	display: none;
}

.clientWorkingNow__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientWorkingNow__value {
	font-size: var(--font-size-subheading);
	color: var(--text-brand);
	font-variant-numeric: tabular-nums;
}

.clientWorkingNow__empty {
	color: var(--text-secondary);
	font-style: italic;
}

.clientWorkingNow__scrollArea {
	min-height: 0;
	max-height: 34rem;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

/**
* clientProjects.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the projectTaskTiles.css shape: a height-bounded scroll column of tiles (#2219)
*/

.clientProjects__view {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	min-height: 0;
	height: 100%;
}

.clientProjects__skeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.clientProjects__scrollArea {
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
	padding: var(--pad-dense);
}

.clientProjects__tile {
	width: 100%;
	margin: 0;
}

.clientProjects__tile-inactive {
	pointer-events: none;
	opacity: 0.5;
}

.clientProjects__empty {
	height: 100%;
}

/**
* clientInvoices.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — a height-bounded scroll column of invoice tiles (#2219); the overlay action row lives in savedInvoiceSheet.css
*/

.clientInvoices__view {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	min-height: 0;
	height: 100%;
}

.clientInvoices__skeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.clientInvoices__scrollArea {
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
	padding: var(--pad-dense);
}

.clientInvoices__empty {
	height: 100%;
}

/**
* savedInvoiceSheet.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version — the action row wraps under the invoice panel (#2219)
*/

.savedInvoiceSheet__actions {
	display: flex;
	flex-wrap: wrap;
	justify-content: flex-end;
	align-items: center;
	gap: var(--gap-dense) var(--gap-stack);
	min-height: calc(var(--touch-target-primary) + 2 * var(--pad-cell));
	padding-right: var(--pad-card);
}

.savedInvoiceSheet__scheduledNote {
	margin: 0 0 var(--gap-dense);
	color: var(--text-secondary);
}

/**
* projectDeadlineSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-08 Initial Version
*/

.projectDeadlineSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.projectDeadlineSummary__view-hidden {
	display: none;
}

.projectDeadlineSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectDeadlineSummary__value {
	font-weight: var(--font-weight-heading);
}

.projectDeadlineSummary__startDate,
.projectDeadlineSummary__deadline {
	min-width: 0;
}

.projectDeadlineSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.projectDeadlineSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.projectDeadlineSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* projectDescription.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-01 Initial Version — Details description card (mirrors taskDescription.css)
*/

.projectDescription__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-inline);
	padding: var(--pad-card);
}

.projectDescription__heading {
	text-align: left;
}

.projectDescription__text {
	color: var(--text-secondary);
}

/**
* projectProgressSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-08 Initial Version
*/

.projectProgressSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.projectProgressSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectProgressSummary__percentageValue {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.projectProgressSummary__percentageValue-empty { color: var(--text-secondary); }
.projectProgressSummary__percentageValue-inProgress { color: var(--text-brand); }
.projectProgressSummary__percentageValue-complete { color: var(--text-success); }

.projectProgressSummary__progressBar {
	display: block;
	width: 100%;
}

.projectProgressSummary__progressBar-inProgress .progressBar { background: var(--brand-primary); }
.projectProgressSummary__progressBar-complete .progressBar { background: var(--status-success); }

/**
* projectTimeSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-08 Initial Version
*/

.projectTimeSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.projectTimeSummary__view-hidden {
	display: none;
}

.projectTimeSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectTimeSummary__timeLeftValue {
	color: var(--text-success);
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.projectTimeSummary__timeLeftValue-overBudget {
	color: var(--text-danger);
}

.projectTimeSummary__total,
.projectTimeSummary__consumed {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.projectTimeSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.projectTimeSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.projectTimeSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* projectFinancialSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-08 Initial Version
*/

.projectFinancialSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.projectFinancialSummary__view-hidden {
	display: none;
}

.projectFinancialSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectFinancialSummary__billed {
	color: var(--text-success);
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.projectFinancialSummary__total,
.projectFinancialSummary__remaining {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.projectFinancialSummary__remaining-overBudget {
	color: var(--text-danger);
}

.projectFinancialSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.projectFinancialSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.projectFinancialSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* projectTasks.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-31 Initial Version
*/

/* dense data surface: --pad-dense/--gap-dense/--radius-dense per the token contract's §Dense exception */

.projectTasks__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-dense);
}

.projectTasks__heading {
	text-align: left;
}

.projectTasks__item {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-cell) 0;
}

/* Status dot — done is green, to-do is muted; matches the deadline/progress color language. */
.projectTasks__dot {
	width: .8rem;
	height: .8rem;
	border-radius: var(--radius-avatar);
	flex: none;
}

.projectTasks__dot-done {
	background: var(--status-success);
}

.projectTasks__dot-todo {
	background: var(--text-secondary);
}

.projectTasks__item-done {
	text-decoration: line-through;
	opacity: .6;
}

/**
* projectTaskTiles.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-29 Initial Version
*/

.projectTaskTiles__view {
	display: grid;
	grid-template-rows: 1fr;
	min-height: 0;
	height: 100%;
}

/* Bounded, scrolling list of the project's TaskTiles. `min-height:0` lets the
   1fr grid row actually shrink so `overflow:auto` engages instead of the list
   forcing the tab to grow unbounded. */
.projectTaskTiles__scrollArea {
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

/* Each tile is the scroll area's flex item (its `[data-slot]` host is `display:contents`).
   Pin the shared `.taskTile__view`'s margin here so no `auto` side margin can reach it:
   `auto` sides absorb the free space and suppress the column's `align-items:stretch`,
   leaving tiles centered at content width (unequal, staggered). The block margin does the
   vertical spacing. */
.projectTaskTiles__scrollArea .taskTile__view {
	margin: var(--gap-dense) 0;
	width: 100%;
}

.projectTaskTiles__empty {
	color: var(--text-secondary);
	font-style: italic;
}
/**
* projectTeamMembers.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-31 Initial Version
*/

.projectTeamMembers__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-inline);
}

.projectTeamMembers__heading {
	text-align: left;
}

/* Bounded, scrolling list of TeamMemberTiles. `min-height:0` lets the 1fr grid
   row shrink so `overflow:auto` engages instead of the list forcing growth. */
.projectTeamMembers__scrollArea {
	min-height: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

/**
* projectActiveTasks.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-29 Initial Version
*/

.projectActiveTasks__view {
	display: grid;
	row-gap: var(--gap-stack);
	/* header · value · supporting · scrolling tile list (the list takes the slack). */
	grid-template-rows: auto auto auto 1fr;
	min-height: 0;
	padding: var(--pad-card);
}

.projectActiveTasks__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectActiveTasks__value {
	font-size: var(--font-size-subheading);
	color: var(--text-brand);
}

.projectActiveTasks__supporting {
	color: var(--text-secondary);
}

.projectActiveTasks__empty {
	color: var(--text-secondary);
	font-style: italic;
}

/* Bounded, scrolling list of the running TaskTiles. `min-height:0` lets the
   1fr grid row actually shrink so `overflow:auto` engages instead of the list
   forcing the card to grow unbounded. */
.projectActiveTasks__scrollArea {
	min-height: 0;
	max-height: 34rem;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

/* Stretch each tile to the same full width — a centering `margin` on the shared
   `.taskTile__view` would otherwise center it at content width (its `[data-slot]`
   host is `display:contents`, so the tile is the column flex item and the `auto` side
   margins suppress `align-items:stretch`). See projectTaskTiles.css for the full note. */
.projectActiveTasks__scrollArea .taskTile__view {
	margin: 0;
	width: 100%;
}

/**
* projectWorkingNow.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-29 Initial Version
*/

.projectWorkingNow__view {
	display: grid;
	row-gap: var(--gap-stack);
	/* header · value · scrolling member-tile list (the list takes the slack). */
	grid-template-rows: auto auto 1fr;
	min-height: 0;
	padding: var(--pad-card);
}

.projectWorkingNow__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectWorkingNow__value {
	font-size: var(--font-size-subheading);
	color: var(--text-brand);
}

.projectWorkingNow__empty {
	color: var(--text-secondary);
	font-style: italic;
}

/* Bounded, scrolling list of the working TeamMemberTiles. `min-height:0` lets the
   1fr grid row shrink so `overflow:auto` engages instead of growing the card. */
.projectWorkingNow__scrollArea {
	min-height: 0;
	max-height: 34rem;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

/**
* projectBurndown.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-31 Initial Version
*/

.projectBurndown__view {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	min-height: 0;
	height: 100%;
	width: 100%;
}

.projectBurndown__view .graph__view {
	min-height: 24rem;
	height: clamp(28rem, 38dvh, 42rem);
}

:root[data-viewport="phone"] .projectBurndown__view {
	height: auto;
}

:root[data-viewport="phone"] .projectBurndown__view .graph__view {
	height: 32rem;
}

.projectBurndown__skeleton,
.projectBurndown__empty {
	height: 100%;
	min-height: 16rem;
}

/**
 * projectGantt.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-May-31 Initial Version — project Gantt diagram (DOM bars + subtask grouping)
*/

.projectGantt__view {
	--projectGantt-label-width: clamp(10rem, 26%, 22rem);
	--projectGantt-row-height: 2.8rem;
	--projectGantt-row-height-max: 4.4rem;
	--gantt-bar-height: 2.2rem;
	--gantt-connector-stub: .8rem;
	display: grid;
	grid-template-rows: auto auto;
	min-height: 0;
	height: auto;
	width: 100%;
}

.projectGantt__skeleton,
.projectGantt__empty {
	height: 100%;
	min-height: 16rem;
}

.projectGantt__axis {
	display: grid;
	grid-template-columns: var(--projectGantt-label-width) minmax(0, 1fr);
	column-gap: var(--gap-dense);
	align-items: end;
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-shorthand);
}

.projectGantt__range {
	grid-column: 1;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.projectGantt__axisLane {
	grid-column: 2;
	position: relative;
	height: 3rem;
}

.projectGantt__tick {
	position: absolute;
	bottom: 0;
	translate: -50% 0;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.projectGantt__todayLabel {
	position: absolute;
	top: 0;
	translate: -50% 0;
	padding: 0 var(--pad-cell);
	color: var(--text-primary);
	background-color: var(--surface-card);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	white-space: nowrap;
}

.projectGantt__scroll {
	min-height: 0;
	max-height: 36rem;
	scrollbar-width: thin;
}

.projectGantt__rows {
	position: relative;
	display: grid;
	grid-template-columns: var(--projectGantt-label-width) minmax(0, 1fr);
	grid-auto-rows: var(--projectGantt-row-height-max);
	align-items: center;
	align-content: start;
	column-gap: var(--gap-dense);
	box-sizing: border-box;
	height: auto;
	padding-block: var(--pad-dense);
}

.projectGantt__label {
	margin: 0;
	position: relative;
	z-index: 1;
	width: 100%;
	min-width: 0;
	color: var(--text-primary);
	font-size: var(--font-size-body);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.projectGantt__label-root {
	font-weight: var(--font-weight-medium);
}

.projectGantt__lane {
	position: relative;
	height: var(--gantt-bar-height);
}

.projectGantt__bar {
	position: absolute;
	top: 0;
	height: 100%;
	min-width: .3rem;
	overflow: visible;
	border-radius: var(--chart-mark-radius);
	box-shadow: var(--chart-track-elevation);
	background: color-mix(in srgb, var(--chart-series-1) 14%, var(--surface-card));
	border: var(--border-width) solid color-mix(in srgb, var(--chart-series-1) 35%, transparent);
}

.projectGantt__barFill {
	position: absolute;
	inset: 0 auto 0 0;
	background-color: var(--chart-series-1);
	background-image: var(--chart-bar-texture);
	box-shadow: var(--chart-mark-elevation);
	border-radius: inherit;
}

.projectGantt__bar--fallback {
	background: repeating-linear-gradient(
		45deg,
		color-mix(in srgb, var(--chart-series-1) 55%, transparent),
		color-mix(in srgb, var(--chart-series-1) 55%, transparent) .4rem,
		transparent .4rem,
		transparent .8rem
	);
}

.projectGantt__overlay {
	grid-column: 2;
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.projectGantt__gridLine,
.projectGantt__today {
	position: absolute;
	top: 0;
	bottom: 0;
	width: 0;
	border-left: var(--border-shorthand);
}

.projectGantt__today {
	border-left: var(--border-width) dashed var(--text-primary);
	opacity: .55;
}

.projectGantt__connector {
	position: absolute;
	inset: 0;
	color: var(--text-accent);
}

.projectGantt__connectorH,
.projectGantt__connectorV {
	position: absolute;
	background-color: currentColor;
}

.projectGantt__connectorH {
	height: .2rem;
	translate: 0 -50%;
}

.projectGantt__connectorV {
	width: .2rem;
	translate: -50% 0;
}

.projectGantt__connectorArrow {
	position: absolute;
	width: 0;
	height: 0;
	translate: -100% -50%;
	border-block: .4rem solid transparent;
	border-left: .6rem solid currentColor;
}

.projectGantt__connectorArrow-down {
	translate: -50% -100%;
	border-inline: .4rem solid transparent;
	border-block: none;
	border-top: .6rem solid currentColor;
}

.projectGantt__connectorArrow-up {
	translate: -50% 0;
	border-inline: .4rem solid transparent;
	border-block: none;
	border-bottom: .6rem solid currentColor;
}

:root[data-viewport="phone"] .projectGantt__view {
	--projectGantt-label-width: 9rem;
	--projectGantt-row-height: 2.4rem;
	--projectGantt-row-height-max: 4rem;
	height: auto;
}

:root[data-viewport="phone"] .projectGantt__rows {
	height: auto;
}

:root[data-viewport="phone"] .projectGantt__tick:nth-child(even),
:root[data-viewport="phone"] .projectGantt__range {
	display: none;
}

.projectGantt__lane::before {
	content: '';
	position: absolute;
	inset: calc((var(--projectGantt-row-height-max) - var(--gantt-bar-height)) / -2) 0;
	border-bottom: var(--border-width) solid color-mix(in srgb, var(--border-default) 45%, transparent);
	pointer-events: none;
}

.projectGantt__gridLine {
	border-left-style: dashed;
	opacity: .5;
}

.projectGantt__rows {
	background-color: var(--chart-plot-surface);
	background-image: var(--chart-plot-texture);
	border-radius: var(--radius-card);
	box-shadow: var(--chart-plot-elevation);
}

.projectGantt__range,
.projectGantt__tick,
.projectGantt__todayLabel {
	font-family: var(--chart-label-font);
}

.projectGantt__barFill::after {
	content: '';
	position: absolute;
	inset: .2rem;
	border-top: .1rem solid color-mix(in srgb, var(--surface-card) 50%, transparent);
	border-radius: inherit;
	pointer-events: none;
}

/**
* taskBurndown.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version — task burndown chart
*/

.taskBurndown__view {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	min-height: 0;
	height: 100%;
	width: 100%;
}

.taskBurndown__view .graph__view {
	min-height: 24rem;
	height: clamp(28rem, 38dvh, 42rem);
}

:root[data-viewport="phone"] .taskBurndown__view {
	height: auto;
}

:root[data-viewport="phone"] .taskBurndown__view .graph__view {
	height: 32rem;
}

.taskBurndown__skeleton,
.taskBurndown__empty {
	height: 100%;
	min-height: 16rem;
}

/**
 * taskGantt.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-June-10 Initial Version — task Gantt diagram (DOM bars + subtask grouping)
*/

.taskGantt__view {
	--taskGantt-label-width: clamp(10rem, 26%, 22rem);
	--taskGantt-row-height: 2.8rem;
	--taskGantt-row-height-max: 4.4rem;
	--gantt-bar-height: 2.2rem;
	--gantt-connector-stub: .8rem;
	display: grid;
	grid-template-rows: auto auto;
	min-height: 0;
	height: auto;
	width: 100%;
}

.taskGantt__skeleton,
.taskGantt__empty {
	height: 100%;
	min-height: 16rem;
}

.taskGantt__axis {
	display: grid;
	grid-template-columns: var(--taskGantt-label-width) minmax(0, 1fr);
	column-gap: var(--gap-dense);
	align-items: end;
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-shorthand);
}

.taskGantt__range {
	grid-column: 1;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.taskGantt__axisLane {
	grid-column: 2;
	position: relative;
	height: 3rem;
}

.taskGantt__tick {
	position: absolute;
	bottom: 0;
	translate: -50% 0;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.taskGantt__todayLabel {
	position: absolute;
	top: 0;
	translate: -50% 0;
	padding: 0 var(--pad-cell);
	color: var(--text-primary);
	background-color: var(--surface-card);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	white-space: nowrap;
}

.taskGantt__scroll {
	min-height: 0;
	max-height: 36rem;
	scrollbar-width: thin;
}

.taskGantt__rows {
	position: relative;
	display: grid;
	grid-template-columns: var(--taskGantt-label-width) minmax(0, 1fr);
	grid-auto-rows: var(--taskGantt-row-height-max);
	align-items: center;
	align-content: start;
	column-gap: var(--gap-dense);
	box-sizing: border-box;
	height: auto;
	padding-block: var(--pad-dense);
}

.taskGantt__label {
	margin: 0;
	position: relative;
	z-index: 1;
	width: 100%;
	min-width: 0;
	color: var(--text-primary);
	font-size: var(--font-size-body);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.taskGantt__label-root {
	font-weight: var(--font-weight-medium);
}

.taskGantt__lane {
	position: relative;
	height: var(--gantt-bar-height);
}

.taskGantt__bar {
	position: absolute;
	top: 0;
	height: 100%;
	min-width: .3rem;
	overflow: visible;
	border-radius: var(--chart-mark-radius);
	box-shadow: var(--chart-track-elevation);
	background: color-mix(in srgb, var(--chart-series-1) 14%, var(--surface-card));
	border: var(--border-width) solid color-mix(in srgb, var(--chart-series-1) 35%, transparent);
}

.taskGantt__barFill {
	position: absolute;
	inset: 0 auto 0 0;
	background-color: var(--chart-series-1);
	background-image: var(--chart-bar-texture);
	box-shadow: var(--chart-mark-elevation);
	border-radius: inherit;
}

.taskGantt__bar--fallback {
	background: repeating-linear-gradient(
		45deg,
		color-mix(in srgb, var(--chart-series-1) 55%, transparent),
		color-mix(in srgb, var(--chart-series-1) 55%, transparent) .4rem,
		transparent .4rem,
		transparent .8rem
	);
}

.taskGantt__overlay {
	grid-column: 2;
	position: absolute;
	inset: 0;
	pointer-events: none;
}

.taskGantt__gridLine,
.taskGantt__today {
	position: absolute;
	top: 0;
	bottom: 0;
	width: 0;
	border-left: var(--border-shorthand);
}

.taskGantt__today {
	border-left: var(--border-width) dashed var(--text-primary);
	opacity: .55;
}

.taskGantt__connector {
	position: absolute;
	inset: 0;
	color: var(--text-accent);
}

.taskGantt__connectorH,
.taskGantt__connectorV {
	position: absolute;
	background-color: currentColor;
}

.taskGantt__connectorH {
	height: .2rem;
	translate: 0 -50%;
}

.taskGantt__connectorV {
	width: .2rem;
	translate: -50% 0;
}

.taskGantt__connectorArrow {
	position: absolute;
	width: 0;
	height: 0;
	translate: -100% -50%;
	border-block: .4rem solid transparent;
	border-left: .6rem solid currentColor;
}

.taskGantt__connectorArrow-down {
	translate: -50% -100%;
	border-inline: .4rem solid transparent;
	border-block: none;
	border-top: .6rem solid currentColor;
}

.taskGantt__connectorArrow-up {
	translate: -50% 0;
	border-inline: .4rem solid transparent;
	border-block: none;
	border-bottom: .6rem solid currentColor;
}

:root[data-viewport="phone"] .taskGantt__view {
	--taskGantt-label-width: 9rem;
	--taskGantt-row-height: 2.4rem;
	--taskGantt-row-height-max: 4rem;
	height: auto;
}

:root[data-viewport="phone"] .taskGantt__rows {
	height: auto;
}

:root[data-viewport="phone"] .taskGantt__tick:nth-child(even),
:root[data-viewport="phone"] .taskGantt__range {
	display: none;
}

.taskGantt__lane::before {
	content: '';
	position: absolute;
	inset: calc((var(--taskGantt-row-height-max) - var(--gantt-bar-height)) / -2) 0;
	border-bottom: var(--border-width) solid color-mix(in srgb, var(--border-default) 45%, transparent);
	pointer-events: none;
}

.taskGantt__gridLine {
	border-left-style: dashed;
	opacity: .5;
}

.taskGantt__rows {
	background-color: var(--chart-plot-surface);
	background-image: var(--chart-plot-texture);
	border-radius: var(--radius-card);
	box-shadow: var(--chart-plot-elevation);
}

.taskGantt__range,
.taskGantt__tick,
.taskGantt__todayLabel {
	font-family: var(--chart-label-font);
}

.taskGantt__barFill::after {
	content: '';
	position: absolute;
	inset: .2rem;
	border-top: .1rem solid color-mix(in srgb, var(--surface-card) 50%, transparent);
	border-radius: inherit;
	pointer-events: none;
}

/**
 * intervalTile.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2020-04-07 Initial Version
 */

.intervalTile__view {
	display: grid;
	grid-template-columns: minmax(10rem, 1.4fr) minmax(0, 2fr) auto 5.6rem;
	grid-template-areas: 'intervalTile_member intervalTile_range intervalTile_duration intervalTile_actions';
	align-items: center;
	column-gap: var(--gap-inline);
	min-height: 4rem;
	padding: var(--pad-cell) var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.intervalTile__view:hover {
	background-color: var(--surface-hover);
}

.intervalTile__view-editing {
	display: block;
	padding: var(--pad-card) var(--pad-dense);
	background-color: var(--surface-selected);
}

.intervalTile__member {
	grid-area: intervalTile_member;
	min-width: 0;
}

.intervalTile__teamMember {
	gap: var(--gap-dense);
	min-width: 0;
}

.intervalTile__teamMember .heading {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.intervalTile__memberPlaceholder {
	color: var(--text-disabled);
}

.intervalTile__range {
	grid-area: intervalTile_range;
	display: flex;
	align-items: baseline;
	gap: var(--gap-tight);
	min-width: 0;
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.intervalTile__rangeDay {
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
}

.intervalTile__rangeArrow {
	color: var(--text-disabled);
}

.intervalTile__rangeStop-running {
	color: var(--text-success);
}

.intervalTile__duration {
	grid-area: intervalTile_duration;
	display: flex;
	align-items: center;
	justify-content: end;
	gap: var(--gap-dense);
}

.intervalTile__total {
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	color: var(--text-primary);
}

.intervalTile__runningTotal {
	color: var(--text-success);
}

.intervalTile__pulse {
	width: .8rem;
	height: .8rem;
	border-radius: var(--radius-pill);
	background-color: var(--status-success);
	box-shadow: 0 0 0 .3rem color-mix(in srgb, var(--status-success) 22%, transparent); /* intentional literal: a flat status halo ring around the pulse dot, not a depth cue — no --elevation-* rung is a ring */
	animation: onlineIndicatorBreathe calc(var(--motion-slow) * 4) var(--ease-standard) infinite;
}

.intervalTile__actions {
	grid-area: intervalTile_actions;
	display: flex;
	align-items: center;
	justify-content: end;
	gap: var(--gap-hairline);
}

.intervalTile__editButton,
.intervalTile__deleteButton {
	cursor: pointer;
	color: var(--text-secondary);
	transition: opacity var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.intervalTile__editButton:hover,
.intervalTile__editButton:focus-visible {
	color: var(--text-primary);
}

.intervalTile__deleteButton:hover,
.intervalTile__deleteButton:focus-visible {
	color: var(--text-danger);
}

@media (hover: hover) {

	.intervalTile__editButton,
	.intervalTile__deleteButton {
		opacity: 0;
	}

	.intervalTile__view:hover .intervalTile__editButton,
	.intervalTile__view:hover .intervalTile__deleteButton,
	.intervalTile__view:focus-within .intervalTile__editButton,
	.intervalTile__view:focus-within .intervalTile__deleteButton {
		opacity: 1;
	}
}

:root[data-viewport="phone"] .intervalTile__view {
	grid-template-columns: minmax(0, 1fr) auto 5.6rem;
	grid-template-areas: 'intervalTile_member intervalTile_duration intervalTile_actions' 'intervalTile_range intervalTile_range intervalTile_actions';
	row-gap: var(--gap-hairline);
	padding-block: var(--pad-dense);
}

:root[data-viewport="phone"] .intervalTile__range {
	font-size: var(--font-size-caption);
}

/**
* taskHeader.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version — extracted from taskPanel.css; mirrors projectHeader.css
*/

.taskHeader__view {
	display: grid;
	gap: var(--gap-tile);
	align-items: center;
	grid-template-columns: minmax(0, 1fr) auto;
}

.taskHeader__taskName {
	text-align: left;
}

.taskHeader__actionButtonsContainer {
	display: flex;
	align-items: center;
	justify-content: flex-end;
	gap: var(--gap-tile);
}

.taskHeader__status {
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	padding: 0 var(--pad-dense);
	background-color: var(--brand-accent);
}

:root[data-viewport="phone"] .taskHeader__view {
	padding-left: var(--pad-shell);
}

/**
* taskDeadlineSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskDeadlineSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.taskDeadlineSummary__view-hidden {
	display: none;
}

.taskDeadlineSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.taskDeadlineSummary__value {
	font-weight: var(--font-weight-heading);
}

.taskDeadlineSummary__deadline {
	min-width: 0;
}

.taskDeadlineSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.taskDeadlineSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.taskDeadlineSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* taskProgressSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskProgressSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.taskProgressSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.taskProgressSummary__percentageValue {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.taskProgressSummary__percentageValue-empty { color: var(--text-secondary); }
.taskProgressSummary__percentageValue-inProgress { color: var(--text-brand); }
.taskProgressSummary__percentageValue-complete { color: var(--text-success); }

.taskProgressSummary__supporting {
	display: grid;
	row-gap: var(--gap-inline);
	align-items: start;
}

.taskProgressSummary__progressBar {
	display: block;
	width: 100%;
}

.taskProgressSummary__progressBar-inProgress .progressBar { background: var(--brand-primary); }
.taskProgressSummary__progressBar-complete .progressBar { background: var(--status-success); }

.taskProgressSummary__completedValue {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

/**
* taskTimeSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskTimeSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.taskTimeSummary__view-hidden {
	display: none;
}

.taskTimeSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.taskTimeSummary__remainingValue {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.taskTimeSummary__total,
.taskTimeSummary__consumed {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.taskTimeSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.taskTimeSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.taskTimeSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* taskFinancialSummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskFinancialSummary__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
}

.taskFinancialSummary__view-hidden {
	display: none;
}

.taskFinancialSummary__iconLabelContainer {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.taskFinancialSummary__billed {
	color: var(--text-success);
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
}

.taskFinancialSummary__total {
	min-width: 0;
	font-variant-numeric: tabular-nums;
}

.taskFinancialSummary__supporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.taskFinancialSummary__supporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.taskFinancialSummary__supporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	white-space: normal;
}

/**
* taskSubtasks.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskSubtasks__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	min-height: 0;
}

.taskSubtasks__lineage {
	flex: none;
	display: flex;
	align-items: baseline;
	gap: var(--gap-dense);
	min-width: 0;
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-shorthand);
}

.taskSubtasks__lineageLabel,
.taskSubtasks__lineageNumber {
	flex: none;
	color: var(--text-secondary);
}

.taskSubtasks__lineageNumber {
	font-variant-numeric: tabular-nums;
}

.taskSubtasks__parentName {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--text-link);
	cursor: pointer;
}

.taskSubtasks__parentName:hover {
	text-decoration: underline;
	text-underline-offset: .2rem;
}

.taskSubtasks__head {
	flex: none;
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

.taskSubtasks__headRow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.taskSubtasks__headText {
	display: flex;
	align-items: baseline;
	gap: var(--gap-inline);
	min-width: 0;
}

.taskSubtasks__heading {
	text-align: left;
}

.taskSubtasks__progressCaption {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.taskSubtasks__progressCaption-complete {
	color: var(--text-success);
}

.taskSubtasks__addButton {
	flex: none;
}

.taskSubtasks__progress {
	display: block;
	height: .3rem;
	border-radius: var(--radius-pill);
	overflow: hidden;
}

.taskSubtasks__progress-complete .progressBar {
	background-color: var(--status-success);
}

.taskSubtasks__skeletonList {
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

.taskSubtasks__outlineScroll {
	flex: 1 1 auto;
	min-height: 0;
}

.taskSubtasks__empty,
.taskSubtasks__status {
	flex: 1 1 auto;
	min-height: 0;
}

.taskSubtasks__dependencies {
	flex: none;
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--gap-tile);
	padding-top: var(--pad-dense);
	border-top: var(--border-shorthand);
}

.taskSubtasks__lane {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	min-width: 0;
}

.taskSubtasks__relationHeading {
	flex: none;
	text-align: left;
	color: var(--text-secondary);
}

.taskSubtasks__relationCount {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.taskSubtasks__laneScroll {
	flex: 0 1 auto;
	height: auto;
	max-height: 14rem;
}

.taskSubtasks__laneList {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
}

.taskSubtasks__laneItem {
	display: flex;
	align-items: center;
	gap: var(--gap-dense);
	margin: 0;
	min-height: var(--touch-target-minimum);
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-dense);
	font-size: var(--font-size-body);
}

.taskSubtasks__laneItem:hover {
	background-color: var(--surface-hover);
}

.taskSubtasks__laneNumber {
	flex: none;
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.taskSubtasks__laneName {
	flex: 1 1 auto;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--text-primary);
	cursor: pointer;
}

.taskSubtasks__laneName:hover,
.taskSubtasks__laneName:focus-visible {
	color: var(--text-link);
	text-decoration: underline;
	text-underline-offset: .2rem;
}

.taskSubtasks__laneStatus {
	flex: none;
}

.taskSubtasks__laneItem-done .taskSubtasks__laneName {
	color: var(--text-secondary);
	text-decoration: line-through;
}

.taskSubtasks__laneEmpty {
	text-align: left;
	padding: var(--pad-cell) var(--pad-dense);
}

:root[data-viewport="phone"] .taskSubtasks__dependencies {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .taskSubtasks__headRow {
	flex-wrap: wrap;
}

:root[data-viewport="phone"] .taskSubtasks__laneName {
	color: var(--text-link);
}

/**
* subtaskOutline.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2264)
*/

.subtaskOutline__view {
	display: block;
	min-width: 0;
}

.subtaskOutline__branch,
.subtaskOutline__doneList {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
}

.subtaskOutline__branch-nested {
	margin-left: 1.2rem; /* intentional literal: half the 2.4rem expander column, so the guide falls under the chevron */
	padding-left: 1.2rem; /* intentional literal: the other half, so nested rows start where the parent's checkmark does */
	border-left: var(--border-width) solid var(--border-default);
}

.subtaskOutline__branch-nested.subtaskOutline__branch-flat {
	padding-left: 3.6rem; /* intentional literal: the full expander column plus the half-guide, since a flat branch drops the chevron */
}

.subtaskOutline__item,
.subtaskOutline__doneGroup {
	margin: 0;
	font-size: var(--font-size-body);
}

.subtaskOutline__row {
	display: grid;
	grid-template-columns: 2.4rem auto minmax(0, 1fr) auto;
	grid-template-areas: 'subtaskOutline_expander subtaskOutline_check subtaskOutline_main subtaskOutline_meta';
	align-items: center;
	column-gap: var(--gap-dense);
	min-height: 3.6rem;
	padding: var(--pad-cell) var(--pad-dense) var(--pad-cell) 0;
	border-radius: var(--radius-dense);
}

.subtaskOutline__row:hover {
	background-color: var(--surface-hover);
}

.subtaskOutline__branch-flat>.subtaskOutline__item>.subtaskOutline__row {
	grid-template-columns: 0 auto minmax(0, 1fr) auto;
}

.subtaskOutline__branch-flat>.subtaskOutline__doneGroup>.subtaskOutline__doneToggle {
	margin-left: calc(2.1rem + var(--gap-dense) * 2 - var(--pad-dense)); /* intentional literal: the checkmark's width, so the toggle's text lines up with the names above it */
}

.subtaskOutline__expander,
.subtaskOutline__expanderSpacer {
	grid-area: subtaskOutline_expander;
	justify-self: center;
}

.subtaskOutline__expander {
	color: var(--text-secondary);
	transition: transform var(--motion-base) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.subtaskOutline__expander:hover {
	color: var(--text-primary);
}

.subtaskOutline__expander-open {
	transform: rotate(90deg);
}

.subtaskOutline__row .checkmark__view {
	grid-area: subtaskOutline_check;
}

.subtaskOutline__main {
	grid-area: subtaskOutline_main;
	display: flex;
	align-items: baseline;
	gap: var(--gap-dense);
	min-width: 0;
}

.subtaskOutline__number {
	flex: none;
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.subtaskOutline__name {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	color: var(--text-primary);
	cursor: pointer;
}

.subtaskOutline__name:hover,
.subtaskOutline__name:focus-visible {
	color: var(--text-link);
	text-decoration: underline;
	text-underline-offset: .2rem;
}

.subtaskOutline__branchCount {
	flex: none;
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.subtaskOutline__meta {
	grid-area: subtaskOutline_meta;
	display: flex;
	align-items: center;
	justify-content: end;
	gap: var(--gap-dense);
	min-width: 0;
}

.subtaskOutline__avatars {
	max-width: 9rem;
}

.subtaskOutline__deadline .heading,
.subtaskOutline__deadline .span {
	color: var(--text-on-status);
}

.subtaskOutline__item-done .subtaskOutline__name {
	color: var(--text-secondary);
	text-decoration: line-through;
}

.subtaskOutline__item-done .subtaskOutline__number,
.subtaskOutline__item-done .subtaskOutline__branchCount {
	color: var(--text-disabled);
}

.subtaskOutline__doneToggle {
	display: inline-flex;
	align-items: center;
	min-height: var(--touch-target-minimum);
	margin-left: calc(2.4rem + 2.1rem + var(--gap-dense) * 2 - var(--pad-dense)); /* intentional literal: expander column plus checkmark width, so the toggle's text lines up with the names above it */
	padding: var(--pad-cell) var(--pad-dense);
	border: none;
	border-radius: var(--radius-dense);
	background: transparent;
	color: var(--text-secondary);
	font: inherit;
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	cursor: pointer;
}

.subtaskOutline__doneToggle:hover {
	color: var(--text-primary);
	background-color: var(--surface-hover);
}

.subtaskOutline__doneList {
	margin-top: var(--gap-hairline);
}

.subtaskOutline__doneList>.subtaskOutline__item,
.subtaskOutline__branch-nested>.subtaskOutline__item {
	animation-name: var(--motion-enter-name, motionEnter);
	animation-duration: var(--motion-base);
	animation-timing-function: var(--ease-enter);
	animation-fill-mode: backwards;
}

:root[data-viewport="phone"] .subtaskOutline__row {
	grid-template-columns: 2.4rem auto minmax(0, 1fr);
	grid-template-areas:
		'subtaskOutline_expander subtaskOutline_check subtaskOutline_main'
		'subtaskOutline_expander subtaskOutline_check subtaskOutline_meta';
	column-gap: var(--gap-dense);
	row-gap: var(--gap-tight);
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .subtaskOutline__branch-flat>.subtaskOutline__item>.subtaskOutline__row {
	grid-template-columns: 0 auto minmax(0, 1fr);
}

:root[data-viewport="phone"] .subtaskOutline__meta {
	justify-content: start;
}

:root[data-viewport="phone"] .subtaskOutline__meta:empty {
	display: none;
}

:root[data-viewport="phone"] .subtaskOutline__name {
	color: var(--text-link);
}

/**
* taskStatusTimeline.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskStatusTimeline__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-inline);
	padding: var(--pad-card);
}

/* Uniform card header — left-aligned, no separator line under it (matches taskDescription). */
.taskStatusTimeline__heading {
	text-align: left;
}

.taskStatusTimeline__entry {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.taskStatusTimeline__entryMeta {
	opacity: .7;
}

/**
* taskMemberLoad.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

/* dense data surface: --pad-dense/--gap-dense/--radius-dense per the token contract's §Dense exception */

.taskMemberLoad__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-dense);
}

.taskMemberLoad__item {
	padding: var(--pad-cell) 0;
}

/**
* taskTeamMembers.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version
*/

.taskTeamMembers__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
}

.taskTeamMembers__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.taskTeamMembers__heading {
	text-align: left;
}

.taskTeamMembers__editButton {
	flex: 0 0 auto;
}

.taskTeamMembers__summary {
	display: grid;
	grid-auto-flow: column;
	grid-auto-columns: minmax(0, 1fr);
	border-top: var(--border-shorthand);
	border-bottom: var(--border-shorthand);
}

.taskTeamMembers__summaryCell {
	display: grid;
	align-content: center;
	gap: var(--gap-hairline);
	min-width: 0;
	padding: var(--pad-dense) var(--pad-row);
}

.taskTeamMembers__summaryCell:first-child {
	padding-left: 0;
}

.taskTeamMembers__summaryCell:last-child {
	padding-right: 0;
}

.taskTeamMembers__summaryCell + .taskTeamMembers__summaryCell {
	border-left: var(--border-shorthand);
}

.taskTeamMembers__summary > .skeletonCard {
	border-radius: 0;
	box-shadow: none;
}

.taskTeamMembers__summaryLabel {
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	color: var(--text-secondary);
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.taskTeamMembers__summaryValue {
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
	line-height: var(--line-height-tight);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.taskTeamMembers__summaryValue-live {
	color: var(--text-success);
}

.taskTeamMembers__loggedTimer {
	margin: 0;
	font: inherit;
	color: inherit;
}

.taskTeamMembers__skeletonRows {
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

.taskTeamMembers__empty {
	height: 100%;
}

/**
* taskTeamRoster.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version — presence sections with label-rung headings, the success dot on the
*   Working-now heading, and the closed Former disclosure under a hairline (#2263); every label sits on the sheet's
*   one left rule with the heading and the strip (the scroll gutter is reserved on the right only; the Former marker trails its label)
*/

.taskTeamRoster__view {
	min-height: 0;
	scrollbar-gutter: stable;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.taskTeamRoster__section {
	display: grid;
	gap: var(--gap-dense);
}

.taskTeamRoster__sectionHeading {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

.taskTeamRoster__sectionLabel {
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.taskTeamRoster__sectionLabel-live {
	color: var(--text-success);
}

.taskTeamRoster__liveDot {
	flex: 0 0 auto;
	width: .6rem;
	height: .6rem;
	border-radius: var(--radius-circle);
	background: var(--text-success);
}

.taskTeamRoster__former {
	border-top: var(--border-shorthand);
	padding-top: var(--gap-dense);
}

.taskTeamRoster__formerSummary {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	min-height: var(--touch-target-minimum);
	border-radius: var(--radius-dense);
	color: var(--text-secondary);
}

.taskTeamRoster__formerSummary:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: var(--gap-hairline);
}

@media (hover: hover) {
	.taskTeamRoster__formerSummary:hover {
		background-color: var(--surface-hover);
	}
}

.taskTeamRoster__formerMarker {
	transition: transform var(--motion-fast) var(--ease-standard);
}

.taskTeamRoster__former[open] .taskTeamRoster__formerMarker {
	transform: rotate(90deg);
}

.taskTeamRoster__formerRows {
	display: grid;
	gap: var(--gap-dense);
	padding-top: var(--gap-dense);
}

/**
* taskAccuracySummary.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version — 5th stat card (tracked-vs-estimate accuracy %)
*/

.taskAccuracySummary__view {
	display: grid;
	row-gap: var(--gap-stack);
	grid-template-rows: auto 1fr;
}

/* Permission self-hide: removed from the flex row so siblings stretch to fill. */
.taskAccuracySummary__view-hidden {
	display: none;
}

.taskAccuracySummary__label {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-dense);
}

.taskAccuracySummary__accuracyValue {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-dense);
	color: var(--text-success);
	text-align: right;
}

.taskAccuracySummary__subLabel {
	opacity: .7;
	text-align: right;
}

/**
* taskDescription.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version — Details left-column description card
*/

.taskDescription__view {
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-inline);
	padding: var(--pad-card);
}

.taskDescription__heading {
	text-align: left;
}

.taskDescription__text {
	color: var(--text-secondary);
}

/**
* taskActivity.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-30 Initial Version — full task audit feed (Activity tab)
*/

.taskActivity__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
}

.taskActivity__header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.taskActivity__heading {
	text-align: left;
}

.taskActivity__count {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.taskActivity__filter {
	justify-self: start;
	max-width: 100%;
}

.taskActivity__ledger {
	min-height: 0;
}

.taskActivity__skeletonRows {
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
}

.taskActivity__empty {
	grid-row: span 2;
	height: 100%;
}

/**
* taskActivityLedger.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2273): sticky ruled day headers, the clock-time column, the
*   avatar or ringed kind icon, the name-led sentence with its status chip, the success-ink live row; the row
*   zeroes the library's `.listItem` margin so the rules align with the day rule
*/

.taskActivityLedger__view {
	display: grid;
	align-content: start;
	gap: var(--gap-dense);
	min-height: 0;
}

.taskActivityLedger__day {
	display: grid;
	gap: var(--gap-hairline);
}

.taskActivityLedger__dayHeader {
	position: sticky;
	top: 0;
	z-index: 1;
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: var(--pad-cell) 0;
	background-color: var(--surface-card);
	border-bottom: var(--border-width) solid var(--border-strong);
}

.taskActivityLedger__date {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	line-height: var(--line-height-tight);
}

.taskActivityLedger__date-today {
	color: var(--text-brand);
}

.taskActivityLedger__dayCount {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	line-height: var(--line-height-tight);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

.taskActivityLedger__rows {
	display: grid;
	margin: 0;
	padding: 0;
	list-style: none;
}

.taskActivityLedger__row {
	display: grid;
	grid-template-columns: max-content auto minmax(0, 1fr);
	align-items: center;
	gap: var(--gap-inline);
	margin: 0;
	padding: var(--pad-dense) 0;
	border-bottom: var(--border-width) solid var(--border-default);
}

.taskActivityLedger__row:last-child {
	border-bottom: none;
}

.taskActivityLedger__time {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	text-align: right;
	white-space: nowrap;
}

.taskActivityLedger__kindIcon {
	display: grid;
	place-items: center;
	width: 2.5rem;
	height: 2.5rem;
	border: var(--border-shorthand);
	border-radius: var(--radius-circle);
	color: var(--text-secondary);
}

.taskActivityLedger__body {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.taskActivityLedger__sentence {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	column-gap: var(--gap-tight);
	row-gap: var(--gap-hairline);
	color: var(--text-primary);
	font-size: var(--font-size-body);
	line-height: var(--line-height-tight);
}

.taskActivityLedger__actor {
	font-weight: var(--font-weight-medium);
}

.taskActivityLedger__status {
	font-size: var(--font-size-label);
}

.taskActivityLedger__detail {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
}

.taskActivityLedger__live {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	color: var(--text-success);
	font-variant-numeric: tabular-nums;
}

.taskActivityLedger__liveDot {
	width: .6rem;
	height: .6rem;
	border-radius: var(--radius-circle);
	background: var(--text-success);
}

.taskActivityLedger__timer {
	margin: 0;
	font: inherit;
	color: inherit;
}

.taskActivityLedger__notice {
	padding: var(--pad-row) 0;
}

/**
* taskTime.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-24 Initial Version — TaskPanel "Time" section: by-member interval list + bulk add
*/
.taskTime__view {
	width: 100%;
	height: 100%;
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
}

.taskTime__filterBar {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-dense) var(--gap-stack);
}

.taskTime__filters,
.taskTime__controls,
.taskTime__dateFilter,
.taskTime__timeFilter,
.taskTime__dateRange,
.taskTime__timeRange {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-dense);
	min-width: 0;
}

.taskTime__controls {
	margin-left: auto;
}

.taskTime__logButton {
	flex: 0 0 auto;
}

.taskTime__memberDropdown {
	min-width: 14rem;
}

.taskTime__dateFilter .checkBoxWithLabel__view,
.taskTime__timeFilter .checkBoxWithLabel__view {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	min-height: 2.8rem;
	padding: 0 var(--pad-dense) 0 var(--pad-cell);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-pill);
	color: var(--text-secondary);
	cursor: pointer;
	white-space: nowrap;
	transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.taskTime__dateFilter .checkBoxWithLabel__view:hover,
.taskTime__timeFilter .checkBoxWithLabel__view:hover {
	background-color: var(--surface-hover);
	color: var(--text-primary);
}

.taskTime__filterGroup-open .checkBoxWithLabel__view {
	background-color: var(--surface-selected);
	border-color: var(--border-strong);
	color: var(--text-primary);
}

.taskTime__rangeLabel {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
}

.taskTime__rangeValue {
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
}

.taskTime__intervalScrollArea {
	min-height: 0;
	padding: 0;
	align-items: stretch;
}

.taskTime__intervalScrollArea .endlessBucket__list {
	gap: 0;
}

.taskTime__intervalScrollArea .emptyState {
	padding-block: var(--pad-shell);
}

.taskTime__group {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto 5.6rem;
	align-items: baseline;
	column-gap: var(--gap-inline);
	padding: var(--pad-row) var(--pad-dense) var(--pad-cell);
	border-bottom: var(--border-width) solid var(--border-strong);
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
}

.taskTime__groupHeading {
	display: flex;
	align-items: baseline;
	gap: var(--gap-dense);
	min-width: 0;
}

.endlessBucket__list > [data-key]:first-child .taskTime__group {
	padding-block-start: var(--pad-cell);
}

.taskTime__groupLabel {
	font-weight: var(--font-weight-medium);
}

.taskTime__groupTotal {
	grid-column: 2;
	justify-self: end;
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
}

.taskTime__group-running .taskTime__groupLabel {
	color: var(--text-success);
}

.taskTime__groupPulse {
	align-self: center;
	width: .8rem;
	height: .8rem;
	border-radius: var(--radius-pill);
	background-color: var(--status-success);
	box-shadow: 0 0 0 .3rem color-mix(in srgb, var(--status-success) 22%, transparent); /* intentional literal: a flat status halo ring around the pulse dot, not a depth cue — no --elevation-* rung is a ring */
	animation: onlineIndicatorBreathe calc(var(--motion-slow) * 4) var(--ease-standard) infinite;
}

.taskTime__emptyFilters {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--gap-inline);
	padding-block: var(--pad-shell);
}

.taskTime__bulkAdd {
	width: 100%;
	height: 100%;
	padding: var(--pad-sheet);
}

.overlayPanel:has(.taskTime__bulkAdd) {
	width: min(48rem, 100%);
	min-width: 0;
	background: var(--surface-card);
	border-inline-end: var(--border-width) solid var(--border-default);
	box-shadow: var(--elevation-overlay);
	top: 0;
	left: 0;
	height: 100%;
}

:root[data-viewport="phone"] .overlayPanel:has(.taskTime__bulkAdd) {
	width: 100%;
	border-inline-end: none;
}

.overlayPanel:has(.taskTime__bulkAdd) .overlayPanel__closeButton {
	display: none;
}

:root[data-viewport="phone"] .taskTime__view {
	gap: var(--gap-inline);
}

:root[data-viewport="phone"] .taskTime__filterBar {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas: 'taskTime_filters taskTime_filters' 'taskTime_controls taskTime_log';
	align-items: center;
}

:root[data-viewport="phone"] .taskTime__logButtonText {
	display: none;
}

:root[data-viewport="phone"] .taskTime__logButton {
	grid-area: taskTime_log;
	justify-self: end;
}

:root[data-viewport="phone"] .taskTime__filters {
	grid-area: taskTime_filters;
}

:root[data-viewport="phone"] .taskTime__controls {
	grid-area: taskTime_controls;
	margin-left: 0;
}

/**
* timeLedgerHead.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2274)
*/

.timeLedgerHead__view {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--gap-section);
	align-items: start;
	padding-block-end: var(--pad-card);
	border-bottom: var(--border-width) solid var(--border-default);
}

.timeLedgerHead__figure {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	min-width: 0;
}

.timeLedgerHead__facts {
	margin: 0;
	color: var(--text-secondary);
}

.timeLedgerHead__totalRow {
	display: flex;
	align-items: baseline;
	gap: var(--gap-inline);
	flex-wrap: wrap;
}

.timeLedgerHead__total {
	font-size: var(--font-size-stat);
	font-weight: var(--font-weight-heading);
	line-height: var(--line-height-tight);
	letter-spacing: var(--letter-spacing-display);
	font-variant-numeric: tabular-nums;
	color: var(--text-primary);
}

.timeLedgerHead__estimate {
	color: var(--text-secondary);
	font-size: var(--font-size-body);
}

.timeLedgerHead__estimate-over {
	color: var(--text-danger);
}

.timeLedgerHead__track {
	height: .4rem;
	border-radius: var(--radius-dense);
}

.timeLedgerHead__track-over .progressBar {
	background-color: var(--status-danger);
}

.timeLedgerHead__shares {
	display: flex;
	flex-direction: column;
	gap: var(--gap-dense);
	min-width: 0;
}

.timeLedgerHead__shareBar {
	display: flex;
	gap: var(--gap-hairline);
	height: 1rem;
	border-radius: var(--radius-dense);
	overflow: hidden;
}

.timeLedgerHead__segment-series1,
.timeLedgerHead__legendRow-series1 .timeLedgerHead__legendSwatch {
	background-color: var(--chart-series-1);
}

.timeLedgerHead__segment-series2,
.timeLedgerHead__legendRow-series2 .timeLedgerHead__legendSwatch {
	background-color: var(--chart-series-2);
}

.timeLedgerHead__segment-series3,
.timeLedgerHead__legendRow-series3 .timeLedgerHead__legendSwatch {
	background-color: var(--chart-series-3);
}

.timeLedgerHead__segment-series4,
.timeLedgerHead__legendRow-series4 .timeLedgerHead__legendSwatch {
	background-color: var(--chart-series-4);
}

.timeLedgerHead__segment-series5,
.timeLedgerHead__legendRow-series5 .timeLedgerHead__legendSwatch {
	background-color: var(--chart-series-5);
}

.timeLedgerHead__segment-series6,
.timeLedgerHead__legendRow-series6 .timeLedgerHead__legendSwatch {
	background-color: var(--chart-series-6);
}

.timeLedgerHead__segment {
	flex: 1 1 0;
	min-width: 0;
	transition: opacity var(--motion-fast) var(--ease-standard), flex-basis var(--motion-base) var(--ease-standard);
}

.timeLedgerHead__segment-dimmed {
	opacity: .25;
}

.timeLedgerHead__legend {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
}

.timeLedgerHead__legendRow {
	display: grid;
	grid-template-columns: .8rem minmax(0, 1fr) auto 3.2rem;
	align-items: center;
	gap: var(--gap-dense);
	min-height: 2.8rem;
	padding: 0 var(--pad-cell);
	border-radius: var(--radius-dense);
	transition: background-color var(--motion-fast) var(--ease-standard), opacity var(--motion-fast) var(--ease-standard);
}

.timeLedgerHead__legendRow:hover,
.timeLedgerHead__legendRow:has(.timeLedgerHead__legendMember:focus-visible) {
	background-color: var(--surface-hover);
}

.timeLedgerHead__legendRow-selected {
	background-color: var(--surface-selected);
}

.timeLedgerHead__legendRow-dimmed {
	opacity: .5;
}

.timeLedgerHead__legendSwatch {
	width: .8rem;
	height: .8rem;
	border-radius: var(--radius-dense);
}

.timeLedgerHead__legendMember {
	min-width: 0;
	gap: var(--gap-dense);
}

.timeLedgerHead__legendMember .heading {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.timeLedgerHead__legendHours,
.timeLedgerHead__legendShare {
	font-variant-numeric: tabular-nums;
	font-size: var(--font-size-caption);
	color: var(--text-secondary);
	text-align: end;
}

.timeLedgerHead__legendHours {
	color: var(--text-primary);
}

:root[data-viewport="phone"] .timeLedgerHead__view {
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gap-stack);
}

/**
* entityInformationPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-31 Initial Version
*/

.entityInformationPanel__view {
	display: grid;
	gap: var(--gap-stack);
	align-content: start;
}

:root[data-viewport="phone"] .entityInformationPanel__view {
	padding: var(--pad-sheet);
}

.entityInformationPanel__statusSlider {
	justify-self: end;
}

/**
* entityInfo.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-03 Initial Version
*/

.entityInfo__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-card);
}

.entityInfo__headerRow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.entityInfo__heading,
.entityInfo__fieldHeading,
.entityInfo__contactHeading {
	text-align: left;
}

.entityInfo__fieldContainer {
	display: grid;
	gap: var(--gap-tight);
	padding-top: var(--pad-row);
}

.entityInfo__contactsContainer {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
	gap: var(--gap-section);
	padding-top: var(--pad-row);
}

.entityInfo__contactGroup {
	display: grid;
	gap: var(--gap-dense);
	height: fit-content;
}

/**
* entityDangerZone.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-03 Initial Version
*/

.entityDangerZone__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	border: .1rem solid var(--status-danger);
}

.entityDangerZone__view:empty {
	display: none;
}

.entityDangerZone__header {
	display: grid;
	gap: var(--gap-tight);
}

.entityDangerZone__heading {
	color: var(--text-danger);
}

.entityDangerZone__heading,
.entityDangerZone__warning,
.entityDangerZone__actionTitle,
.entityDangerZone__actionDescription {
	text-align: left;
}

.entityDangerZone__action {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding-top: var(--pad-row);
	border-top: .1rem solid var(--status-danger);
}

.entityDangerZone__actionText {
	display: grid;
	gap: var(--gap-tight);
}

.entityDangerZone__actionButton {
	flex-shrink: 0;
	color: var(--text-danger);
	border-color: var(--status-danger);
}

/**
* deleteEntityView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-03 Initial Version
*/

.deleteEntityView__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-sheet);
}

.deleteEntityView__heading,
.deleteEntityView__warning,
.deleteEntityView__instruction {
	text-align: left;
}

.deleteEntityView__warning {
	color: var(--text-danger);
}

.deleteEntityView__buttonArea {
	display: flex;
	gap: var(--gap-tile);
	justify-content: end;
	padding-top: var(--pad-row);
}

/**
* entitySettingsTile.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-31 Initial Version
*/

.entitySettingsTile__view {
	justify-content: flex-start;
	gap: var(--gap-inline);
}

.entitySettingsTile__view-selected {
	border-color: var(--brand-accent);
}

/**
* cardBrandMark.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.cardBrandMark__view {
	display: flex;
	align-items: center;
}

.cardBrandMark__label {
	color: var(--text-secondary);
	font-weight: var(--font-weight-medium);
	white-space: nowrap;
}

.cardBrandMark__plate {
	display: flex;
	align-items: center;
	justify-content: center;
	/* intentional literal: card-network minimum mark size, px-anchored */
	width: 64px;
	height: 44px;
	flex: 0 0 auto;
	background: var(--surface-brandmark);
	border: .1rem solid var(--border-default);
	border-radius: var(--radius-dense);
}

.cardBrandMark__image {
	/* intentional literal: Amex Blue Box 40px height floor plus its clear space */
	max-width: 56px;
	max-height: 40px;
	object-fit: contain;
}

.cardBrandMark__glyph {
	color: var(--text-secondary);
}

/**
* storageMeter.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.storageMeter__view {
	display: grid;
	gap: var(--gap-tight);
}

.storageMeter__labelRow {
	display: flex;
	justify-content: space-between;
	gap: var(--gap-inline);
	color: var(--text-secondary);
}

.storageMeter__figures {
	font-variant-numeric: tabular-nums;
}

.storageMeter__bar {
	border-radius: var(--radius-pill);
}

.storageMeter__bar-ok .progressBar {
	background: var(--chart-active);
}

.storageMeter__bar-nearing .progressBar {
	background: var(--text-warning);
}

.storageMeter__bar-full .progressBar,
.storageMeter__bar-grace .progressBar,
.storageMeter__bar-readOnly .progressBar {
	background: var(--text-danger);
}

/**
* planStatusCard.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.planStatusCard__view {
	display: grid;
	gap: var(--gap-stack);
}

.planStatusCard__headerRow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.planStatusCard__planName {
	font-size: var(--font-size-heading);
	font-weight: var(--font-weight-heading);
	font-family: var(--font-display);
}

.planStatusCard__priceRow {
	display: flex;
	align-items: baseline;
	gap: var(--gap-inline);
	color: var(--text-secondary);
}

.planStatusCard__price,
.planStatusCard__renewal {
	font-family: var(--font-body);
	font-variant-numeric: tabular-nums;
}

.planStatusCard__pendingChange,
.planStatusCard__introOffer {
	color: var(--text-secondary);
	font-family: var(--font-body);
	font-variant-numeric: tabular-nums;
}

.planStatusCard__intervalRow {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.planStatusCard__annualNote {
	color: var(--text-success);
	font-weight: var(--font-weight-medium);
}

.planStatusCard__planSlider {
	width: 100%;
}

.planStatusCard__planSlider.multiStepSlider__view-text .multiStepSlider__stop {
	max-width: none;
	padding-inline: var(--pad-cell);
}

.planStatusCard__planSlider.multiStepSlider__view-text .multiStepSlider__stopLabel {
	white-space: normal;
	text-align: center;
}

.planStatusCard__statusText {
	color: var(--text-secondary);
	line-height: var(--line-height-relaxed);
}

.planStatusCard__autoRenewRow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	border-top: .1rem solid var(--border-default);
	padding-top: var(--pad-row);
}

.planStatusCard__autoRenewLabel {
	font-weight: var(--font-weight-medium);
}

.planStatusCard__autoRenewControl {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.planStatusCard__autoRenewValue {
	color: var(--text-secondary);
}

.planStatusCard__dunningBanner {
	display: grid;
	gap: var(--gap-inline);
	background: color-mix(in srgb, var(--status-danger) 12%, transparent);
	border: .1rem solid var(--status-danger);
	border-radius: var(--radius-card);
	padding: var(--pad-card);
}

.planStatusCard__dunningActions {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-inline);
}

.planStatusCard__storageMeter {
	border-top: .1rem solid var(--border-default);
	padding-top: var(--pad-row);
}

.planStatusCard__unavailable {
	padding: var(--pad-card);
}

:root[data-viewport="phone"] .planStatusCard__toggle {
	min-height: var(--touch-target-primary);
}

/**
* paymentMethodList.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.paymentMethodList__view {
	display: grid;
	gap: var(--gap-stack);
}

.paymentMethodList__heading {
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
}

.paymentMethodList__explainer,
.paymentMethodList__emptyState,
.paymentMethodList__unavailable {
	color: var(--text-secondary);
	line-height: var(--line-height-relaxed);
}

.paymentMethodList__payoutPrompt {
	color: var(--text-secondary);
	line-height: var(--line-height-relaxed);
	padding: var(--pad-row) var(--pad-card);
	border-radius: var(--radius-dense);
	background: var(--surface-card);
}

.paymentMethodList__rows {
	display: grid;
	gap: var(--gap-dense);
}

.paymentMethodList__addAction {
	justify-self: start;
	color: var(--text-link);
	padding: var(--pad-dense) 0;
}

.paymentMethodRow__view {
	display: grid;
	grid-template-columns: auto 1fr auto auto;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-row) var(--pad-card);
	border-radius: var(--radius-dense);
	background: var(--surface-card);
	box-shadow: var(--elevation-flat);
	line-height: var(--line-height-tight);
}

.paymentMethodList__view-payoutAccount .paymentMethodRow__view {
	grid-template-columns: 1fr auto auto;
}

.paymentMethodRow__view:hover {
	background: var(--surface-hover);
}

.paymentMethodRow__text {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.paymentMethodRow__title,
.paymentMethodRow__meta {
	font-variant-numeric: tabular-nums;
}

.paymentMethodRow__meta {
	color: var(--text-secondary);
}

.paymentMethodRow__badges {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

.paymentMethodRow__actions {
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
}

@media (hover: hover) {
	.paymentMethodRow__actions {
		opacity: 0;
	}

	.paymentMethodRow__view:hover .paymentMethodRow__actions,
	.paymentMethodRow__view:focus-within .paymentMethodRow__actions {
		opacity: 1;
	}
}

.paymentMethodRow__action {
	color: var(--text-link);
}

:root[data-viewport="phone"] .paymentMethodRow__view {
	grid-template-columns: auto 1fr auto;
}

:root[data-viewport="phone"] .paymentMethodRow__actions {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

:root[data-viewport="phone"] .paymentMethodList__addAction {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

/**
* subscribeConfirmView.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.subscribeConfirmView__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-sheet);
	border-radius: var(--radius-sheet);
	max-width: 44rem;
}

.subscribeConfirmView__heading {
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
}

.subscribeConfirmView__cadence {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.subscribeConfirmView__body {
	line-height: var(--line-height-relaxed);
	font-variant-numeric: tabular-nums;
}

.subscribeConfirmView__buttonArea {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

/**
* stripeElementsHost.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-21 Initial Version — mount reservations moved from addPaymentMethodView.css
*/

.stripeElementsHost__view {
	display: grid;
	gap: var(--gap-stack);
}

.stripeElementsHost__paymentMount {
	/* intentional literal: reserves the measured Elements iframe height */
	min-height: 22rem;
}

.stripeElementsHost__addressMount {
	/* intentional literal: reserves the measured Address Element height */
	min-height: 16rem;
}

/**
* addPaymentMethodView.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.addPaymentMethodView__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-sheet);
	border-radius: var(--radius-sheet);
	max-width: 48rem;
}

.addPaymentMethodView__heading {
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
}

.addPaymentMethodView__notice {
	color: var(--text-secondary);
}

.addPaymentMethodView__error {
	color: var(--text-danger);
}

.addPaymentMethodView__processorLine {
	color: var(--text-secondary);
}

.addPaymentMethodView__buttonArea {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

/**
* addPayoutAccountView.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.addPayoutAccountView__view {
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-sheet);
	border-radius: var(--radius-sheet);
	max-width: 44rem;
}

.addPayoutAccountView__heading {
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
}

.addPayoutAccountView__notice,
.addPayoutAccountView__processorLine {
	color: var(--text-secondary);
}

.addPayoutAccountView__error {
	color: var(--text-danger);
}

.addPayoutAccountView__nameField {
	display: grid;
	gap: var(--gap-tight);
}

.addPayoutAccountView__nameLabel {
	color: var(--text-secondary);
}

.addPayoutAccountView__buttonArea {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

/**
* hudFurniture.css — chrome for the HUD render world (decision 0016): the world
* frame with its anchored-piece underlay, the vertical spec rail, mono spec lines,
* the poster ghost glyph, the chamfered HudPanel plate with its slab tab, the beacon.
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* Every color rides a role token and no rule is gated on `[data-theme` — the
* furniture only exists in the DOM when a view's render() takes the HUD arm, so
* the JS dispatch is the theme gate (themeStructureScope stays at cap 0). The
* poster face reads `--font-poster`, a theme-voice token only the HUD theme
* declares; the fallback is the display face.
*
* Geometry is pinned, never stretched: underlay corners, notch, step, chamfer,
* traces and barcode are rem-sized pieces (an SVG viewBox unit is .1rem, so a
* 1-unit stroke is the hairline); only the straight runs stretch. The plate's 45°
* chamfers are one clip-path polygon on two stacked layers (edge ink, inset fill).
* The rail sizes the frame: `getHudRail` stamps a `hudFurniture__rail-span<N>`
* bucket (text length rounded up to a multiple of 4, 12..56) and the frame's
* `:where(:has())` rule derives its min-height from it — `--hudFurniture-railChar`
* is the .93em-per-character bound (Martian Mono advances .6875em at the registered
* 100% stretch, .75em at its default instance; the rail tracks .18em) and
* `--hudFurniture-railInsets` the 3rem top/bottom insets plus .4rem slack, so a
* frame at min-height never sits on the hide threshold: the rail is a size
* container in the rail's own font, and the same `em` bound hides text a shorter
* box would truncate (the text re-inherits the font because `.span`'s size class
* would reset it). `:where()` zeroes the frame rule's specificity so a view's own
* `min-height: 0` and the phone-band frame rule win. Only chrome the five views place ships here.
*
* @version 2026-September-02 Initial Version — ported from the styleBoard probe's
*   HUD section (cyber-signal graduation)
*/

/* ───────── world frame ───────── */

.hudFurniture__frame {
	--hudFurniture-railChar: calc(.93 * var(--font-size-caption));
	--hudFurniture-railInsets: 6.4rem;
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: none;
	box-shadow: var(--elevation-raised);
	padding: var(--pad-shell);
	padding-left: 4rem; /* intentional literal: the spec-rail gutter the underlay frame draws around */
	padding-bottom: calc(var(--pad-shell) + var(--pad-cell));
	gap: var(--gap-tile);
}

.hudFurniture__frame > * {
	position: relative;
	z-index: 1;
}

.hudFurniture__frame:where(:has(> .hudFurniture__rail-span12)) { min-height: calc(var(--hudFurniture-railInsets) + 12 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span16)) { min-height: calc(var(--hudFurniture-railInsets) + 16 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span20)) { min-height: calc(var(--hudFurniture-railInsets) + 20 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span24)) { min-height: calc(var(--hudFurniture-railInsets) + 24 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span28)) { min-height: calc(var(--hudFurniture-railInsets) + 28 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span32)) { min-height: calc(var(--hudFurniture-railInsets) + 32 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span36)) { min-height: calc(var(--hudFurniture-railInsets) + 36 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span40)) { min-height: calc(var(--hudFurniture-railInsets) + 40 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span44)) { min-height: calc(var(--hudFurniture-railInsets) + 44 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span48)) { min-height: calc(var(--hudFurniture-railInsets) + 48 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span52)) { min-height: calc(var(--hudFurniture-railInsets) + 52 * var(--hudFurniture-railChar)); }
.hudFurniture__frame:where(:has(> .hudFurniture__rail-span56)) { min-height: calc(var(--hudFurniture-railInsets) + 56 * var(--hudFurniture-railChar)); }

/* ───────── underlay: anchored pieces + stretching runs ───────── */

.hudFurniture__underlay {
	position: absolute;
	inset: 0;
	pointer-events: none;
	z-index: 0;
}

.hudFurniture__underlayRun {
	position: absolute;
	background-color: var(--text-primary);
	opacity: .55;
}

.hudFurniture__underlayRun-topLead {
	top: .8rem;
	left: 2.4rem;
	width: 5.6rem;
	height: var(--border-width);
}

.hudFurniture__underlayRun-top {
	top: .8rem;
	left: 23.2rem;
	right: 2.4rem;
	height: var(--border-width);
}

.hudFurniture__underlayRun-right {
	top: 2.4rem;
	right: .8rem;
	bottom: 3rem;
	width: var(--border-width);
}

.hudFurniture__underlayRun-bottomLead {
	bottom: .8rem;
	left: 2.4rem;
	width: 27.6rem;
	height: var(--border-width);
}

.hudFurniture__underlayRun-bottom {
	bottom: 1.4rem;
	left: 30.6rem;
	right: 2.4rem;
	height: var(--border-width);
}

.hudFurniture__underlayCorner {
	position: absolute;
	width: 1.6rem;
	height: 1.6rem;
	border: 0 solid var(--text-primary);
	opacity: .55;
}

.hudFurniture__underlayCorner-topLeft {
	top: .8rem;
	left: .8rem;
	border-top-width: var(--border-width);
	border-left-width: var(--border-width);
}

.hudFurniture__underlayCorner-topRight {
	top: .8rem;
	right: .8rem;
	border-top-width: var(--border-width);
	border-right-width: var(--border-width);
}

.hudFurniture__underlayCorner-bottomLeft {
	bottom: .8rem;
	left: .8rem;
	height: 2.4rem;
	border-bottom-width: var(--border-width);
	border-left-width: var(--border-width);
}

.hudFurniture__underlayPiece {
	position: absolute;
	overflow: visible;
	fill: var(--text-primary);
	fill-opacity: .4;
	stroke: var(--text-primary);
	stroke-opacity: .55;
	stroke-width: 1; /* intentional literal: one viewBox unit is .1rem — the hairline */
}

.hudFurniture__underlayPiece-notch {
	top: .2rem;
	left: 8rem;
	width: 15.2rem;
	height: .65rem;
}

.hudFurniture__underlayPiece-step {
	bottom: .8rem;
	left: 30rem;
	width: .6rem;
	height: .7rem;
}

.hudFurniture__underlayPiece-chamfer {
	right: .8rem;
	bottom: 1.4rem;
	width: 1.6rem;
	height: 1.6rem;
}

.hudFurniture__underlayPiece-traceRight,
.hudFurniture__underlayPiece-traceLeft {
	fill: var(--brand-accent);
	fill-opacity: 1;
	stroke: var(--brand-accent);
	stroke-opacity: .8;
}

.hudFurniture__underlayPiece-traceRight {
	top: 5rem;
	right: .8rem;
	width: 3.2rem;
	height: 7.8rem;
}

.hudFurniture__underlayPiece-traceLeft {
	left: 2.6rem;
	bottom: .8rem;
	width: 1.2rem;
	height: 9rem;
}

.hudFurniture__underlayPiece-barcode {
	left: 1.2rem;
	bottom: 1.2rem;
	width: 1.8rem;
	height: 1.6rem;
}

.hudFurniture__ghost {
	position: absolute;
	right: 2rem;
	bottom: -1rem;
	z-index: 0;
	font-family: var(--font-poster, var(--font-display));
	font-size: 9rem; /* intentional literal: poster ghost glyph, deliberately past the type ladder */
	line-height: 1;
	opacity: .05;
	color: var(--text-primary);
	pointer-events: none;
	user-select: none;
	white-space: nowrap;
}

/* ───────── spec rail ───────── */

.hudFurniture__rail {
	position: absolute;
	left: 1rem;
	top: 3rem;
	bottom: 3rem;
	width: 1.6rem;
	z-index: 1;
	pointer-events: none;
	container: hudRail / size;
	font-family: var(--font-mono);
	font-size: var(--font-size-caption);
	letter-spacing: .18em;
	color: var(--text-secondary);
}

.hudFurniture__railText {
	writing-mode: vertical-rl;
	transform: rotate(180deg);
	display: block;
	height: 100%;
	font-family: inherit;
	font-size: inherit;
	letter-spacing: inherit;
	color: inherit;
	line-height: var(--line-height-tight);
	white-space: nowrap;
	overflow: hidden;
}

@container hudRail (max-height: 11.16em) { .hudFurniture__rail-span12 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 14.88em) { .hudFurniture__rail-span16 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 18.6em) { .hudFurniture__rail-span20 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 22.32em) { .hudFurniture__rail-span24 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 26.04em) { .hudFurniture__rail-span28 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 29.76em) { .hudFurniture__rail-span32 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 33.48em) { .hudFurniture__rail-span36 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 37.2em) { .hudFurniture__rail-span40 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 40.92em) { .hudFurniture__rail-span44 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 44.64em) { .hudFurniture__rail-span48 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 48.36em) { .hudFurniture__rail-span52 > .hudFurniture__railText { visibility: hidden; } }
@container hudRail (max-height: 52.08em) { .hudFurniture__rail-span56 > .hudFurniture__railText { visibility: hidden; } }

/* ───────── masthead ───────── */

.hudFurniture__header {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--gap-tile);
}

.hudFurniture__masthead {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
}

.hudFurniture__title {
	font-family: var(--font-display);
	font-size: var(--font-size-display);
	text-transform: uppercase;
	text-align: start;
	letter-spacing: .03em;
	line-height: .95;
}

.hudFurniture__spec {
	font-family: var(--font-mono);
	font-size: var(--font-size-caption);
	letter-spacing: .14em;
	color: var(--text-secondary);
}

/* ───────── HudPanel plate ───────── */

.hudPanel__view {
	position: relative;
	padding: var(--pad-card);
	padding-top: 0;
}

.hudPanel__plate {
	position: absolute;
	inset: 0;
	z-index: 0;
	pointer-events: none;
	filter: drop-shadow(.3rem .3rem 0 rgba(0, 0, 0, 0.12)); /* intentional literal: the plate's silhouette shadow — elevation tokens are box-shadow lists, unusable inside drop-shadow() */
}

.hudPanel__plate::before,
.hudPanel__plate::after {
	content: '';
	position: absolute;
	inset: 0;
	clip-path: polygon(0 0, calc(100% - 1.6rem) 0, 100% 1.6rem, 100% 100%, 1.6rem 100%, 0 calc(100% - 1.6rem));
}

.hudPanel__plate::before {
	background-color: var(--border-strong);
}

.hudPanel__plate::after {
	inset: var(--border-width);
	background-color: var(--surface-card);
}

.hudPanel__plateBracket {
	position: absolute;
	top: 0;
	left: 0;
	width: 22rem;
	max-width: 100%;
	height: 6rem;
	border-top: calc(2 * var(--border-width)) solid var(--brand-accent);
	border-left: calc(2 * var(--border-width)) solid var(--brand-accent);
}

.hudPanel__header {
	position: relative;
	z-index: 1;
	display: inline-flex;
	align-items: center;
	gap: var(--gap-inline);
	background: var(--text-primary);
	color: var(--surface-card);
	padding: var(--pad-cell) var(--pad-button);
	padding-right: 2.2rem; /* intentional literal: clearance for the tab's slanted clip edge */
	margin-left: calc(-1 * var(--pad-card));
	clip-path: polygon(0 0, 100% 0, calc(100% - 1.2rem) 100%, 0 100%);
	max-width: 100%;
}

.hudPanel__index {
	font-family: var(--font-mono);
	font-size: var(--font-size-caption);
	letter-spacing: .12em;
	color: var(--text-accent);
}

.hudPanel__title {
	font-family: var(--font-display);
	font-size: var(--font-size-subheading);
	text-transform: uppercase;
	letter-spacing: .05em;
	color: inherit;
}

.hudPanel__barcode {
	width: 3.2rem;
	height: .8rem;
	color: inherit;
	opacity: .8;
	flex-shrink: 0;
}

.hudPanel__body {
	position: relative;
	z-index: 1;
	padding-top: var(--pad-cell);
	background-image: var(--surface-card-texture, none);
	background-repeat: var(--surface-card-texture-repeat, repeat);
	background-size: var(--surface-card-texture-size, auto);
}

.hudPanel__hatch {
	position: absolute;
	top: 2rem;
	right: var(--pad-card);
	width: 2.6rem;
	height: .8rem;
	z-index: 1;
	opacity: .4;
	background-image: repeating-linear-gradient(-45deg, var(--text-primary) 0, var(--text-primary) .2rem, rgba(0, 0, 0, 0) .2rem, rgba(0, 0, 0, 0) .5rem);
}

/* ───────── footer, beacon ───────── */

.hudFurniture__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: var(--gap-tile);
	border-top: var(--border-width) solid var(--border-default);
	padding-top: var(--pad-cell);
}

.hudFurniture__beacon {
	width: .5rem;
	height: .5rem;
	background: var(--brand-accent);
	animation: hudFurnitureBeacon 2.4s steps(2, jump-none) infinite; /* intentional literal: HUD beacon cadence, slower than any --motion-* rung */
}

@keyframes hudFurnitureBeacon {
	0%, 100% { opacity: 1; }
	50% { opacity: .15; }
}

@media (prefers-reduced-motion: reduce) {
	.hudFurniture__beacon { animation: none; }
}

/* ───────── phone band ───────── */

:root[data-viewport="phone"] .hudFurniture__frame {
	padding-left: var(--pad-shell);
	min-height: 0;
}

:root[data-viewport="phone"] .hudFurniture__rail,
:root[data-viewport="phone"] .hudFurniture__ghost,
:root[data-viewport="phone"] .hudFurniture__underlayPiece-traceLeft,
:root[data-viewport="phone"] .hudFurniture__underlayPiece-barcode {
	display: none;
}

/**
* application.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-May-25 Initial Version
*/

.application__view {
	height: 100dvh;
	width: 100dvw;
	display: grid;
	grid-template-areas:
		'application_sideDock application_header application_header'
		'application_sideDock application_navigationRail application_mainPanel';
	grid-template-rows: auto minmax(0, 1fr);
	grid-template-columns: auto auto minmax(0, 1fr);
	position: relative;
	background-color: var(--surface-page);
	background-image: var(--surface-page-backdrop, none);
	background-repeat: var(--surface-page-backdrop-repeat, no-repeat);
	background-size: var(--surface-page-backdrop-size, cover);
	min-height: 0;
	transition: all var(--transition-base), height 0s, width 0s;
}

:root[data-viewport='phone'] .application__view {
	padding-bottom: var(--nav-rail-peek-height);
	grid-template-rows: auto minmax(0, 1fr);
	grid-template-columns: 1fr;
	grid-template-areas:
		'application_header'
		'application_mainPanel';
}

.application__skipLink {
	position: absolute;
	top: var(--pad-dense);
	left: var(--pad-dense);
	z-index: 1000;
	padding: var(--pad-card);
	border-radius: var(--radius-button);
	background: var(--surface-raised);
	box-shadow: var(--elevation-overlay);
	transform: translateY(-300%);
}

.application__skipLink:focus,
.application__skipLink:focus-visible {
	transform: translateY(0);
}

.application__sideDock {
	grid-area: application_sideDock;
	min-height: 0;
}

:root[data-viewport='phone'] .application__sideDock {
	display: none;
}

.application__mainHeader {
	grid-area: application_header;
}

.application__navigationRail {
	grid-area: application_navigationRail;
	margin: calc(var(--shell-tab-row-height) + var(--pad-page)) 5rem auto .5rem; /* intentional literal: positional (`auto`) anchor margin and the right/left shell insets, not spacing rhythm */
}

.application__mainPanel {
	grid-area: application_mainPanel;
}

/* The desktop gutter measures 41.5px top, 41.5px right and 4.2px left at 390px —
   45.6px of a 390px viewport. Role tokens bring it to 19.9 / 3.3 / 3.3px; the
   `auto` bottom is the positional anchor and survives. */
:root[data-viewport="phone"] .application__navigationRail {
	margin: var(--gap-section) var(--gap-tight) auto var(--gap-tight);
}

/**
* viewManager.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-May-31 Initial Version
*/

.viewManager__view {
	height: 100%;
}

.viewManager__mainPanel {
	width: 100%;
	height: 100%;
	overflow: hidden;
	padding-bottom: var(--gap-stack);
}

:root[data-viewport='phone'] .viewManager__mainPanel {
	padding-bottom: 0;
}

/**
* displayOverlay.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-October-24 Initial Version
*/

.displayOverlay__view {}

/* #region native <dialog> UA-chrome reset */

:where(.overlayPanel, .mainView__floatingPanel__background) {
	border: 0;
	padding: 0;
	margin: 0;
	max-width: none;
	max-height: none;
	overflow: visible;
	background: transparent;
	color: inherit;
}

:where(.overlayPanel, .mainView__floatingPanel__background)::backdrop {
	background: transparent;
}

/* #endregion */

.overlayPanel {
	height: 100%;
	width: 100%;
	position: absolute;
	background: var(--surface-page);
	z-index: 2;
	-webkit-backdrop-filter: var(--surface-blur);
	backdrop-filter: var(--surface-blur);
	/* Swipe-to-dismiss (#1641): let the browser keep vertical scrolling, but
	   hand horizontal pointer sequences to the panel's Pointer Events handlers
	   instead of cancelling them for a (nonexistent) horizontal scroll. */
	touch-action: pan-y;
	/* A 110vh slide is the largest surface in the app, so it gets the slow rung
	   and a decelerating curve rather than the global's symmetric one. `all` is
	   deliberate: this is a backdrop-filter surface whose background and shadow
	   must keep cross-fading when the theme changes — a named list would snap
	   them. */
	transition: all var(--motion-slow) var(--ease-enter);
}

/* While a swipe drag is live the panel mirrors the pointer via an inline
   transform each move — any transition would lag it a frame behind the finger. */
.overlayPanel--dragging {
	transition: none;
	user-select: none;
}

.overlayPanel__closeButton {
	position: absolute;
	top: 2rem;
	left: 1rem;
	transform: rotate(180deg);
	fill: var(--text-accent);
	z-index: 1;
}

:root[data-viewport="phone"] .icon__view:where(button):has(> .overlayPanel__closeButton) {
	position: absolute;
	top: 0.6rem;
	left: 0;
	z-index: 1;
	min-width: var(--touch-target-primary);
	min-height: var(--touch-target-primary);
	align-items: center;
	justify-content: center;
}

:root[data-viewport="phone"] .icon__view:where(button):has(> .overlayPanel__closeButton) .overlayPanel__closeButton {
	position: static;
}

.floatingPanel__background {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 2;
	width: 100dvw;
	height: 100dvh;
	transition: all var(--transition-base), height 0s, width 0s;
}

.floatingPanel {
	position: absolute;
	/* Same rationale as .overlayPanel above: slow rung + decelerating curve for a
	   full-surface entrance, `all` retained so themed paint still cross-fades. */
	transition: all var(--motion-slow) var(--ease-enter), height 0s, width 0s;
}

/* Horizontally center the contained panel within the full-width backdrop.
   Added by DisplayDialog only (overlays/side-panels keep edge alignment). */
.floatingPanel-centered {
	display: flex;
	justify-content: center;
}

/* Transitions */

/* Fade In — carries the same character as the .motion-enter treatment in
   utilities.css (opacity + a small rise), expressed as a class toggle because it
   rides the transition above rather than a keyframe. Safe from transform
   collisions: the fade variant is mutually exclusive with the four slide
   variants below (see TRANSITIONS in constants.js).
   The settled state is `transform: none`, NOT `translateY(0)` — any transform
   other than `none` makes this wrapper the containing block for its
   position: fixed descendants, and .floatingExpandablePanel__view is fixed
   precisely so its position-try-fallbacks resolve against the viewport. */
.floatingPanel-fadeOut {
	opacity: 0;
	transform: translateY(var(--motion-enter-distance));
}

.floatingPanel-fadeIn {
	opacity: 1;
	transform: none;
}

/* appear from top */

.floatingPanel-collapsed__top {
	top: 0;
	width: 100%;
	transform: translateY(-110vh);
}

.floatingPanel-expanded__top {
	transform: translateY(5rem);
}

.overlayPanel.floatingPanel-expanded__top {
	transform: none;
}

/* Appear form Right */

.floatingPanel-collapsed__right {
	right: 0;
	top: 0;
	transform: translateX(110vw);
	height: 100dvh;
}

.mainView__floatingPanel__background {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 900;
	width: 100dvw;
	height: 100dvh;
	transition: all var(--transition-base), height 0s, width 0s;
}

.floatingPanel-expanded__right {
	transform: translateX(0);
}

/* Appear from Bottom */

.floatingPanel-collapsed__bottom {
	transform: translateY(100%);
}

.floatingPanel-expanded__bottom {
	transform: translateY(0);
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__bottom, .floatingPanel-expanded__bottom, .floatingPanel-peeked__bottom, .floatingPanel-fullscreen__bottom) {
	position: fixed;
	top: auto;
	bottom: 0;
	left: 0;
	right: 0;
	height: var(--overlay-height, auto);
	max-height: 70dvh;
	contain: layout paint;
	border-radius: var(--radius-sheet) var(--radius-sheet) 0 0;
	overflow: hidden;
}

:root[data-viewport="phone"] .floatingPanel-peeked__bottom {
	transform: translateY(calc(100% - var(--overlay-peek-height, 0rem)));
}

/* Fullscreen sheet state (#1927): drops the 70dvh cap and fills the viewport.
   Reached via `onDragFullscreen: () => 'fullscreen'` on an expanded up-swipe past
   threshold, or via `.fullscreen()` on the returned handle. */
:root[data-viewport="phone"] .overlayPanel.floatingPanel-fullscreen__bottom {
	position: fixed;
	top: 0;
	bottom: 0;
	left: 0;
	right: 0;
	height: 100dvh;
	max-height: 100dvh;
	transform: translateY(0);
	contain: layout paint;
	border-radius: 0;
	overflow: hidden;
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__top, .floatingPanel-expanded__top) {
	border-radius: 0 0 var(--radius-sheet) var(--radius-sheet);
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__left, .floatingPanel-expanded__left, .floatingPanel-collapsed__left-full, .floatingPanel-expanded__left-full) {
	border-radius: 0 var(--radius-sheet) var(--radius-sheet) 0;
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__right, .floatingPanel-expanded__right) {
	border-radius: var(--radius-sheet) 0 0 var(--radius-sheet);
}

:root[data-viewport="phone"] .overlayPanel__handle {
	position: absolute;
	touch-action: none;
	z-index: 1;
}

:root[data-viewport="phone"] .overlayPanel__handle::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 50%;
	background: var(--border-strong);
	border-radius: var(--radius-pill);
	pointer-events: none;
}

/* Bottom handle: horizontal hit zone at the top edge, horizontal bar inside. */
:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__bottom, .floatingPanel-expanded__bottom, .floatingPanel-peeked__bottom, .floatingPanel-fullscreen__bottom) .overlayPanel__handle {
	top: -0.5rem;
	left: 50%;
	transform: translateX(-50%);
	width: 10rem;
	height: var(--touch-target-minimum);
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__bottom, .floatingPanel-expanded__bottom, .floatingPanel-peeked__bottom, .floatingPanel-fullscreen__bottom) .overlayPanel__handle::before {
	width: 3.6rem;
	height: .4rem;
	transform: translate(-50%, -50%);
}

/* Top handle: horizontal hit zone at the bottom edge. */
:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__top, .floatingPanel-expanded__top) .overlayPanel__handle {
	bottom: -0.5rem;
	left: 50%;
	transform: translateX(-50%);
	width: 10rem;
	height: var(--touch-target-minimum);
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__top, .floatingPanel-expanded__top) .overlayPanel__handle::before {
	width: 3.6rem;
	height: .4rem;
	transform: translate(-50%, -50%);
}

/* Left / left-full handle: vertical hit zone INSIDE the right edge (#2000). */
:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__left, .floatingPanel-expanded__left, .floatingPanel-collapsed__left-full, .floatingPanel-expanded__left-full) .overlayPanel__handle {
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	width: var(--touch-target-minimum);
	height: 10rem;
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__left, .floatingPanel-expanded__left, .floatingPanel-collapsed__left-full, .floatingPanel-expanded__left-full) .overlayPanel__handle::before {
	width: .4rem;
	height: 3.6rem;
	transform: translate(-50%, -50%);
}

/* Right handle: vertical hit zone INSIDE the left edge (#2000). */
:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__right, .floatingPanel-expanded__right) .overlayPanel__handle {
	left: 0;
	top: 50%;
	transform: translateY(-50%);
	width: var(--touch-target-minimum);
	height: 10rem;
}

:root[data-viewport="phone"] .overlayPanel:where(.floatingPanel-collapsed__right, .floatingPanel-expanded__right) .overlayPanel__handle::before {
	width: .4rem;
	height: 3.6rem;
	transform: translate(-50%, -50%);
}

/* Appear from left */

.floatingPanel-collapsed__left {
	top: 0;
	left: 0;
	transform: translateX(-110vw);
	height: 100dvh;
}

.floatingPanel-expanded__left {
	transform: translateX(0);
}

.floatingPanel-collapsed__left-full {
	left: 0;
	transform: translateX(-110vw);
}

.floatingPanel-expanded__left-full {
	transform: translateX(0);
	max-width: 100dvw;
}

/**
* sideDock.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-09 Initial Version
*/

.sideDock__view {
	display: grid;
	grid-template-columns: 0fr;
	height: 100%;
	min-height: 0;
	overflow: hidden;
	background-color: var(--surface-raised);
	transition: grid-template-columns var(--transition-base);
}

.sideDock__view-open {
	grid-template-columns: 1fr;
	border-right: var(--border-width) solid var(--border-default);
	box-shadow: var(--elevation-raised);
}

.sideDock__panel {
	display: flex;
	justify-content: flex-end;
	min-width: 0;
	height: 100%;
	overflow: hidden;
	position: relative;
}

.sideDock__panel > :not(.sideDock__closeButtonContainer) {
	flex: 0 0 auto;
	height: 100%;
	overflow-y: auto;
}

.sideDock__closeButtonContainer {
	position: absolute;
	top: var(--pad-card);
	right: var(--pad-card);
	z-index: 1;
}

.sideDock__closeButton {
	fill: var(--text-accent);
}

/**
* mainHeader.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2022-May-25 Initial Version
*/

.mainHeader__view {
	display: flex;
	flex-direction: column;
	width: 100%;
	position: relative;
	z-index: 1;
	background-color: var(--surface-raised);
	border-bottom: var(--border-width) solid var(--border-default);
}

.mainHeader__cover {
	position: relative;
	height: 7rem;
	overflow: hidden;
}

.mainHeader__row {
	display: flex;
	align-items: center;
	gap: var(--gap-section);
	padding: var(--pad-row) var(--pad-shell);
}

.mainHeader__entityArea {
	display: flex;
	align-self: stretch;
	margin-top: calc(-1 * (var(--pad-row) + 4rem)); /* intentional literal: half the 8rem plate — the straddle over the cover, fixed regardless of the controls column's height */
	min-width: 0;
	flex: 1 1 auto;
}

.mainHeader__searchField {
	display: flex;
	align-items: center;
	margin-left: auto;
}

.mainHeader__personalizeButton {
	height: auto;
	width: auto;
	padding: var(--pad-cell);
	border-radius: var(--radius-pill);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.mainHeader__personalizeButton:focus-visible {
	background-color: var(--surface-hover);
}

@media (hover: hover) {
	.mainHeader__personalizeButton:hover {
		background-color: var(--surface-hover);
	}
}

.mainHeader__personalizeIcon {
	fill: var(--text-accent);
}

.mainHeader__instruments {
	position: absolute;
	top: 50%;
	translate: 0 -50%;
	right: var(--pad-shell);
	display: flex;
	align-items: center;
	gap: var(--gap-tight);
	padding: 0 var(--pad-dense);
	border-radius: var(--radius-pill);
	color: var(--text-on-brand);
	background-color: color-mix(in srgb, var(--brand-primary) 88%, transparent);
}

.mainHeader__instruments .onlineIndicator__header,
.mainHeader__instruments .invoiceCartIcon__icon {
	color: var(--text-on-brand);
}

.mainHeader__instruments .icon__badge {
	background: var(--text-on-brand);
	color: var(--text-brand);
}

.mainHeader__view .mainHeader__searchToggle {
	display: none;
}

.mainHeader__cartArea {
	display: flex;
	align-items: center;
}

.mainHeader__invoiceCartIcon {
	margin-left: 0;
}

.mainHeader__connection {
	display: flex;
	align-items: center;
	padding-inline: var(--pad-dense);
}

.mainHeader__searchToggle,
.mainHeader__refreshAppContainer {
	height: auto;
	width: auto;
	padding: var(--pad-cell);
	border-radius: var(--radius-pill);
	color: var(--text-on-brand);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.mainHeader__searchToggle:focus-visible,
.mainHeader__refreshAppContainer:focus-visible {
	background-color: color-mix(in srgb, var(--text-on-brand) 22%, transparent);
}

@media (hover: hover) {

	.mainHeader__searchToggle:hover,
	.mainHeader__refreshAppContainer:hover {
		background-color: color-mix(in srgb, var(--text-on-brand) 22%, transparent);
	}
}

.mainHeader__view .mainHeader__searchToggle[aria-expanded="true"] {
	background-color: color-mix(in srgb, var(--text-on-brand) 32%, transparent);
}

.mainHeader__instrumentIcon {
	height: 1.8rem;
	width: 1.8rem;
	transition: rotate var(--motion-slow) var(--ease-emphasized);
}

.mainHeader__refreshAppContainer:active .mainHeader__instrumentIcon {
	rotate: 180deg;
}

:root[data-viewport="phone"] .mainHeader__cover {
	height: 6.4rem;
}

:root[data-viewport="phone"] .mainHeader__row {
	flex-wrap: wrap;
	gap: var(--gap-dense) var(--gap-inline);
	padding: var(--pad-dense) var(--pad-page);
}

:root[data-viewport="phone"] .mainHeader__entityArea {
	margin-top: calc(-1 * (var(--pad-dense) + 3.2rem)); /* intentional literal: half the 6.4rem phone plate — the straddle over the cover */
}

:root[data-viewport="phone"] .mainHeader__instruments {
	right: var(--pad-page);
	gap: 0;
	padding: 0 var(--pad-cell);
}

:root[data-viewport="phone"] .mainHeader__view .mainHeader__searchToggle {
	display: inline-flex;
}

:root[data-viewport="phone"] .mainHeader__instruments .icon__view {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

:root[data-viewport="phone"] .mainHeader__connection {
	padding-inline: var(--pad-cell);
}

:root[data-viewport="phone"] .mainHeader__personalizeButton {
	min-height: var(--touch-target-primary);
	min-width: var(--touch-target-primary);
}

:root[data-viewport="phone"] .mainHeader__searchField {
	display: none;
	flex: 1 1 100%;
	order: 1;
	opacity: 1;
	translate: 0 0;
	transition: opacity var(--motion-base) var(--ease-enter), translate var(--motion-base) var(--ease-enter), display var(--motion-base) allow-discrete;
}

:root[data-viewport="phone"] .mainHeader__searchField-expanded {
	display: flex;
}

@starting-style {
	:root[data-viewport="phone"] .mainHeader__searchField-expanded {
		opacity: 0;
		translate: 0 calc(-1 * var(--motion-enter-distance));
	}
}

/**
* selfEntityCalendarView.css — the self entity's Calendar module shell.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-16 Initial Version
*/

.selfEntityCalendarView__view {
	height: 100%;
	width: 100%;
	min-height: 0;
}

/**
* taskManagementCalendarView.css — the deadline calendar module's shell; the cell and sheet content styles live with
* deadlineDayCensus / deadlineDaySheet.
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-16 Initial Version
*/

.taskManagementCalendarView__view {
	height: 100%;
	width: 100%;
	min-height: 0;
}

/**
* dashboard.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.dashboard__view {
	width: 100%;
	height: 100%;
}

.dashboard__view:has(.dashboard__tabHeaderBar) {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gap-stack);
}
/**
* selfEntityDashboard.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-January-13 Initial Version
*/

.selfEntityDashboard__view {
	height: 100%;
	padding-right: var(--pad-card);
}

.selfEntityDashboard__grid {
	display: grid;
	gap: var(--gap-tile);
	grid-template-areas:
		"selfEntityDashBoard_entitiesBox selfEntityDashBoard_eventsBox selfEntityDashBoard_messagesBox"
		"selfEntityDashBoard_engagementBox selfEntityDashBoard_engagementBox selfEntityDashBoard_messagesBox";
	grid-template-columns: 1fr 1fr 1fr;
	grid-template-rows: 1fr 2fr;
	height: 100%;
}

.selfEntityDashBoard__entitiesBox {
	grid-area: selfEntityDashBoard_entitiesBox;
}

.selfEntityDashBoard__eventsBox {
	grid-area: selfEntityDashBoard_eventsBox;
}

.selfEntityDashBoard__messagesBox {
	grid-area: selfEntityDashBoard_messagesBox;
}

.selfEntityDashBoard__engagementBox {
	grid-area: selfEntityDashBoard_engagementBox;
}

.selfEntityDashboard__placeholderBox {
	display: grid;
	gap: var(--gap-stack);
	grid-template-rows: auto 1fr;
	padding: var(--pad-card);
}

.selfEntityDashboard__placeholderTitle {
	border-bottom: var(--border-shorthand);
	padding-bottom: var(--pad-dense);
	text-align: left;
}

.selfEntityDashboard__hudFrame .selfEntityDashboard__entityTiles {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(40rem, 1fr));
	gap: var(--gap-tile);
}

.selfEntityDashboard__hudFrame .selfEntityDashboard__entityTiles .entityTile__heading {
	font-size: var(--font-size-body);
}

:root[data-viewport="phone"] .selfEntityDashboard__hudFrame .selfEntityDashboard__entityTiles {
	grid-template-columns: minmax(0, 1fr);
}

/**
* tasksView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-02-18 Initial Version
*/

.tasksView__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
}

.tasksView__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	position: relative;
	padding: var(--pad-page);
}

.tasksView__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.tasksView__leftContainer {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-tile);
	min-height: 0;
}

.tasksView__leftContainer>* {
	min-width: 0;
}

.tasksView__refine {
	display: grid;
}

.tasksView__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.tasksView__headingActions {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.tasksView__refineBar {
	width: 100%;
}

.tasksView__bucket {
	min-height: 0;
	padding-top: var(--gap-stack);
}

.tasksView__bucketSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding-top: var(--gap-stack);
}

/* ───────── HUD world arm (decision 0016) ───────── */

.tasksView__hudFrame {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	background-color: var(--surface-page);
	min-height: 0;
}

.tasksView__hudFrame-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.tasksView__hudPlate {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.tasksView__hudPlate > .hudPanel__body {
	flex: 1 1 auto;
	min-height: 0;
	display: grid;
	grid-template-rows: minmax(0, 1fr);
}

.tasksView__hudDetail {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
}

:root[data-viewport="phone"] .tasksView__hudFrame > .hudFurniture__underlay {
	display: none;
}

:root[data-viewport="phone"] .tasksView__hudFrame {
	padding: var(--pad-page);
}

:root[data-viewport="phone"] .tasksView__hudPlate .tasksView__headingContainer {
	padding-top: var(--pad-cell);
	padding-inline-end: var(--pad-cell);
}

/**
* entitiesView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-04 Initial Version
*/
.entitiesView__view {
	height: 100%;
	min-height: 0;
	width: 100%;
	display: grid;
	grid-template-rows: auto 1fr;
	gap: var(--gap-stack);
}

.entitiesView__headingContainer {
	padding: var(--pad-row);
	display: flex;
	justify-content: start;
	align-items: center;
	gap: var(--gap-stack)
}

.entitiesView__searchBar {
	flex: 1;
}

.entitiesView__scrollArea {
	width: 100%;
	height: 100%;
	display: grid;
	grid-template-columns: minmax(0, 1fr);
	align-content: start;
	row-gap: var(--gap-tight);
	border-radius: var(--radius-card);
	padding: var(--pad-cell);
}

.entitiesView__emptyMessage {
	grid-column: 1 / -1;
	text-align: center;
	color: var(--text-secondary);
	margin-top: var(--pad-shell);
}

.entitiesView__newEntityButton {}

.entitiesView__newEntityDialog {
	position: fixed;
	/* intentional literal: positional dialog offset from the viewport top, not spacing rhythm */
	top: 6rem;
	left: 50%;
	transform: translateX(-50%);
	display: flex;
	flex-direction: column;
	width: min(96rem, calc(100dvw - 2 * var(--pad-page)));
	/* intentional literal: the dialog's fill-the-viewport height, paired with the 6rem top offset */
	max-height: calc(100dvh - 8rem);
	padding: var(--pad-sheet);
	border-radius: var(--radius-sheet);
}

:root[data-viewport="phone"] .entitiesView__newEntityDialog {
	top: 0;
	left: 0;
	transform: none;
	width: 100dvw;
	max-height: 100dvh;
	border-radius: 0;
	padding: var(--pad-page);
}

/**
* clientsView.css
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-26 Initial Version
*/
.clientsView__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
}

.clientsView__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
}

.clientsView__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.clientsView__leftContainer {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-tile);
	min-height: 0;
}

.clientsView__leftContainer > * {
	min-width: 0;
}

.clientsView__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.clientsView__headingActions {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.clientsView__refine {
	display: grid;
}

.clientsView__refineBar {
	width: 100%;
}

.clientsView__bucket {
	min-height: 0;
	padding-top: var(--gap-stack);
}

.clientsView__bucketSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding-top: var(--gap-stack);
}

.clientsView__newClientPanel {
	width: min(80rem, calc(100% - 5rem));
}

/**
* searchView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.searchView__view {
	width: 100%;
	height: 100%;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	row-gap: var(--gap-stack);
	padding-top: var(--pad-shell);
}

.searchView__searchBarContainer,
.searchView__results {
	width: min(100% - 2 * var(--pad-shell), 72rem);
	margin-inline: auto;
}

.searchView__searchBarContainer {
	display: grid;
	gap: var(--gap-tight);
}

.searchView__searchBar {
	width: 100%;
}

.searchView__status {
	min-height: var(--font-size-label);
	padding-inline: var(--pad-dense);
	color: var(--text-secondary);
	font-style: normal;
	text-align: start;
}

.searchView__results {
	display: grid;
	align-content: start;
	gap: var(--gap-section);
	padding-bottom: var(--pad-page);
}

.searchView__group {
	display: grid;
	gap: var(--gap-tight);
}

.searchView__groupHeading {
	display: flex;
	align-items: baseline;
	gap: var(--gap-tight);
	padding-inline: var(--pad-dense);
}

.searchView__groupTitle {
	margin: 0;
	text-align: start;
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	color: var(--text-secondary);
}

.searchView__groupCount {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
}

.searchView__empty {
	padding-block: var(--pad-sheet);
	color: var(--text-secondary);
}

.searchView__skeletonRow {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr);
	align-items: center;
	column-gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-card);
}

.searchView__skeletonFigure {
	height: 4rem;
	width: 4rem;
	min-width: 0;
}

.searchView__skeletonName {
	max-width: 24rem;
}

:root[data-viewport="phone"] .searchView__view {
	padding-top: calc(var(--touch-target-primary) + var(--gap-tight));
}

:root[data-viewport="phone"] .searchView__searchBarContainer,
:root[data-viewport="phone"] .searchView__results {
	width: calc(100% - 2 * var(--pad-page));
}

/**
* teamMembersView.css
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-09 Initial Version
*/

.teamMembersView__view {
	display: grid;
	gap: var(--gap-inline);
	grid-template-rows: minmax(0, 1fr);
	height: 100%;
}

.teamMembersView__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
}

.teamMembersView__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.teamMembersView__leftContainer {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-tile);
	min-height: 0;
}

.teamMembersView__leftContainer > * {
	min-width: 0;
}

.teamMembersView__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.teamMembersView__refine {
	display: grid;
}

.teamMembersView__refineBar {
	width: 100%;
}

.teamMembersView__bucket {
	min-height: 0;
	padding-top: var(--gap-stack);
}

.teamMembersView__bucketSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding-top: var(--gap-stack);
}

.teamMembersView__addTeamMemberPanel {
	height: 75%;
	width: 50%;
}

:root[data-viewport="phone"] .teamMembersView__addTeamMemberPanel {
	height: 100dvh;
	width: 92vw;
	margin: 0;
}

/**
 * notifications.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-05-07 Initial Version
 */

.notificationsView__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	width: 100%;
	height: 100%;
	padding: var(--pad-page);
}

/* TODO: dead rule — no emitter for this selector; its literal is deliberately NOT tokenized. */
.notificationsView__heading {
	margin-bottom: 1rem;
}

.notificationsView__emptyMessage {
	color: var(--text-secondary);
	text-align: center;
	margin-top: var(--pad-shell);
}

/**
* requestDetailView.css — the ActionRequest detail surface (#1457).
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-04 Initial Version
*/

.requestDetailView__view {
	display: grid;
	grid-template-rows: auto auto auto 1fr;
	gap: var(--gap-inline);
	width: 100%;
	height: 100%;
	overflow: hidden;
}

.requestDetailView__header {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.requestDetailView__summary {
	display: flex;
	flex-direction: column;
	gap: var(--gap-tight);
	padding: var(--pad-dense);
	border-radius: var(--radius-card);
}

.requestDetailView__parties {
	font-weight: 600;
}

.requestDetailView__statusRow {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.requestDetailView__status {
	font-weight: 600;
}

.requestDetailView__status-action_request_status_accepted {
	color: var(--text-success);
}

.requestDetailView__status-action_request_status_rejected,
.requestDetailView__status-action_request_status_cancelled {
	color: var(--text-danger);
}

.requestDetailView__status-action_request_status_pending {
	color: var(--text-partial);
}

.requestDetailView__dates {
	color: var(--text-secondary);
}

.requestDetailView__actions {
	display: flex;
	gap: var(--gap-inline);
}

.requestDetailView__composer {
	display: flex;
	gap: var(--gap-inline);
	align-items: center;
}

.requestDetailView__composerInput {
	flex: 1;
}

.requestDetailView__unavailable {
	color: var(--text-secondary);
}

/**
* notePad.css — the docked notepad: heading, the chooser + New-note row, and the two-pane track
* (list | editor) that slides one pane width when a note opens. The dock draws the close mark
* at the top-right corner, so the header keeps that corner clear.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.notePad__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	width: 36rem;
	max-width: 100%;
	height: 100%;
	min-height: 0;
	overflow: hidden;
	color: var(--text-primary);
}

.notePad__header {
	padding: var(--pad-card) 5.2rem /* intentional literal: clears the dock's close mark, which sits over the header's right edge */ 0 var(--pad-card);
}

:root[data-viewport="phone"] .notePad__view {
	width: 100%;
}

:root[data-viewport="phone"] .notePad__header {
	padding-left: 4.8rem; /* intentional literal: clears the phone-band overlay's close mark, which sits over the header's left edge */
	padding-right: var(--pad-card);
}

.notePad__heading {
	margin: 0;
	text-align: left;
}

.notePad__controls {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-dense) var(--pad-card) var(--pad-row);
	border-bottom: var(--border-width) solid var(--border-default);
}

.notePad__entityChooser {
	min-width: 0;
	width: 100%;
}

.notePad__newNote {
	white-space: nowrap;
}

.notePad__panes {
	display: grid;
	grid-template-columns: 100% 100%;
	min-height: 0;
	overflow: clip;
}

.notePad__pane {
	min-width: 0;
	min-height: 0;
	overflow-y: auto;
	translate: 0 0;
	transition: translate var(--motion-base) var(--ease-emphasized);
}

.notePad__panes-editor > .notePad__pane {
	translate: -100% 0;
}

.notePad__pane[inert] {
	visibility: hidden;
	transition: visibility 0s var(--motion-base);
}

.notePad__pane:has(.noteEditor__view) {
	overflow: clip;
}

/**
* account.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.account__view {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-tile);
	align-content: start;
	padding: var(--pad-page);
}

.account__title {
	margin: 0;
}

.account__row {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-tight);
}

.account__rowValue {
	margin: 0;
	/* formatAddress joins address lines with \n */
	white-space: pre-line;
}

.account__skeleton {
	max-width: 32rem;
}

.account__dangerZone {
	display: grid;
	justify-items: start;
	margin-top: var(--gap-stack);
	padding-top: var(--gap-stack);
	border-top: var(--border-width) solid var(--border-default);
}

.account__dangerZone .button {
	min-height: var(--touch-target-primary);
}

.account__deleteDialog {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-stack);
	max-width: 28rem;
	padding: var(--pad-sheet);
}

.account__deleteDialogTitle,
.account__deleteDialogWarning {
	margin: 0;
}

.account__deleteDialogForm {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-inline);
}

.account__deleteDialogButtons {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

.account__deleteDialogCodeToggle {
	justify-self: start;
}

.account__setPasswordDialog {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-stack);
	max-width: calc(100dvw - 5rem);
	padding: var(--pad-sheet);
}

.account__setPasswordDialogTitle,
.account__setPasswordDialogHint {
	margin: 0;
}

.account__setPasswordDialogHint {
	font-size: var(--font-size-label);
	color: var(--text-secondary);
}

.account__setPasswordDialogForm {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-inline);
}

.account__setPasswordDialogButtons {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
}

.account__actionRow {
	display: flex;
	justify-content: flex-start;
	gap: var(--gap-inline);
	margin-top: var(--gap-stack);
}

.account__editDialog {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-stack);
	width: calc(100dvw - 10rem);
	max-height: calc(100dvh - 10rem);
	min-width: 32rem;
	padding: var(--pad-sheet);
}

.account__editDialogTitle {
	margin: 0;
}

.account__editDialogForm {
	display: grid;
	grid-template-columns: 1fr;
	grid-template-rows: minmax(0, 1fr) auto;
	gap: var(--gap-stack);
	padding: 0 var(--pad-card);

	.headerWithSmallHeading__view {
		width: auto;
	}

	.emailFields__view {
		width: auto;

		>* {
			width: 100%;
		}
	}
}

.account__editDialogScrollArea {
	display: grid;
	grid-template-columns: 1fr;
	gap: var(--gap-stack);
	align-content: start;
}

.account__editDialogSection {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(22rem, 1fr));
	gap: var(--gap-inline);
	width: auto;
}

.account__editDialogHint {
	margin: 0;
	font-size: var(--font-size-label);
	color: var(--text-secondary);
}

.account__editDialogButtons {
	display: flex;
	justify-content: flex-end;
	gap: var(--gap-inline);
	align-items: center;
}

.account__editDialogPhoneFields {
	width: auto;
}

/**
* newInvoiceView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-03 Initial Version
*/

.newInvoiceView__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	box-sizing: border-box;
	height: 100%;
	min-height: 0;
	min-width: 0;
}

.newInvoiceView__view > * {
	flex: 0 0 auto;
}

/* ─── Header band ─────────────────────────────────────────────── */

.newInvoiceView__headingContainer {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	background: var(--brand-primary);
	padding: var(--pad-dense) var(--pad-card);
	border-radius: var(--radius-card);
}

.newInvoiceView__header {
	letter-spacing: var(--letter-spacing-display);
}

.newInvoiceView__clientContainer,
.newInvoiceView__filters {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-tile);
	padding: 0 var(--pad-cell);
}

.newInvoiceView__clientName {
	font-family: var(--font-display);
	font-weight: var(--font-weight-heading);
	letter-spacing: var(--letter-spacing-display);
}

.newInvoiceView__projectPicker {
	flex: 1 1 22rem;
	min-width: min(100%, 22rem);
	max-width: 36rem;
}

.newInvoiceView__fetchButton {
	margin-left: auto;
}

/* ─── Source strip: the category tiles share one segmented rail ── */

.newInvoiceView__sources {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
	background: var(--surface-card);
	background-image: var(--surface-card-texture, none);
	background-repeat: var(--surface-card-texture-repeat, repeat);
	background-size: var(--surface-card-texture-size, auto);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-flat);
	overflow: hidden;
}

.newInvoiceView__sources .invoiceSourceTile__view {
	box-shadow: calc(-1 * var(--border-width)) calc(-1 * var(--border-width)) 0 0 var(--border-default); /* intentional literal: the hairline seam between auto-fit tiles, clipped at the strip's edge, not an elevation */
}

/* ─── Worksheet: the invoice being planned ────────────────────── */

.newInvoiceView__worksheet {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	min-height: 0;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	background: var(--surface-card);
	background-image: var(--surface-card-texture, none);
	background-repeat: var(--surface-card-texture-repeat, repeat);
	background-size: var(--surface-card-texture-size, auto);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	clip-path: var(--surface-clip, none);
	min-width: 0;
}

.newInvoiceView__worksheet > * {
	flex: 0 0 auto;
}

.newInvoiceView__lineList {
	flex: 1 1 auto;
	min-height: 0;
}

.newInvoiceView__numeric {
	font-variant-numeric: tabular-nums;
	text-align: right;
}

/* ─── Footer: comments beside the running total ───────────────── */

.newInvoiceView__footer {
	display: flex;
	flex-wrap: wrap;
	gap: var(--gap-tile);
	align-items: stretch;
	padding-top: var(--pad-dense);
	border-top: var(--border-width) solid var(--border-default);
}

.newInvoiceView__totals {
	display: grid;
	gap: var(--gap-tight);
	flex: 1 1 24rem;
	min-width: 0;
	max-width: 32rem;
	align-content: start;
	padding: var(--pad-row) var(--pad-card);
	background: var(--surface-sunken);
	border-radius: var(--radius-card);
}

.newInvoiceView__totals__row {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.newInvoiceView__totals__label {
	color: var(--text-secondary);
}

.newInvoiceView__totals__note {
	color: var(--text-warning);
	text-align: right;
}

.newInvoiceView__totals__row-sum {
	align-items: baseline;
	padding-top: var(--pad-cell);
	border-top: var(--border-width) solid var(--border-strong);
}

.newInvoiceView__totals__row-sum .newInvoiceView__totals__label {
	color: var(--text-primary);
}

.newInvoiceView__totals__sum {
	font-family: var(--font-display);
	font-size: var(--font-size-stat);
	font-weight: var(--font-weight-display);
	letter-spacing: var(--letter-spacing-display);
	line-height: var(--line-height-tight);
	color: var(--text-primary);
}

.newInvoiceView__grouping {
	display: grid;
	gap: var(--gap-hairline);
	padding-top: var(--pad-cell);
	border-top: var(--border-width) solid var(--border-default);
}

.newInvoiceView__grouping__hint {
	color: var(--text-secondary);
}

.newInvoiceView__generateButton {
	justify-self: end;
}

/* ─── Preview step: the drafted invoice with Save / Schedule / Send ── */

.newInvoiceView__preview {
	flex: 1 1 auto;
	min-height: 0;
	padding: 0 var(--pad-cell) var(--pad-card);
}

/* ─── Phone band ──────────────────────────────────────────────── */

:root[data-viewport="phone"] .newInvoiceView__view {
	overflow-y: auto;
}

:root[data-viewport="phone"] .newInvoiceView__worksheet,
:root[data-viewport="phone"] .newInvoiceView__lineList,
:root[data-viewport="phone"] .newInvoiceView__preview {
	flex: 0 0 auto;
	min-height: auto;
	overflow: visible;
}

:root[data-viewport="phone"] .newInvoiceView__projectPicker {
	flex-basis: 100%;
	min-width: 0;
	max-width: none;
}

:root[data-viewport="phone"] .newInvoiceView__sources {
	grid-template-columns: 1fr;
}

:root[data-viewport="phone"] .newInvoiceView__totals {
	max-width: none;
}

/**
* receivedInvoices.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-21 Initial Version (invoice payer flow)
*/

.receivedInvoicesView__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
}

.receivedInvoicesView__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
}

.receivedInvoicesView__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.receivedInvoicesView__leftContainer {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-tile);
	min-height: 0;
}

.receivedInvoicesView__leftContainer > * {
	min-width: 0;
}

.receivedInvoicesView__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.receivedInvoicesView__list {
	min-height: 0;
	padding-top: var(--gap-stack);
}

.receivedInvoicesView__invoicePanel {
	min-height: 0;
}

/**
* subscriptions.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-05 Initial Version (#2148) — the Subscriptions surface: heading, filter row
*          and the windowed list, with the phone band trading the row of filters for one sheet button that
*          overrides `.button`'s `width: fit-content` so it fills the band and clears the touch floor
*/

.subscriptionsView__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
}

.subscriptionsView__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
}

.subscriptionsView__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.subscriptionsView__leftContainer {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-tile);
	min-height: 0;
}

.subscriptionsView__leftContainer > * {
	min-width: 0;
}

.subscriptionsView__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.subscriptionsView__refine {
	display: grid;
}

.subscriptionsView__refineBar {
	width: 100%;
}

.subscriptionsView__bucket {
	min-height: 0;
	padding-top: var(--gap-stack);
}

.subscriptionsView__bucketSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding-top: var(--gap-stack);
}

/**
 * activityModule.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-July-21 Initial Version — split from the retired performanceModule.css during
 *          the Performance→Activity rename; mirrors TasksView/ProjectsView/ClientsView with an
 *          outer contentContainer (the painted, rounded module backdrop), a pillBox left rail track-stacking
 *          heading · date-picker · member dropdown · summary · graph, and a pillBox right rail
 *          for the date-tile list (#1730)
 */

.activityModule__view {
	display: grid;
	height: 100%;
	min-height: 0;
}

.activityModule__contentContainer {
	display: grid;
	grid-template-rows: auto auto auto auto minmax(0, 1fr);
	align-content: start;
	gap: var(--gap-section);
	min-height: 0;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
	overscroll-behavior-y: contain;
}

.activityModule__contentContainer > * {
	min-width: 0;
}

.activityModule__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
	flex-wrap: wrap;
}

.activityModule__header {
	margin: 0;
}

.activityModule__trend {
	display: flex;
	height: 19rem;
	min-height: 0;
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	padding: var(--pad-card);
}

.activityModule__graph {
	height: 100%;
	width: 100%;
}

.activityModule__trendSkeleton {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	align-items: end;
	gap: var(--gap-dense);
	height: 100%;
	width: 100%;
	min-width: 0;
	padding-bottom: var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
}

.activityModule__trendSkeletonBar {
	min-width: 0;
	border-radius: var(--radius-dense) var(--radius-dense) 0 0;
	height: 35%;
}

.activityModule__trendSkeletonBar:nth-child(3n) {
	height: 70%;
}

.activityModule__trendSkeletonBar:nth-child(4n + 1) {
	height: 50%;
}

.activityModule__trendSkeletonBar:nth-child(6n + 2) {
	height: 20%;
}

:root[data-viewport="phone"] .activityModule__trend {
	height: 20rem;
}

/**
 * activityLedger.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-09 Initial Version (#2254)
 */

.activityLedger__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	min-height: 0;
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	padding: var(--pad-card);
}

.activityLedger__header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.activityLedger__title {
	margin: 0;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	color: var(--text-primary);
}

.activityLedger__showEveryone {
	color: var(--text-link);
	font-size: var(--font-size-caption);
}

.activityLedger__day {
	display: grid;
	gap: var(--gap-hairline);
}

.activityLedger__dayHeader {
	position: sticky;
	top: 0;
	z-index: 1;
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
	padding: var(--pad-cell) 0;
	background-color: var(--surface-card);
	border-bottom: var(--border-width) solid var(--border-strong);
}

.activityLedger__date {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
}

.activityLedger__date-today {
	color: var(--text-brand);
}

.activityLedger__dayTotal {
	color: var(--text-primary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
}

.activityLedger__entries {
	display: grid;
}

.activityLedger__entry {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-dense) 0;
	border-bottom: var(--border-width) solid var(--border-default);
}

.activityLedger__entry:last-child {
	border-bottom: none;
}

.activityLedger__entryMain {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.activityLedger__task {
	color: var(--text-primary);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.activityLedger__meta {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.activityLedger__duration {
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	min-height: var(--touch-target-minimum);
}

.activityLedger__notice,
.activityLedger__empty {
	padding: var(--pad-card) 0;
}

.activityLedger__skeletonDate {
	height: 1.2rem;
	min-width: 0;
	width: 12rem;
}

.activityLedger__skeletonTotal {
	height: 1.2rem;
	min-width: 0;
	width: 4rem;
}

.activityLedger__skeletonTask {
	height: 1.4rem;
	min-width: 0;
	width: 55%;
}

.activityLedger__skeletonMeta {
	height: 1.1rem;
	min-width: 0;
	width: 35%;
}

.activityLedger__skeletonDuration {
	height: 1.4rem;
	min-width: 0;
	width: 4.4rem;
}

:root[data-viewport="phone"] .activityLedger__dayHeader {
	position: static;
}

/**
 * activityMatrix.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-09 Initial Version (#2254)
 */

.activityMatrix__view {
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	min-width: 0;
	overflow: hidden;
}

.activityMatrix__scroller {
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scrollbar-width: thin;
	scrollbar-color: var(--border-strong) transparent;
}

.activityMatrix__table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	font-variant-numeric: tabular-nums;
	color: var(--text-primary);
}

.activityMatrix__table th,
.activityMatrix__table td {
	padding: var(--pad-cell) var(--pad-dense);
	text-align: right;
	font-weight: var(--font-weight-body);
	white-space: nowrap;
	border-bottom: var(--border-width) solid var(--border-default);
}

.activityMatrix__table .activityMatrix__memberHead,
.activityMatrix__table .activityMatrix__member,
.activityMatrix__table .activityMatrix__footHead {
	position: sticky;
	left: 0;
	z-index: 1;
	text-align: left;
	background-color: var(--surface-card);
	min-width: 14rem;
	max-width: 22rem;
}

.activityMatrix__member::after,
.activityMatrix__memberHead::after,
.activityMatrix__footHead::after {
	content: '';
	position: absolute;
	inset: 0 auto 0 100%;
	width: var(--border-width);
	background-color: var(--border-default);
}

.activityMatrix__memberHead,
.activityMatrix__totalHead,
.activityMatrix__month {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	vertical-align: bottom;
}

.activityMatrix__table .activityMatrix__month {
	text-align: left;
	border-bottom: none;
	padding-bottom: 0;
}

.activityMatrix__table .activityMatrix__day {
	text-align: center;
	min-width: 3.6rem;
	padding: var(--pad-cell) 0;
}

.activityMatrix__table .activityMatrix__cell {
	text-align: center;
	padding: var(--pad-cell) 0;
}

.activityMatrix__table .activityMatrix__laneTotal,
.activityMatrix__table .activityMatrix__grandTotal {
	text-align: right;
	padding: var(--pad-cell) var(--pad-dense);
}

.activityMatrix__weekday,
.activityMatrix__dayNumber {
	display: block;
	line-height: 1.2;
}

.activityMatrix__weekday {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
}

.activityMatrix__day-weekend .activityMatrix__weekday,
.activityMatrix__day-weekend .activityMatrix__dayNumber {
	color: var(--text-secondary);
	font-weight: var(--font-weight-body);
}

.activityMatrix__dayNumber {
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
	margin: 0 auto;
	width: 2.2rem;
	border-radius: var(--radius-pill);
}

.activityMatrix__day-today .activityMatrix__dayNumber {
	background-color: var(--brand-primary);
	color: var(--text-on-brand);
}

.activityMatrix__day-today .activityMatrix__weekday {
	color: var(--text-brand);
}

.activityMatrix__memberButton {
	display: inline-flex;
	align-items: center;
	gap: var(--gap-inline);
	max-width: 100%;
	min-height: var(--touch-target-minimum);
	padding: 0 var(--pad-cell) 0 0;
	border: none;
	border-radius: var(--radius-pill);
	background: transparent;
	color: inherit;
	font: inherit;
	cursor: pointer;
	text-align: left;
}

.activityMatrix__memberButton:hover {
	background-color: var(--surface-hover);
}

.activityMatrix__memberButton:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: .2rem;
}

.activityMatrix__memberName {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-weight: var(--font-weight-medium);
}

.activityMatrix__lane-selected .activityMatrix__memberName {
	color: var(--text-brand);
}

.activityMatrix__lane-selected .activityMatrix__cell:not(.activityMatrix__cell-logged),
.activityMatrix__lane-selected .activityMatrix__member {
	background-color: var(--surface-selected);
}

.activityMatrix__cell {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
}

.activityMatrix__cell-logged {
	color: var(--text-primary);
	background-color: color-mix(in srgb, var(--brand-primary) calc(var(--cell-load, 0) * 24%), transparent);
	transition: background-color var(--motion-base) var(--ease-standard);
}

.activityMatrix__cell-today {
	background-color: var(--surface-selected);
}

.activityMatrix__cellButton {
	appearance: none;
	background: transparent;
	border: none;
	color: inherit;
	font: inherit;
	font-variant-numeric: tabular-nums;
	padding: var(--pad-cell) 0;
	margin: calc(var(--pad-cell) * -1) 0;
	width: 100%;
	min-height: var(--touch-target-minimum);
	min-width: var(--touch-target-minimum);
	border-radius: var(--radius-dense);
	cursor: pointer;
}

.activityMatrix__cellButton:hover {
	background-color: var(--surface-hover);
}

.activityMatrix__cellButton:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: -.1rem;
}

.activityMatrix__laneTotal,
.activityMatrix__totalHead,
.activityMatrix__grandTotal {
	position: sticky;
	right: 0;
	background-color: var(--surface-card);
	font-weight: var(--font-weight-medium);
	color: var(--text-primary);
	box-shadow: inset var(--border-width) 0 0 var(--border-default);
}

.activityMatrix__lane-selected .activityMatrix__laneTotal {
	background-color: var(--surface-selected);
}

.activityMatrix__table tfoot th,
.activityMatrix__table tfoot td {
	border-bottom: none;
	border-top: var(--border-width) solid var(--border-strong);
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
}

.activityMatrix__table tfoot .activityMatrix__cell-total {
	font-size: var(--font-size-caption);
}

.activityMatrix__grandTotal {
	font-size: var(--font-size-body);
}

.activityMatrix__empty {
	display: block;
	padding: var(--pad-card);
}

.activityMatrix__skeleton {
	display: grid;
	gap: var(--gap-hairline);
	padding: var(--pad-dense) 0;
}

.activityMatrix__skeletonLane {
	display: grid;
	grid-template-columns: auto 12rem repeat(10, minmax(0, 1fr));
	align-items: center;
	gap: var(--gap-inline);
	padding: var(--pad-cell) var(--pad-dense);
}

.activityMatrix__skeletonAvatar,
.activityMatrix__skeletonAvatar-spacer {
	width: 2.5rem;
	height: 2.5rem;
	min-width: 0;
	border-radius: var(--radius-button);
}

.activityMatrix__skeletonLane-header {
	border-bottom: var(--border-width) solid var(--border-default);
}

.activityMatrix__skeletonCell-header {
	height: 1rem;
	width: 60%;
	margin: 0 auto;
}

.activityMatrix__skeletonName {
	height: 1.2rem;
	min-width: 0;
}

.activityMatrix__skeletonCell {
	height: 1.2rem;
	min-width: 0;
}

:root[data-viewport="phone"] .activityMatrix__memberHead,
:root[data-viewport="phone"] .activityMatrix__member,
:root[data-viewport="phone"] .activityMatrix__footHead {
	min-width: 12rem;
	max-width: 14rem;
}

:root[data-viewport="phone"] .activityMatrix__skeletonLane {
	grid-template-columns: auto 8rem repeat(4, minmax(0, 1fr));
}

:root[data-viewport="phone"] .activityMatrix__skeletonCell:nth-child(n + 7) {
	display: none;
}

/**
 * activityStatBand.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-09 Initial Version (#2254)
 */

.activityStatBand__view {
	display: grid;
	grid-template-columns: repeat(4, minmax(0, 1fr));
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	overflow: hidden;
}

.activityStatBand__figure {
	display: grid;
	grid-template-rows: auto auto auto;
	gap: var(--gap-hairline);
	padding: var(--pad-card);
	min-width: 0;
}

.activityStatBand__figure + .activityStatBand__figure {
	border-left: var(--border-width) solid var(--border-default);
}

.activityStatBand__label {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	text-transform: none;
}

.activityStatBand__value {
	color: var(--text-primary);
	font-size: var(--font-size-heading);
	font-weight: var(--font-weight-heading);
	line-height: 1.2;
	font-variant-numeric: tabular-nums;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.activityStatBand__meta {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.activityStatBand__skeletonLabel {
	height: 1.2rem;
	min-width: 0;
	width: 40%;
}

.activityStatBand__skeletonValue {
	height: 2.8rem;
	min-width: 0;
	width: 60%;
	margin-top: var(--gap-tight);
}

:root[data-viewport="phone"] .activityStatBand__view {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

:root[data-viewport="phone"] .activityStatBand__figure {
	padding: var(--pad-row) var(--pad-card);
}

:root[data-viewport="phone"] .activityStatBand__value {
	font-size: var(--font-size-subheading);
}

:root[data-viewport="phone"] .activityStatBand__meta {
	white-space: normal;
}

:root[data-viewport="phone"] .activityStatBand__figure:nth-child(2n + 1) {
	border-left: none;
}

:root[data-viewport="phone"] .activityStatBand__figure:nth-child(n + 3) {
	border-top: var(--border-width) solid var(--border-default);
}

/**
 * memberPunchCard.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-10 Initial Version (#2268)
*/

.memberPunchCard__view {
	--memberPunchCard-labelWidth: 7.6rem;
	position: relative;
	background-color: var(--chart-frame-surface);
	background-image: var(--chart-frame-texture);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--chart-frame-elevation);
	min-width: 0;
	overflow: hidden;
}

.memberPunchCard__scroller {
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scrollbar-width: thin;
	scrollbar-color: var(--border-default) transparent;
	padding-bottom: var(--pad-cell);
}

.memberPunchCard__view::before,
.memberPunchCard__view::after {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	width: 2.4rem;
	pointer-events: none;
	opacity: 0;
	transition: opacity var(--motion-base) var(--ease-standard);
}

.memberPunchCard__view::before {
	left: var(--memberPunchCard-labelWidth);
	background: linear-gradient(to right, var(--surface-card), transparent);
}

.memberPunchCard__view::after {
	right: 0;
	background: linear-gradient(to left, var(--surface-card), transparent);
}

.memberPunchCard__view-moreLeft::before,
.memberPunchCard__view-moreRight::after {
	opacity: 1;
}

.memberPunchCard__table {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	font-variant-numeric: tabular-nums;
	color: var(--text-primary);
}

.memberPunchCard__table th,
.memberPunchCard__table td {
	padding: var(--pad-cell) 0;
	text-align: center;
	font-weight: var(--font-weight-body);
	white-space: nowrap;
	border-bottom: var(--border-width) solid var(--border-default);
}

.memberPunchCard__table .memberPunchCard__labelHead,
.memberPunchCard__table .memberPunchCard__rowLabel {
	position: sticky;
	left: 0;
	z-index: 1;
	text-align: left;
	padding: var(--pad-cell) var(--pad-dense);
	background-color: var(--surface-card);
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	min-width: var(--memberPunchCard-labelWidth);
}

.memberPunchCard__labelHead::after,
.memberPunchCard__rowLabel::after {
	content: '';
	position: absolute;
	inset: 0 auto 0 100%;
	width: var(--border-width);
	background-color: var(--border-default);
}

.memberPunchCard__table .memberPunchCard__labelHead {
	vertical-align: bottom;
}

.memberPunchCard__table .memberPunchCard__month {
	text-align: left;
	padding: var(--pad-cell) var(--pad-dense) 0;
	border-bottom: none;
	color: var(--text-secondary);
	font-size: var(--font-size-label);
	font-weight: var(--font-weight-medium);
	vertical-align: bottom;
}

.memberPunchCard__table .memberPunchCard__day {
	min-width: 5.6rem;
	padding: 0;
}

.memberPunchCard__dayLabel,
.memberPunchCard__dayButton {
	display: grid;
	justify-items: center;
	gap: var(--gap-hairline);
	width: 100%;
	padding: var(--pad-cell) 0;
}

.memberPunchCard__dayButton {
	appearance: none;
	border: none;
	border-radius: var(--radius-dense);
	background: transparent;
	color: inherit;
	font: inherit;
	cursor: pointer;
	min-height: var(--touch-target-minimum);
}

.memberPunchCard__dayButton:hover {
	background-color: var(--surface-hover);
}

.memberPunchCard__dayButton:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: -.1rem;
}

.memberPunchCard__weekday,
.memberPunchCard__dayNumber {
	display: block;
	line-height: var(--line-height-tight);
}

.memberPunchCard__weekday {
	color: var(--text-secondary);
	font-size: var(--font-size-label);
}

.memberPunchCard__dayNumber {
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
	margin: 0 auto;
	width: 2.2rem;
	border-radius: var(--radius-pill);
}

.memberPunchCard__day-weekend .memberPunchCard__dayNumber {
	color: var(--text-secondary);
	font-weight: var(--font-weight-body);
}

.memberPunchCard__day.memberPunchCard__cell-today .memberPunchCard__dayNumber {
	background-color: var(--brand-primary);
	color: var(--text-on-brand);
}

.memberPunchCard__day.memberPunchCard__cell-today .memberPunchCard__weekday {
	color: var(--text-brand);
}

.memberPunchCard__cell {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	transition: background-color var(--motion-base) var(--ease-standard);
}

.memberPunchCard__cell-selected {
	background-color: var(--surface-selected);
}

.memberPunchCard__table .memberPunchCard__cell-logged {
	vertical-align: bottom;
	padding: var(--pad-cell) var(--gap-hairline);
}

.memberPunchCard__cellButton {
	appearance: none;
	display: grid;
	justify-items: center;
	gap: var(--gap-tight);
	width: 100%;
	min-height: var(--touch-target-minimum);
	padding: var(--pad-cell) 0;
	margin: calc(var(--pad-cell) * -1) 0;
	border: none;
	border-radius: var(--radius-dense);
	background: transparent;
	color: inherit;
	font: inherit;
	cursor: pointer;
}

.memberPunchCard__cellButton:hover {
	background-color: var(--surface-hover);
}

.memberPunchCard__cellButton:focus-visible {
	outline: var(--focus-ring-width) solid var(--focus-ring-color);
	outline-offset: -.1rem;
}

.memberPunchCard__track {
	display: flex;
	align-items: flex-end;
	width: 40%;
	max-width: 2.4rem;
	height: 8rem;
}

.memberPunchCard__bar {
	display: block;
	width: 100%;
	height: max(.3rem, calc(var(--day-load, 0) * 100%));
	background-color: var(--chart-series-1);
	background-image: var(--chart-bar-texture);
	box-shadow: var(--chart-mark-elevation);
	border-radius: var(--chart-mark-radius);
	transform-origin: bottom;
	transition: background-color var(--motion-base) var(--ease-standard);
}

.memberPunchCard__bar-enter {
	animation: punchCardGrow var(--motion-slow) var(--ease-enter) both;
	animation-delay: min(calc(var(--day-index, 0) * var(--motion-fast) / 6), var(--motion-base));
}

.memberPunchCard__cell-selected .memberPunchCard__bar {
	background-color: var(--chart-series-1);
}

.memberPunchCard__figure {
	color: var(--text-primary);
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
}

.memberPunchCard__cell-selected .memberPunchCard__figure {
	color: var(--text-brand);
}

.memberPunchCard__table .memberPunchCard__cell-time {
	padding: var(--pad-cell) var(--gap-hairline);
	font-size: var(--font-size-label);
}

.memberPunchCard__table .memberPunchCard__timeRow:last-child th,
.memberPunchCard__table .memberPunchCard__timeRow:last-child td {
	border-bottom: none;
}

.memberPunchCard__notice,
.memberPunchCard__empty {
	display: block;
	padding: var(--pad-card);
}

.memberPunchCard__skeleton {
	display: grid;
	gap: var(--gap-hairline);
	padding: var(--pad-dense) 0;
}

.memberPunchCard__skeletonLane {
	display: grid;
	grid-template-columns: var(--memberPunchCard-labelWidth) repeat(var(--skeleton-days, 14), minmax(0, 1fr));
	align-items: end;
	gap: var(--gap-inline);
	padding: var(--pad-cell) var(--pad-dense);
}

.memberPunchCard__skeletonLane-header {
	border-bottom: var(--border-width) solid var(--border-default);
}

.memberPunchCard__skeletonLabel {
	height: 1.2rem;
	min-width: 0;
	width: 70%;
}

.memberPunchCard__skeletonCell {
	height: 1.2rem;
	min-width: 0;
	width: 60%;
	margin: 0 auto;
}

.memberPunchCard__skeletonCell-bar {
	height: 4rem;
}

.memberPunchCard__skeletonCell-bar:nth-child(3n) {
	height: 6rem;
}

.memberPunchCard__skeletonCell-bar:nth-child(4n + 1) {
	height: 2.4rem;
}


:root[data-viewport="phone"] .memberPunchCard__table .memberPunchCard__day {
	min-width: 5.2rem;
}

:root[data-viewport="phone"] .memberPunchCard__skeletonLane {
	grid-template-columns: var(--memberPunchCard-labelWidth) repeat(5, minmax(0, 1fr));
}

:root[data-viewport="phone"] .memberPunchCard__skeletonCell:nth-child(n + 7) {
	display: none;
}

.memberPunchCard__table thead {
	background-color: color-mix(in srgb, var(--surface-card) 65%, var(--surface-page));
}

.memberPunchCard__table .memberPunchCard__cell-logged {
	padding-block: var(--pad-card);
}

.memberPunchCard__dayNumber {
	display: grid;
	place-items: center;
	height: 2.4rem;
	width: 2.4rem;
}

.memberPunchCard__track {
	border-bottom: var(--border-width) solid var(--border-default);
}

:root[data-viewport="phone"] .memberPunchCard__table .memberPunchCard__rowLabel,
:root[data-viewport="phone"] .memberPunchCard__table .memberPunchCard__cell-time,
:root[data-viewport="phone"] .memberPunchCard__weekday {
	font-size: var(--font-size-caption);
}

.memberPunchCard__track {
	background: var(--chart-track-surface);
	border: none;
	border-radius: var(--chart-mark-radius);
	box-shadow: var(--chart-track-elevation);
}

.memberPunchCard__figure,
.memberPunchCard__table .memberPunchCard__cell-time {
	font-family: var(--chart-label-font);
}

/**
 * memberWorkMix.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-10 Initial Version (#2268)
 */

.memberWorkMix__view {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	min-height: 0;
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-raised);
	padding: var(--pad-card);
}

.memberWorkMix__header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.memberWorkMix__titles {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: var(--gap-inline);
	min-width: 0;
}

.memberWorkMix__title {
	margin: 0;
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	color: var(--text-primary);
}

.memberWorkMix__scope {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-variant-numeric: tabular-nums;
	transition: color var(--motion-base) var(--ease-standard);
}

.memberWorkMix__scope-day {
	color: var(--text-brand);
	font-weight: var(--font-weight-medium);
}

.memberWorkMix__showWindow {
	color: var(--text-link);
	font-size: var(--font-size-caption);
	white-space: nowrap;
}

.memberWorkMix__list {
	display: grid;
}

.memberWorkMix__row {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		'memberWorkMix_main memberWorkMix_duration'
		'memberWorkMix_share memberWorkMix_share';
	align-items: center;
	gap: var(--gap-tight) var(--gap-inline);
	padding: var(--pad-dense) 0;
	border-bottom: var(--border-width) solid var(--border-default);
}

.memberWorkMix__row:last-child {
	border-bottom: none;
}

.memberWorkMix__main {
	grid-area: memberWorkMix_main;
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.memberWorkMix__task {
	color: var(--text-primary);
	font-size: var(--font-size-body);
	font-weight: var(--font-weight-medium);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.memberWorkMix__meta {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.memberWorkMix__duration {
	grid-area: memberWorkMix_duration;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	min-height: var(--touch-target-minimum);
}

.memberWorkMix__share {
	grid-area: memberWorkMix_share;
	display: block;
	height: .3rem;
	border-radius: var(--radius-pill);
	background-color: var(--surface-sunken);
	overflow: hidden;
}

.memberWorkMix__shareFill {
	display: block;
	width: 100%;
	height: 100%;
	background-color: var(--brand-primary);
	transform: scaleX(var(--share, 0));
	transform-origin: left;
	transition: transform var(--motion-base) var(--ease-standard);
}

.memberWorkMix__notice,
.memberWorkMix__empty {
	padding: var(--pad-card) 0;
}

.memberWorkMix__skeletonTask {
	height: 1.4rem;
	min-width: 0;
	width: 55%;
}

.memberWorkMix__skeletonMeta {
	height: 1.1rem;
	min-width: 0;
	width: 35%;
}

.memberWorkMix__skeletonDuration {
	grid-area: memberWorkMix_duration;
	height: 1.4rem;
	min-width: 0;
	width: 4.4rem;
}

.memberWorkMix__skeletonShare {
	grid-area: memberWorkMix_share;
	height: .3rem;
	min-width: 0;
	width: 60%;
}

/**
 * dateRangeButton.css
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-09 Initial Version (#2254)
 */

.dateRangeButton__view {
	position: relative;
	display: inline-flex;
}

.dateRangeButton__trigger {
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}

/**
* messages.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-07-15 Initial Version
*/

.messagesView__view {
	display: grid;
	grid-template-columns: auto auto minmax(0, 1fr);
	grid-template-rows: minmax(0, 1fr);
	height: 100%;
	width: 100%;
	min-height: 0;
	overflow: hidden;
	border: var(--border-width) solid var(--border-default);
	border-radius: var(--radius-card);
	background: var(--surface-page);
}

.messagesView__view-membersOpen,
.messagesView__view-threadOpen {
	grid-template-columns: auto auto minmax(0, 1fr) auto;
}

.messagesView__view > .threadSidePanel__view {
	width: 32rem;
}

.messagesView__view-phone {
	grid-template-columns: auto minmax(0, 1fr);
	border: none;
	border-radius: 0;
}

.overlayPanel .chatConversation__view,
.overlayPanel .chatMemberList__view,
.overlayPanel .threadSidePanel__view {
	width: 100%;
	height: 100%;
}

/* TODO: replace this CSS shim with a primitive-level `dismissible: false` prop on DisplayOverlay (the
   navigationRail.css shim's sibling) — the conversation header owns the back chevron. */
.overlayPanel:has(.chatConversation__view) .overlayPanel__closeButton,
.overlayPanel:has(.chatConversation__view) .icon__view:has(.overlayPanel__closeButton) {
	display: none;
}

.overlayPanel .chatMemberList__heading,
.overlayPanel .threadSidePanel__header {
	padding-left: calc(var(--touch-target-primary) + var(--pad-dense));
}

/**
* chat.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-03-10 Initial Version
*/

.chatView__view {
	display: grid;
	grid-template-rows: minmax(0, 1fr) auto;
	grid-template-columns: minmax(0, 1fr);
	height: 100%;
	min-height: 0;
	contain: size;
}

.chatView__scrollArea {
	min-height: 0;
	padding-bottom: var(--pad-dense);
}

/**
* threadSidePanel.css — the chat thread side panel (#1454).
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-04 Initial Version
*/

.threadSidePanel__view {
	height: 100%;
	width: 100%;
	min-height: 0;
	display: grid;
	grid-template-rows: auto minmax(8rem, 30%) minmax(0, 1fr);
	overflow: hidden;
	background: var(--surface-card);
	border-left: var(--border-width) solid var(--border-default);
}

.threadSidePanel__header {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: var(--control-height-larger);
	padding: var(--pad-dense) var(--pad-dense) var(--pad-dense) var(--pad-card);
	border-bottom: var(--border-width) solid var(--border-default);
}

.threadSidePanel__heading {
	margin: 0;
	font-size: var(--font-size-lead);
	font-weight: var(--font-weight-heading);
}

.threadSidePanel__list {
	display: grid;
	align-content: start;
	gap: var(--gap-hairline);
	padding: var(--pad-dense);
	border-block-end: var(--border-width) solid var(--border-default);
}

.threadSidePanel__threadTile {
	display: flex;
	width: 100%;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-dense);
	min-height: var(--control-height-medium);
	padding: var(--pad-cell) var(--pad-dense);
	border-radius: var(--radius-button);
	box-shadow: none;
}

.threadSidePanel__threadTile:hover {
	background: var(--surface-hover);
}

.threadSidePanel__threadTile-selected {
	background: var(--surface-selected);
}

.threadSidePanel__threadTilePreview {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.threadSidePanel__threadTileCount {
	flex: none;
	color: var(--text-secondary);
	font-size: var(--font-size-label);
}

/**
 * about.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2020-12-01 Initial Version 
 */

.aboutView__view {
    display: grid;
    grid-template-columns: 20rem 1fr;
    grid-template-rows: minmax(0, 1fr);
    height: 100%;
}

.aboutView__leftPanel {
    height: calc(100% - 2rem);
    padding-right: var(--pad-page);
    margin: var(--gap-stack);
    border-color: var(--brand-accent);
}

.aboutView__leftPanel .headerTiles__view {
    display: grid;
    gap: var(--gap-stack);
    align-items: center;
    grid-auto-rows: 2rem;
}

.aboutView__noContentMsg {
    width: fit-content;
    margin-top: 5rem; /* intentional literal: empty-state drop from the view top, no role at 48px+ */
    height: fit-content;
    justify-self: center;
    grid-column: 1/3;
}

/* ───────── HUD world (render-dispatched, decision 0016) ───────── */

.aboutView__hudFrame {
    grid-column: 1 / -1;
    min-height: 0;
}

.aboutView__hudEmpty {
    display: flex;
    flex-direction: column;
    gap: var(--gap-stack);
}

.aboutView__hudEmpty .aboutView__noContentMsg {
    margin: var(--pad-card) auto;
}

@counter-style aboutViewSectionIndex {
    system: extends decimal;
    pad: 3 "0";
}

.aboutView__hudBody {
    flex: 1 1 auto;
    min-height: 0;
    display: grid;
    grid-template-columns: 20rem 1fr;
    grid-template-rows: minmax(0, 1fr);
    gap: var(--gap-tile);
}

.aboutView__hudIndex {
    display: flex;
    flex-direction: column;
    gap: var(--gap-stack);
}

.aboutView__hudIndex .headerTiles__view {
    display: grid;
    gap: var(--gap-tight);
    counter-reset: aboutViewSection;
}

.aboutView__hudIndex .headerTiles__tile {
    counter-increment: aboutViewSection;
    font-family: var(--font-mono);
    font-size: var(--font-size-caption);
    letter-spacing: .14em;
    text-transform: uppercase;
}

.aboutView__hudIndex .headerTiles__tile::before {
    content: counter(aboutViewSection, aboutViewSectionIndex) " //" / "";
    margin-right: var(--gap-inline);
    color: var(--text-accent);
}

.aboutView__hudPlate {
    min-height: 0;
    overflow: auto;
}

.aboutView__hudBody .aboutView__hudPlate {
    align-self: start;
    max-height: 100%;
}

:root[data-viewport="phone"] .aboutView__hudBody {
    grid-template-columns: 1fr;
    grid-template-rows: auto minmax(0, 1fr);
}

/**
* selfEntityProfile.css — the self-entity profile module's height chain
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-02 Initial Version — the profile host hands its module panel a
*          definite height (tab strip auto, panel minmax(0, 1fr)), the taskManagementView
*          modulePanel shape, so the About HUD frame fills the view (decision 0016 train)
*/

.selfEntityProfile__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	height: 100%;
	min-height: 0;
}

.selfEntityProfile__modulePanel {
	min-height: 0;
	overflow: hidden;
}

/**
* newContentTabView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-04-16 Initial Version
*/

.newContentTabView__view {
    display: grid;
    height: 100%;
    width: 100%;
    grid-template-rows: 3rem 1fr;
    padding: var(--pad-shell);
}
/**
* contactView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.contactView__view{
    display: grid;
    height: 100%;
    grid-template-rows: auto 1fr;
}
.contactsView__scrollArea{
    padding: var(--pad-page);
    width: 100%;
    height: 100%;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-start;
    /* justify-content: center; */
    align-content: flex-start;
    gap: var(--gap-tile);
}

.contactView__noContactsMsg {
    margin-top: var(--gap-section);
}
/**
* webContentBuilder.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2021-04-16 Initial Version
*/

.webContentBuilder__view {
    padding: var(--pad-page);
    display: grid;
    grid-template-columns: 17rem 1fr;
}

.webContentBuilder__leftPanel {
    padding: var(--pad-card);
    display: grid;
    gap: var(--gap-stack);
    grid-auto-rows: min-content;
    justify-content: left;
}

.webContentBuilder__rightPanel {
    padding: var(--pad-card);
    display: grid;
    gap: var(--gap-stack);
    grid-auto-rows: min-content;
}

.webContentBuilder__addButton {
    transition: all var(--motion-fast) var(--ease-standard);
    box-shadow: var(--elevation-overlay);
    border-radius: var(--radius-circle);
    background-color: var(--brand-accent);
    color: white;
    padding: var(--pad-dense);
    margin-bottom: auto;
    margin-left: auto;
    margin-top: var(--gap-stack);
}

.webContentBuilder__addButton:hover {
    transform: scale(1.02);
    box-shadow: var(--elevation-surround);
}

.webContentBuilder__newContentNodePanel {
    color: var(--text-primary);
}

.webContentBuilder__newContentNodePanel>* {
    padding: var(--pad-dense) var(--pad-card) 0 var(--pad-card);
    border-radius: var(--radius-button);
    cursor: pointer;
}

.webContentBuilder__newContentNodePanel>*:hover {
    background-color: var(--surface-hover);
}

.webContentBuilder__draggedNode-hoverOver:before {
    content: '';
    width: 100%;
    height: .2rem;
    background-color: var(--brand-accent);
    transform: translateY(-1.5rem);
    border-radius: var(--radius-card);
}

/* Web Content Tile */

.webContentTile__view {
    margin: 0;
    display: grid;
    width: 100%;
    height: fit-content;
    border-radius: var(--radius-button);
}

/* Edit Webcontent Tile */

.editWebContentTile__view {
    display: grid;
}

.editWebContentTile__elementEditView {
    height: 13rem;
    display: flex;
    justify-content: space-between;
    flex-direction: column;
}

.editWebcontentTile__backgroundToggleBar {
    /* margin: .5rem auto auto -.5rem; */
    grid-template-columns: auto auto auto;
    margin: 0;
}

.editWebcontentTile__imagePicker {
    /* height: 2rem;
    width: auto; */
    width: 3rem;
}

.editWebContentTile__deleteButton {
    text-align: left;
}

/**
* connectionError.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.connectionError__view {
    width: fit-content;
    background: var(--surface-page);
    margin: 10rem auto auto 50vw; /* intentional literal: positional viewport-centring anchor (paired with translateX(-50%)), not spacing rhythm */
    transform: translateX(-50%);
    box-shadow: var(--elevation-overlay);
    display: grid;
    gap: var(--gap-stack);
}
/**
* editableProfilePreview.css
* @author Miguel A. González <miguel.gonzalez@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved
*
* @version 2023-September-05 Initial Version
*/

.editableProfilePreview__view{
    width: 100%;
    height: 100%;
}

.editableProfilePreview__profile{
    width: 100%;
    height: 100%;
}
/**
 * teamMemberTasks.css
 * @author Edwin X. Borrero <edwin.borrero@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2023-09-13 Initial Version 
 */
 .teamMemberTasks__view{
    height: 100%;
    width: 100%;
 }
 /* dense data surface: --pad-dense/--gap-dense per the token contract's §Dense
    exception — this tile repeats once per task row. */
 .teamMemberTasks__taskEntryTile{
    margin: var(--gap-dense);
 }
/**
* glitchContainer.css
* @author Raúl E. Barroso <raulbarroso@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2023-09-14 Initial Version
*/

.glitchContainer {
    position: relative;
    display: block;
    width: 100%;
}

.glitchContainer__clone, .glitchContainer__node {
    position: absolute;
    top: 0;
}

.glitchContainer-default .glitchContainer__clone {
    animation: glitch-effect 2.5s;
}

.glitchContainer-default .glitchContainer__node {
    animation: glitch-base 2.5s;
}

.glitchContainer-onHover:hover .glitchContainer__clone {
    animation: glitch-effect 2.5s;
}

.glitchContainer-onHover:hover .glitchContainer__node {
    animation: glitch-base 2.5s;
}

.glitchContainer-default.glitchContainer-infinite .glitchContainer__clone,
.glitchContainer-default.glitchContainer-infinite .glitchContainer__node {
    animation-iteration-count: infinite;
}

.glitchContainer-onHover.glitchContainer-infinite:hover .glitchContainer__clone,
.glitchContainer-onHover.glitchContainer-infinite:hover .glitchContainer__node {
    animation-iteration-count: infinite;
}


@keyframes glitch-effect {
    0%, 2.9% {
        transform: translate(.4rem, 0);
        clip-path: inset(0 0 75%);
        text-shadow: var(--brand-accent) -.1rem 0;
    }
    3%, 6.9% {
        transform: translate(-.5rem, 0);
        clip-path: inset(40% 0 30%);
        text-shadow: var(--brand-accent) -.1rem 0, var(--text-secondary) .1rem 0;
    }
    7%, 15.9% {
        transform: translate(0, 0);
        clip-path: none;
    } 
    16%, 19.9% {
        transform: translate(.3rem, 0);
        clip-path: inset(80% 0 0);
        text-shadow: var(--text-secondary) .1rem 0;
    } 
    20%, 100% {
        transform: translate(0, 0);
        clip-path: none;
    }
}

@keyframes glitch-base {
    0%, 2.9% {
        clip-path: inset(25% 0 0);
    }
    3%, 6.9% {
        clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 70%, 100% 70%, 100% 40%, 0% 40%);
    }
    7%, 15.9% {
        clip-path: none;
    } 
    16%, 19.9% {
        clip-path: inset(0 0 20%);
    } 
    20%, 100% {
        clip-path: none;
    }
}
/**
* propertiesModule.css
* @author Miguel A. González <miguel.gonzalez@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2025-October-03 Initial Version
*/

.propertiesModule__view {
	height: 100%;
	width: 100%;
	display: grid;
	grid-template-rows: 1fr auto;
}

.propertiesModule__addPropertyButton {
	justify-self: end;
}
/**
* membersModule.css
* @author Miguel A. González <miguel.gonzalez@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2025-October-03 Initial Version
*/

.membersModule__view {}
/**
* newProjectPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-18 Initial Version
*/

.newProjectPanel__newClientPanel {
	width: 50%;
}

.newProjectPanel__imageHeading {
	text-align: left;
}

.newProjectPanel__imageRow {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.newProjectPanel__imageProgress {
	display: grid;
	row-gap: var(--gap-hairline);
	margin-top: var(--gap-tight);
}

.newProjectPanel__imageStatus {
	color: var(--text-secondary);
}

.newProjectPanel__clientRow {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.newProjectPanel__clientRow>.dropdown__view {
	flex: 1;
}

.newProjectPanel__view {
	display: grid;
}

.newProjectPanel__heading {
	text-align: left;
}

.newProjectPanel__inputContainer {
	padding-top: var(--gap-stack);
	display: grid;
	gap: var(--gap-stack);
}

.newProjectPanel__rateContainer {
	display: grid;
	gap: var(--gap-stack);
	align-items: end;
	grid-template-columns: 1fr 1fr 1fr;
}

.newProjectPanel__rateTypeDropdown,
.newProjectPanel__roundingTypeDropdown,
.newProjectPanel__rateInput {
	width: 100%;
	justify-self: stretch;
}

.newProjectPanel__deadlineHeading {
	text-align: left;
}

.newProjectPanel__clientDropdown {
	width: 100%;
}

.newProjectPanel__buttonsContainer {
	padding-top: var(--gap-stack);
	display: flex;
	justify-content: end;
	gap: var(--gap-stack);
}

:root[data-viewport="phone"] .newProjectPanel__view {
	width: 92vw;
}

:root[data-viewport="phone"] .newProjectPanel__newClientPanel {
	width: 100%;
}

/**
* projectsView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-01 Initial Version
*/
.projectsView__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
}

.projectsView__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
}

.projectsView__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.projectsView__leftContainer {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	gap: var(--gap-tile);
	min-height: 0;
}

.projectsView__leftContainer>* {
	min-width: 0;
}

.projectsView__headingContainer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.projectsView__headingActions {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.projectsView__refine {
	display: grid;
}

.projectsView__refineBar {
	width: 100%;
}

.projectsView__bucket {
	min-height: 0;
	padding-top: var(--gap-stack);
}

.projectsView__bucketSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding-top: var(--gap-stack);
}

/* ───────── HUD world arm (decision 0016) ───────── */

.projectsView__hudFrame {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	background-color: var(--surface-page);
	min-height: 0;
}

.projectsView__hudFrame-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.projectsView__hudPlate {
	display: flex;
	flex-direction: column;
	min-height: 0;
}

.projectsView__hudPlate > .hudPanel__body {
	flex: 1 1 auto;
	min-height: 0;
	display: grid;
	grid-template-rows: minmax(0, 1fr);
}

.projectsView__hudDetail {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-stack);
	min-height: 0;
}

:root[data-viewport="phone"] .projectsView__hudFrame > .hudFurniture__underlay {
	display: none;
}

:root[data-viewport="phone"] .projectsView__hudFrame {
	padding: var(--pad-page);
}

:root[data-viewport="phone"] .projectsView__hudPlate .projectsView__headingContainer {
	padding-top: var(--pad-cell);
	padding-inline-end: var(--pad-cell);
}

/**
* signInPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-26 Initial Version
*/

.signInPanel__view {
	align-items: baseline;
	justify-content: center;
}

.signInPanel__tabs {
	margin: auto;
}

.signInPanel__body {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.signInPanel__buttons {
	display: grid;
	grid-template-columns: 1fr 1fr;
}

.signInPanel__flowLinks {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--gap-inline);
}

.signInPanel__signInButton {
	margin-right: var(--gap-inline);
}

/**
 * invoicePayOverlay.css — the public invoice overlay: the shared invoice.css
 * document plus the pay area under it (the pay-area shapes migrated from the
 * retired standalone page's publicInvoice.css).
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-August-21 Initial Version (invoice payer flow)
 */

.invoicePayOverlay__view {
    display: flex;
    flex-direction: column;
    gap: var(--gap-stack);
    height: 100%;
    overflow-y: auto;
    overflow-x: auto;
}

.invoicePayOverlay__skeleton {
    display: flex;
    flex-direction: column;
    gap: var(--gap-stack);
    padding: var(--pad-card);
}

.invoicePayOverlay__unavailable {
    padding: var(--pad-page);
    text-align: center;
}

.invoicePayOverlay__paidBanner {
    background: var(--status-success);
    color: var(--text-on-status);
    border-radius: var(--radius-card);
    padding: var(--pad-card);
    text-align: center;
    font-size: var(--font-size-lead);
}

.invoicePayOverlay__payArea {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-stack);
    padding: var(--pad-card) var(--pad-page) var(--pad-page);
}

.invoicePayOverlay__payButton,
.invoicePayOverlay__claimButton {
    min-height: var(--touch-target-primary);
    min-width: 20rem;
}

.invoicePayOverlay__claimNotice {
    text-align: center;
}

.invoicePayOverlay__payMessage {
    text-align: center;
    min-height: 1em;
}

.invoicePayOverlay__payArea .stripeElementsHost__view {
    width: 100%;
    max-width: 48rem;
}

.invoicePayOverlay__autopayNote,
.invoicePayOverlay__autopayOutcome,
.invoicePayOverlay__autopayMandate {
    max-width: 48rem;
    text-align: center;
}

.invoicePayOverlay__autopayMandate {
    color: var(--text-secondary);
}

.invoicePayOverlay__payArea .checkBoxWithLabel__view {
    min-height: var(--touch-target-primary);
}

/**
 * payerChooser.css — the payer-identity step inside the invoice pay overlay:
 * the three-door toggle and each door's body (disclosure copy, ride-along
 * email field, inline sign-in panel).
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-August-21 Initial Version (invoice payer flow)
 */

.payerChooser__view {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--gap-stack);
    width: 100%;
    max-width: 48rem;
}

.payerChooser__disclosure {
    text-align: center;
    color: var(--text-secondary);
}

.payerChooser__rideAlong {
    display: flex;
    flex-direction: column;
    gap: var(--gap-stack);
    width: 100%;
}

.payerChooser__autopayMandate {
    text-align: center;
    color: var(--text-secondary);
}

.payerChooser__rideAlong .checkBoxWithLabel__view {
    align-self: center;
    min-height: var(--touch-target-primary);
}

/**
* newTaskPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-09 Initial Version
*/

.newTaskPanel__view {
	anchor-name: --newTaskPanelSheet;
	display: grid;
	width: min(56rem, 92vw);
	max-height: calc(100dvh - 8rem);
}

.newTaskPanel__form {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr) auto;
	gap: var(--gap-stack);
	min-height: 0;
	max-height: 100%;
}

.newTaskPanel__heading {
	text-align: left;
}

.newTaskPanel__body {
	display: grid;
	gap: var(--gap-stack);
	align-content: start;
	padding-top: var(--gap-stack);
	border-top: var(--border-width) solid var(--border-default);
}

.newTaskPanel__nameField {
	min-height: 5.2rem;
}

.newTaskPanel__nameField .textInput__input {
	font-family: var(--font-display);
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
	letter-spacing: var(--letter-spacing-display);
	line-height: var(--line-height-tight);
}

.newTaskPanel__nameField .textInput__placeholderNode:not(.textInput__placeholderNode-shrunk) {
	font-family: var(--font-display);
	font-size: var(--font-size-lead);
	letter-spacing: var(--letter-spacing-display);
}

.newTaskPanel__leadRow {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
	gap: var(--gap-inline);
	align-items: center;
}

.newTaskPanel__taskTypeContainer {
	position: relative;
}

.newTaskPanel__taskTypeContainer>.dropdownTextField__view,
.newTaskPanel__taskTypeDropdown,
.newTaskPanel__projectDropdown,
.newTaskPanel__parentTaskDropdown,
.newTaskPanel__dependencyPicker,
.newTaskPanel__rateTypeDropdown,
.newTaskPanel__rateInput {
	width: 100%;
}

.newTaskPanel__taskTypeIndicator {
	position: absolute;
	top: 0;
	right: .5rem;
	display: flex;
	align-items: center;
	pointer-events: none;
}

.newTaskPanel__projectRow {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	gap: var(--gap-inline);
	align-items: center;
}

.newTaskPanel__section {
	border-top: var(--border-width) solid var(--border-default);
	interpolate-size: allow-keywords;
}

.newTaskPanel__section:last-of-type {
	border-bottom: var(--border-width) solid var(--border-default);
}

.newTaskPanel__sectionSummary {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	min-height: var(--touch-target-primary);
	padding: var(--pad-dense) 0;
	border-radius: var(--radius-dense);
}

.newTaskPanel__sectionTitle {
	text-align: left;
	color: var(--text-primary);
	font-size: var(--font-size-body);
}

.newTaskPanel__sectionSummary:hover .newTaskPanel__sectionTitle {
	color: var(--text-link);
}

.newTaskPanel__sectionHint {
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
	text-align: right;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.newTaskPanel__sectionMarker {
	display: flex;
	color: var(--text-secondary);
	transition: transform var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.newTaskPanel__section[open] .newTaskPanel__sectionMarker {
	transform: rotate(180deg);
	color: var(--text-link);
}

.newTaskPanel__section::details-content {
	opacity: 0;
	block-size: 0;
	overflow: clip;
	transition: block-size var(--motion-base) var(--ease-standard), opacity var(--motion-base) var(--ease-standard), content-visibility var(--motion-base) allow-discrete;
}

.newTaskPanel__section[open]::details-content {
	opacity: 1;
	block-size: auto;
}

.newTaskPanel__sectionBody {
	display: grid;
	gap: var(--gap-stack);
	padding-bottom: var(--pad-dense);
}

.newTaskPanel__scheduleRow {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, max-content);
	gap: var(--gap-inline);
	align-items: center;
}

.newTaskPanel__intervalPicker {
	justify-self: start;
	align-self: stretch;
	max-width: 100%;
	padding: var(--pad-cell) var(--pad-input-inline);
	background-color: var(--surface-card);
	border: var(--border-width) solid var(--border-strong);
	border-radius: var(--radius-pill);
	box-shadow: var(--elevation-button);
	cursor: pointer;
	transition: background-color var(--motion-fast) var(--ease-standard), border-color var(--motion-fast) var(--ease-standard);
}

.newTaskPanel__intervalPicker:hover,
.newTaskPanel__intervalPicker:has(.intervalPicker__panel:popover-open) {
	background-color: var(--surface-hover);
	border-color: var(--brand-accent);
}

:root:not([data-viewport="phone"]) .newTaskPanel__intervalPicker .intervalPicker__panel {
	position-area: none;
	width: max-content;
	justify-self: center;
	top: anchor(bottom);
	left: anchor(--newTaskPanelSheet left);
	right: anchor(--newTaskPanelSheet right);
}

.newTaskPanel__rateContainer {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
	gap: var(--gap-inline);
	align-items: end;
}

.newTaskPanel__buttonsContainer {
	display: flex;
	align-items: center;
	justify-content: end;
	gap: var(--gap-stack);
}

:root[data-viewport="phone"] .newTaskPanel__view {
	position: absolute;
	top: -5rem; /* intentional literal: cancels the dialog's .floatingPanel-expanded__top 5rem offset so the sheet hangs from the phone viewport's top edge */
	width: 100dvw;
	max-height: 100dvh;
	border-radius: 0 0 var(--radius-sheet) var(--radius-sheet);
}

:root[data-viewport="phone"] .newTaskPanel__leadRow,
:root[data-viewport="phone"] .newTaskPanel__scheduleRow {
	grid-template-columns: 1fr;
}

:root[data-viewport="phone"] .newTaskPanel__sectionHint,
:root[data-viewport="phone"] .newTaskPanel__intervalPicker .intervalPicker__dateText {
	font-size: var(--font-size-body);
}

:root[data-viewport="phone"] .newTaskPanel__intervalPicker {
	justify-self: stretch;
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .newTaskPanel__view .newTaskPanel__nameField {
	min-height: 6.4rem;
}

:root[data-viewport="phone"] .newTaskPanel__view .newTaskPanel__nameField .textInput__input,
:root[data-viewport="phone"] .newTaskPanel__view .newTaskPanel__nameField .textInput__placeholderNode:not(.textInput__placeholderNode-shrunk) {
	font-size: var(--font-size-heading);
}

/**
 * intervalTile.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2020-04-07 Initial Version
 */

.intervalTile__view {
	display: grid;
	grid-template-columns: minmax(10rem, 1.4fr) minmax(0, 2fr) auto 5.6rem;
	grid-template-areas: 'intervalTile_member intervalTile_range intervalTile_duration intervalTile_actions';
	align-items: center;
	column-gap: var(--gap-inline);
	min-height: 4rem;
	padding: var(--pad-cell) var(--pad-dense);
	border-bottom: var(--border-width) solid var(--border-default);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

.intervalTile__view:hover {
	background-color: var(--surface-hover);
}

.intervalTile__view-editing {
	display: block;
	padding: var(--pad-card) var(--pad-dense);
	background-color: var(--surface-selected);
}

.intervalTile__member {
	grid-area: intervalTile_member;
	min-width: 0;
}

.intervalTile__teamMember {
	gap: var(--gap-dense);
	min-width: 0;
}

.intervalTile__teamMember .heading {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.intervalTile__memberPlaceholder {
	color: var(--text-disabled);
}

.intervalTile__range {
	grid-area: intervalTile_range;
	display: flex;
	align-items: baseline;
	gap: var(--gap-tight);
	min-width: 0;
	color: var(--text-secondary);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
}

.intervalTile__rangeDay {
	color: var(--text-primary);
	font-weight: var(--font-weight-medium);
}

.intervalTile__rangeArrow {
	color: var(--text-disabled);
}

.intervalTile__rangeStop-running {
	color: var(--text-success);
}

.intervalTile__duration {
	grid-area: intervalTile_duration;
	display: flex;
	align-items: center;
	justify-content: end;
	gap: var(--gap-dense);
}

.intervalTile__total {
	font-weight: var(--font-weight-medium);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
	color: var(--text-primary);
}

.intervalTile__runningTotal {
	color: var(--text-success);
}

.intervalTile__pulse {
	width: .8rem;
	height: .8rem;
	border-radius: var(--radius-pill);
	background-color: var(--status-success);
	box-shadow: 0 0 0 .3rem color-mix(in srgb, var(--status-success) 22%, transparent); /* intentional literal: a flat status halo ring around the pulse dot, not a depth cue — no --elevation-* rung is a ring */
	animation: onlineIndicatorBreathe calc(var(--motion-slow) * 4) var(--ease-standard) infinite;
}

.intervalTile__actions {
	grid-area: intervalTile_actions;
	display: flex;
	align-items: center;
	justify-content: end;
	gap: var(--gap-hairline);
}

.intervalTile__editButton,
.intervalTile__deleteButton {
	cursor: pointer;
	color: var(--text-secondary);
	transition: opacity var(--motion-fast) var(--ease-standard), color var(--motion-fast) var(--ease-standard);
}

.intervalTile__editButton:hover,
.intervalTile__editButton:focus-visible {
	color: var(--text-primary);
}

.intervalTile__deleteButton:hover,
.intervalTile__deleteButton:focus-visible {
	color: var(--text-danger);
}

@media (hover: hover) {

	.intervalTile__editButton,
	.intervalTile__deleteButton {
		opacity: 0;
	}

	.intervalTile__view:hover .intervalTile__editButton,
	.intervalTile__view:hover .intervalTile__deleteButton,
	.intervalTile__view:focus-within .intervalTile__editButton,
	.intervalTile__view:focus-within .intervalTile__deleteButton {
		opacity: 1;
	}
}

:root[data-viewport="phone"] .intervalTile__view {
	grid-template-columns: minmax(0, 1fr) auto 5.6rem;
	grid-template-areas: 'intervalTile_member intervalTile_duration intervalTile_actions' 'intervalTile_range intervalTile_range intervalTile_actions';
	row-gap: var(--gap-hairline);
	padding-block: var(--pad-dense);
}

:root[data-viewport="phone"] .intervalTile__range {
	font-size: var(--font-size-caption);
}

/**
* projectDiagrams.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-May-31 Initial Version
*/

.projectDiagrams__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	gap: var(--gap-tile);
	min-height: 0;
	min-width: 0;
	height: auto;
	width: 100%;
}

.projectDiagrams__verdictRow {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--gap-inline);
	min-width: 0;
}

.projectDiagrams__verdict {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
	font-size: var(--font-size-body);
	line-height: var(--line-height-body);
	color: var(--text-primary);
	text-wrap: pretty;
}

.projectDiagrams__verdict > span {
	font-size: inherit;
	line-height: inherit;
}

.projectDiagrams__verdictLead-success {
	color: var(--text-success);
}

.projectDiagrams__verdictLead-warning {
	color: var(--text-warning);
}

.projectDiagrams__verdictLead-danger {
	color: var(--text-danger);
}

.projectDiagrams__verdictClause {
	font-variant-numeric: tabular-nums;
	white-space: normal;
}

.projectDiagrams__verdictDot {
	margin-right: var(--gap-tight);
	color: var(--text-secondary);
}

.projectDiagrams__verdictSkeleton {
	height: 2rem;
	width: min(100%, 32rem);
}

.projectDiagrams__rail {
	flex: none;
}

.projectDiagrams__figures {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	background-color: var(--surface-card);
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-flat);
	overflow: hidden;
}

.projectDiagrams__figure {
	display: grid;
	grid-template-rows: auto auto auto;
	gap: var(--gap-tight);
	padding: var(--pad-card);
	min-width: 0;
}

.projectDiagrams__figure + .projectDiagrams__figure {
	border-left: var(--border-shorthand);
}

.projectDiagrams__figureLabel,
.projectDiagrams__figureValue,
.projectDiagrams__figureMeta {
	width: 100%;
	min-width: 0;
}

.projectDiagrams__figureLabel {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
	text-transform: none;
}

.projectDiagrams__figureValue {
	letter-spacing: -.03em;
	color: var(--text-primary);
	font-size: var(--font-size-stat);
	font-family: var(--chart-label-font);
	font-weight: var(--font-weight-heading);
	line-height: var(--line-height-tight);
	font-variant-numeric: tabular-nums;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.projectDiagrams__figureMeta {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-tight);
	text-wrap: pretty;
}

.projectDiagrams__figureSkeletonLabel {
	height: 1.2rem;
	width: 40%;
}

.projectDiagrams__figureSkeletonValue {
	height: 2.4rem;
	width: 60%;
	margin-top: var(--gap-tight);
}

.projectDiagrams__chart {
	border-radius: var(--radius-card);
	position: relative;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-section);
	padding: var(--pad-sheet);
	background-color: var(--surface-card);
	background-image: var(--chart-frame-texture);
	border-color: var(--chart-frame-border);
	box-shadow: var(--chart-frame-elevation);
	min-height: 0;
}

.projectDiagrams__diagram {
	min-height: 0;
}

.projectDiagrams__empty {
	height: 100%;
	min-height: 16rem;
}

:root[data-viewport="phone"] .projectDiagrams__view {
	grid-template-rows: auto auto auto;
	align-content: start;
	height: auto;
}

:root[data-viewport="phone"] .projectDiagrams__verdictRow {
	flex-direction: column;
	align-items: stretch;
}

:root[data-viewport="phone"] .projectDiagrams__verdict {
	font-size: var(--font-size-lead);
}

:root[data-viewport="phone"] .projectDiagrams__figures {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

:root[data-viewport="phone"] .projectDiagrams__figure {
	padding: var(--pad-dense) var(--pad-row);
}

:root[data-viewport="phone"] .projectDiagrams__figure:nth-child(2n + 1) {
	border-left: none;
}

:root[data-viewport="phone"] .projectDiagrams__figure:nth-child(n + 3) {
	border-top: var(--border-shorthand);
}

:root[data-viewport="phone"] .projectDiagrams__figure:last-child:nth-child(odd) {
	grid-column: 1 / -1;
}

:root[data-viewport="phone"] .projectDiagrams__chart {
	padding: var(--pad-row);
}

.projectDiagrams__verdictLead {
	font-weight: var(--font-weight-heading);
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	margin-right: var(--gap-tight);
}

.projectDiagrams__verdictLead::before {
	content: '';
	width: .6rem;
	height: .6rem;
	border-radius: var(--radius-circle);
	background: currentColor;
	flex: none;
}

.projectDiagrams__chartHeading {
	display: grid;
	gap: var(--gap-hairline);
}

.projectDiagrams__chartTitle {
	font-family: var(--font-display);
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
	color: var(--text-primary);
}

.projectDiagrams__chartDescription {
	font-size: var(--font-size-caption);
	color: var(--text-secondary);
	text-wrap: pretty;
}

:root[data-viewport="phone"] .projectDiagrams__figureLabel {
	font-size: var(--font-size-body);
}

.projectDiagrams__figure {
	background-image: var(--chart-frame-texture);
}

.projectDiagrams__chart::after {
	content: '';
	position: absolute;
	inset: .6rem;
	border: var(--border-width) solid var(--chart-frame-border);
	border-radius: var(--radius-card);
	opacity: .25;
	pointer-events: none;
}

/**
* taskDiagrams.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-June-10 Initial Version
*/

.taskDiagrams__view {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	gap: var(--gap-tile);
	min-height: 0;
	min-width: 0;
	height: auto;
	width: 100%;
}

.taskDiagrams__verdictRow {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--gap-inline);
	min-width: 0;
}

.taskDiagrams__verdict {
	display: block;
	flex: 1 1 auto;
	min-width: 0;
	font-size: var(--font-size-body);
	line-height: var(--line-height-body);
	color: var(--text-primary);
	text-wrap: pretty;
}

.taskDiagrams__verdict > span {
	font-size: inherit;
	line-height: inherit;
}

.taskDiagrams__verdictLead-success {
	color: var(--text-success);
}

.taskDiagrams__verdictLead-warning {
	color: var(--text-warning);
}

.taskDiagrams__verdictLead-danger {
	color: var(--text-danger);
}

.taskDiagrams__verdictClause {
	font-variant-numeric: tabular-nums;
	white-space: normal;
}

.taskDiagrams__verdictDot {
	margin-right: var(--gap-tight);
	color: var(--text-secondary);
}

.taskDiagrams__verdictSkeleton {
	height: 2rem;
	width: min(100%, 32rem);
}

.taskDiagrams__rail {
	flex: none;
}

.taskDiagrams__figures {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	background-color: var(--surface-card);
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	box-shadow: var(--elevation-flat);
	overflow: hidden;
}

.taskDiagrams__figure {
	display: grid;
	grid-template-rows: auto auto auto;
	gap: var(--gap-tight);
	padding: var(--pad-card);
	min-width: 0;
}

.taskDiagrams__figure + .taskDiagrams__figure {
	border-left: var(--border-shorthand);
}

.taskDiagrams__figureLabel,
.taskDiagrams__figureValue,
.taskDiagrams__figureMeta {
	width: 100%;
	min-width: 0;
}

.taskDiagrams__figureLabel {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	font-weight: var(--font-weight-medium);
	text-transform: none;
}

.taskDiagrams__figureValue {
	letter-spacing: -.03em;
	color: var(--text-primary);
	font-size: var(--font-size-stat);
	font-family: var(--chart-label-font);
	font-weight: var(--font-weight-heading);
	line-height: var(--line-height-tight);
	font-variant-numeric: tabular-nums;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.taskDiagrams__figureMeta {
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
	line-height: var(--line-height-tight);
	text-wrap: pretty;
}

.taskDiagrams__figureSkeletonLabel {
	height: 1.2rem;
	width: 40%;
}

.taskDiagrams__figureSkeletonValue {
	height: 2.4rem;
	width: 60%;
	margin-top: var(--gap-tight);
}

.taskDiagrams__chart {
	border-radius: var(--radius-card);
	position: relative;
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	gap: var(--gap-section);
	padding: var(--pad-sheet);
	background-color: var(--surface-card);
	background-image: var(--chart-frame-texture);
	border-color: var(--chart-frame-border);
	box-shadow: var(--chart-frame-elevation);
	min-height: 0;
}

.taskDiagrams__diagram {
	min-height: 0;
}

.taskDiagrams__empty {
	height: 100%;
	min-height: 16rem;
}

:root[data-viewport="phone"] .taskDiagrams__view {
	grid-template-rows: auto auto auto;
	align-content: start;
	height: auto;
}

:root[data-viewport="phone"] .taskDiagrams__verdictRow {
	flex-direction: column;
	align-items: stretch;
}

:root[data-viewport="phone"] .taskDiagrams__verdict {
	font-size: var(--font-size-lead);
}

:root[data-viewport="phone"] .taskDiagrams__figures {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

:root[data-viewport="phone"] .taskDiagrams__figure {
	padding: var(--pad-dense) var(--pad-row);
}

:root[data-viewport="phone"] .taskDiagrams__figure:nth-child(2n + 1) {
	border-left: none;
}

:root[data-viewport="phone"] .taskDiagrams__figure:nth-child(n + 3) {
	border-top: var(--border-shorthand);
}

:root[data-viewport="phone"] .taskDiagrams__figure:last-child:nth-child(odd) {
	grid-column: 1 / -1;
}

:root[data-viewport="phone"] .taskDiagrams__chart {
	padding: var(--pad-row);
}

.taskDiagrams__verdictLead {
	font-weight: var(--font-weight-heading);
	display: inline-flex;
	align-items: center;
	gap: var(--gap-tight);
	margin-right: var(--gap-tight);
}

.taskDiagrams__verdictLead::before {
	content: '';
	width: .6rem;
	height: .6rem;
	border-radius: var(--radius-circle);
	background: currentColor;
	flex: none;
}

.taskDiagrams__chartHeading {
	display: grid;
	gap: var(--gap-hairline);
}

.taskDiagrams__chartTitle {
	font-family: var(--font-display);
	font-size: var(--font-size-subheading);
	font-weight: var(--font-weight-heading);
	color: var(--text-primary);
}

.taskDiagrams__chartDescription {
	font-size: var(--font-size-caption);
	color: var(--text-secondary);
	text-wrap: pretty;
}

:root[data-viewport="phone"] .taskDiagrams__figureLabel {
	font-size: var(--font-size-body);
}

.taskDiagrams__figure {
	background-image: var(--chart-frame-texture);
}

.taskDiagrams__chart::after {
	content: '';
	position: absolute;
	inset: .6rem;
	border: var(--border-width) solid var(--chart-frame-border);
	border-radius: var(--radius-card);
	opacity: .25;
	pointer-events: none;
}

/**
* clientPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-03 Header backfilled (#605)
*/

.clientPanel__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gap-stack);
	height: 100%;
	width: 100%;
	align-content: start;
}

.clientPanel__sectionTabs {
	min-width: 0;
	overflow-x: auto;
}

.clientPanel__listSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.clientPanel__projectsView,
.clientPanel__invoicesView__view {
	min-height: 0;
}

.clientPanel__dataContainer {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	width: 100%;
	min-height: 0;
}

.clientPanel__dataContainer__statRow {
	flex: none;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: var(--gap-stack);
	width: 100%;
}

.clientPanel__dataContainer__child {
	min-width: 0;
}

.clientPanel__dataContainer__contentGrid,
.clientPanel__dataContainer__contentSkeleton {
	display: grid;
	grid-template-areas:
		'clientPanel_contact clientPanel_contact'
		'clientPanel_activeTasks clientPanel_workingNow';
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	grid-template-rows: auto auto;
	flex: none;
}

.clientPanel__dataContainer__contentSkeleton {
	overflow: hidden;
}

.clientPanel__dataContainer__contentSkeleton > .skeletonCard {
	border-radius: 0;
}

.clientPanel__dataContainer__contact {
	grid-area: clientPanel_contact;
}

.clientPanel__dataContainer__activeTasks {
	grid-area: clientPanel_activeTasks;
	min-height: 0;
}

.clientPanel__dataContainer__workingNow {
	grid-area: clientPanel_workingNow;
	min-height: 0;
}

:root[data-viewport="phone"] .clientPanel__dataContainer__statRow {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .clientPanel__dataContainer__contentGrid,
:root[data-viewport="phone"] .clientPanel__dataContainer__contentSkeleton {
	grid-template-areas:
		'clientPanel_contact'
		'clientPanel_activeTasks'
		'clientPanel_workingNow';
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto auto auto;
}

:root[data-viewport="phone"] .clientPanel__dataContainer__activeTasks {
	border-right: none;
	border-bottom: var(--border-shorthand);
}

/**
* subscriptionPanel.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2267) — the clientPanel.css shape: header / body rows, the
*          equal-column stat row on the shared card template (one column in the phone band), and the
*          bordered period history: a hairline-divided list of range / amount / state rows with the
*          autopay attempts under each
*/

.subscriptionPanel__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gap-stack);
	height: 100%;
	width: 100%;
	align-content: start;
}

.subscriptionPanel__dataContainer {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	width: 100%;
	min-height: 0;
}

.subscriptionPanel__statRow {
	flex: none;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: var(--gap-stack);
	width: 100%;
}

.subscriptionPanel__statRow__child {
	min-width: 0;
}

.subscriptionPanel__card {
	display: grid;
	grid-template-rows: auto auto auto;
	align-content: start;
	row-gap: var(--gap-stack);
	padding: var(--pad-card);
	background: var(--surface-card);
}

.subscriptionPanel__cardHeader {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
}

.subscriptionPanel__cardValue {
	font-weight: var(--font-weight-heading);
}

.subscriptionPanel__cardValue-live {
	color: var(--text-brand);
}

.subscriptionPanel__numeric {
	font-variant-numeric: tabular-nums;
}

.subscriptionPanel__cardSupporting {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 11rem), 1fr));
	gap: var(--gap-inline) var(--gap-stack);
	align-items: start;
}

.subscriptionPanel__pair {
	min-width: 0;
}

.subscriptionPanel__cardSupporting .headerWithSmallHeading__smallHeading {
	color: var(--text-secondary);
}

.subscriptionPanel__cardSupporting .headerWithSmallHeading__header {
	font-size: var(--font-size-body);
	font-variant-numeric: tabular-nums;
	white-space: normal;
}

.subscriptionPanel__pair-paid .headerWithSmallHeading__header {
	color: var(--text-success);
}

.subscriptionPanel__pair-partial .headerWithSmallHeading__header {
	color: var(--text-partial);
}

.subscriptionPanel__pair-unpaid .headerWithSmallHeading__header {
	color: var(--text-danger);
}

.subscriptionPanel__history {
	flex: none;
	display: grid;
	gap: var(--gap-stack);
	padding: var(--pad-card);
	background: var(--surface-card);
}

.subscriptionPanel__historyHead {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--gap-inline);
}

.subscriptionPanel__historyHeading {
	text-align: left;
}

.subscriptionPanel__historyCount,
.subscriptionPanel__historyNote,
.subscriptionPanel__attempt {
	color: var(--text-secondary);
}

.subscriptionPanel__historySkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.subscriptionPanel__periods {
	display: grid;
}

.subscriptionPanel__period {
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto auto;
	grid-template-areas:
		'subscriptionPanel_range subscriptionPanel_amount subscriptionPanel_state'
		'subscriptionPanel_attempt subscriptionPanel_attempt subscriptionPanel_attempt';
	align-items: baseline;
	gap: var(--gap-hairline) var(--gap-stack);
	padding: var(--pad-row) 0;
	border-top: var(--border-shorthand);
}

.subscriptionPanel__period:first-child {
	border-top: none;
	padding-top: 0;
}

.subscriptionPanel__period:last-child {
	padding-bottom: 0;
}

.subscriptionPanel__periodRange {
	grid-area: subscriptionPanel_range;
	min-width: 0;
}

.subscriptionPanel__periodAmount {
	grid-area: subscriptionPanel_amount;
	font-weight: var(--font-weight-medium);
}

.subscriptionPanel__periodStatus {
	grid-area: subscriptionPanel_state;
	padding: 0 var(--pad-dense);
	border-radius: var(--radius-pill);
	font-size: var(--font-size-caption);
	background: var(--surface-sunken);
	color: var(--text-secondary);
}

.subscriptionPanel__periodStatus-paid {
	color: var(--text-success);
}

.subscriptionPanel__periodStatus-partial {
	color: var(--text-partial);
}

.subscriptionPanel__attempt {
	grid-area: auto / 1 / auto / -1;
}

:root[data-viewport="phone"] .subscriptionPanel__statRow {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .subscriptionPanel__period {
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		'subscriptionPanel_range subscriptionPanel_amount'
		'subscriptionPanel_state subscriptionPanel_state'
		'subscriptionPanel_attempt subscriptionPanel_attempt';
}

:root[data-viewport="phone"] .subscriptionPanel__periodStatus {
	justify-self: start;
}

/**
* receivedInvoicePanel.css — the received-invoice detail panel (#2271): the clientPanel.css
* shape (header row over a scrolling body), the equal-column stat row (one column in the
* phone band) and the embedded InvoicePanel document sized by its content rather than the
* viewport (the invoicePreview.css precedent).
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-10 Initial Version (#2271)
*/

.receivedInvoicePanel__view {
	display: grid;
	grid-template-rows: auto minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gap-stack);
	height: 100%;
	width: 100%;
	align-content: start;
}

.receivedInvoicePanel__header {
	display: grid;
	grid-template-columns: auto minmax(0, 1fr) auto;
	align-items: center;
	gap: var(--gap-inline);
	padding-bottom: var(--pad-row);
	border-bottom: var(--border-shorthand);
}

.receivedInvoicePanel__headerSkeleton {
	padding-bottom: var(--pad-row);
	border-bottom: var(--border-shorthand);
}

.receivedInvoicePanel__identity {
	display: grid;
	gap: var(--gap-hairline);
	min-width: 0;
}

.receivedInvoicePanel__nameRow {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--gap-inline);
	min-width: 0;
}

.receivedInvoicePanel__seller {
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.receivedInvoicePanel__invoiceDate {
	color: var(--text-secondary);
}

.receivedInvoicePanel__openDocumentButton {
	align-self: center;
	white-space: nowrap;
}

.receivedInvoicePanel__body {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	width: 100%;
	min-height: 0;
}

.receivedInvoicePanel__statRow {
	flex: none;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
	gap: var(--gap-stack);
	width: 100%;
}

.receivedInvoicePanel__stat {
	display: grid;
	align-content: start;
	row-gap: var(--gap-dense);
	padding: var(--pad-card);
	min-width: 0;
}

.receivedInvoicePanel__statLabel {
	color: var(--text-secondary);
}

.receivedInvoicePanel__statValue {
	font-weight: var(--font-weight-heading);
	font-variant-numeric: tabular-nums;
	overflow-wrap: anywhere;
}

.receivedInvoicePanel__statValue-outstanding {
	color: var(--text-warning);
}

.receivedInvoicePanel__statValue-settled {
	color: var(--text-success);
}

.receivedInvoicePanel__document {
	flex: none;
	border: var(--border-shorthand);
	border-radius: var(--radius-card);
	overflow-x: auto;
	overflow-y: hidden;
}

.receivedInvoicePanel__document .invoicePanel__view {
	height: auto;
	overflow: visible;
}

.receivedInvoicePanel__documentSkeleton {
	flex: none;
}

:root[data-viewport="phone"] .receivedInvoicePanel__header {
	grid-template-columns: auto minmax(0, 1fr);
}

:root[data-viewport="phone"] .receivedInvoicePanel__openDocumentButton {
	grid-column: 1 / -1;
	width: 100%;
	min-height: var(--touch-target-primary);
}

:root[data-viewport="phone"] .receivedInvoicePanel__statRow {
	grid-template-columns: repeat(2, minmax(0, 1fr));
}

/**
* projectPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-April-07 Initial Version
*/

.projectPanel__listSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.projectPanel__view {
	display: grid;
	gap: var(--gap-stack);
	grid-template-rows: auto auto minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	height: 100%;
	width: 100%;
}

.projectPanel__diagrams,
.projectPanel__taskTiles,
.projectPanel__teamMembers {
	min-height: 0;
}

.projectPanel__dataContainer {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	min-height: 0;
}

.projectPanel__dataContainer__statRow {
	flex: none;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: var(--gap-stack);
}

.projectPanel__dataContainer__child {
	min-width: 0;
}

.projectPanel__dataContainer__contentGrid,
.projectPanel__dataContainer__contentSkeleton {
	display: grid;
	grid-template-areas:
		'projectPanel_description projectPanel_description'
		'projectPanel_activeTasks projectPanel_workingNow';
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	grid-template-rows: auto 1fr;
	flex: none;
}

.projectPanel__dataContainer__contentSkeleton {
	overflow: hidden;
}

.projectPanel__dataContainer__contentSkeleton > .skeletonCard {
	border-radius: 0;
}

.projectPanel__dataContainer__description {
	grid-area: projectPanel_description;
}

.projectPanel__dataContainer__activeTasks {
	grid-area: projectPanel_activeTasks;
}

.projectPanel__dataContainer__workingNow {
	grid-area: projectPanel_workingNow;
}

.projectPanel__files,
.projectPanel__board {
	min-height: 0;
}

:root[data-viewport="phone"] .projectPanel__dataContainer__statRow {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .projectPanel__dataContainer__contentGrid,
:root[data-viewport="phone"] .projectPanel__dataContainer__contentSkeleton {
	grid-template-areas:
		'projectPanel_description'
		'projectPanel_activeTasks'
		'projectPanel_workingNow';
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto auto auto;
}

/**
* taskPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-Jun-08 Initial Version
*/

.taskPanel__listSkeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.taskPanel__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	grid-template-columns: minmax(0, 1fr);
	gap: var(--gap-stack);
	height: 100%;
	width: 100%;
	align-content: start;
}

.taskPanel__dataContainer {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	width: 100%;
	min-height: 0;
}

.taskPanel__dataContainer__statRow {
	flex: none;
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: var(--gap-stack);
	width: 100%;
}

.taskPanel__dataContainer__child {
	min-width: 0;
}

.taskPanel__dataContainer__contentGrid,
.taskPanel__dataContainer__contentSkeleton {
	display: grid;
	grid-template-areas:
		'taskPanel_dataContainer_description taskPanel_dataContainer_description'
		'taskPanel_dataContainer_statusTimeline taskPanel_dataContainer_assigneeLoad';
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	grid-template-rows: auto 1fr;
	flex: none;
}

.taskPanel__dataContainer__contentSkeleton {
	overflow: hidden;
}

.taskPanel__dataContainer__contentSkeleton > .skeletonCard {
	border-radius: 0;
}

.taskPanel__dataContainer__description {
	grid-area: taskPanel_dataContainer_description;
}

.taskPanel__dataContainer__statusTimeline {
	grid-area: taskPanel_dataContainer_statusTimeline;
	min-height: 0;
}

.taskPanel__dataContainer__assigneeLoad {
	grid-area: taskPanel_dataContainer_assigneeLoad;
	min-height: 0;
}


.taskPanel__files {
	min-height: 0;
}

.taskPanel__timeSection,
.taskPanel__board {
	min-height: 0;
}

:root[data-viewport="phone"] .taskPanel__dataContainer__statRow {
	grid-template-columns: minmax(0, 1fr);
}

:root[data-viewport="phone"] .taskPanel__dataContainer__contentGrid,
:root[data-viewport="phone"] .taskPanel__dataContainer__contentSkeleton {
	grid-template-areas:
		'taskPanel_dataContainer_description'
		'taskPanel_dataContainer_statusTimeline'
		'taskPanel_dataContainer_assigneeLoad';
	grid-template-columns: minmax(0, 1fr);
	grid-template-rows: auto auto auto;
}

:root[data-viewport="phone"] .taskPanel__dataContainer__statusTimeline {
	border-right: none;
	border-bottom: var(--border-shorthand);
}

/**
* taskManagementProfile.css
* @author Louis O. Flores <louis.flores@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-20 Initial Version
*/

.taskManagementProfile__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
	border-radius: var(--radius-button);
}

.taskManagementProfile__mainPanel {
	width: 100%;
	height: 100%;
	background-color: var(--surface-page);
	padding: var(--pad-page);
}

/**
* settingsPanel.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-July-28 Initial Version
*/

.settingsPanel__view {
	display: grid;
	gap: var(--gap-inline);
	height: 100%;
}

.settingsPanel__contentContainer {
	display: grid;
	grid-template-rows: minmax(0, 1fr);
	gap: var(--gap-section);
	overflow: hidden;
	background-color: var(--surface-page);
	background-image: var(--surface-page-backdrop, none);
	background-repeat: var(--surface-page-backdrop-repeat, no-repeat);
	background-size: var(--surface-page-backdrop-size, cover);
	border-radius: var(--radius-button);
	padding: var(--pad-page);
	position: relative;
}

.settingsPanel__contentContainer-sideBySide {
	grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
}

.settingsPanel__leftPanel {
	height: 100%;
	width: 100%;
	grid-column: 1 / 2;
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	align-items: start;
}

.settingsPanel__rightPanel {
	height: 100%;
	grid-column: 2 / -1;
}

.settingsPanel__tile {
	width: 100%;
}

/**
* paymentsPanel.css
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-August-10 Initial Version
*/

.paymentsPanel__grid {
	display: grid;
	grid-template-rows: repeat(4, auto) 1fr;
	gap: var(--gap-section);
}

.paymentsPanel__grid-hud {
	grid-template-rows: repeat(5, auto) 1fr;
}

.paymentsPanel__hudMasthead {
	padding-bottom: var(--pad-cell);
	border-bottom: .1rem solid var(--border-default);
}

.paymentsPanel__hudSection {
	display: grid;
	gap: var(--gap-tight);
}

.paymentsPanel__hudIndex {
	display: flex;
	align-items: center;
	gap: var(--gap-inline);
	color: var(--text-primary);
}

.paymentsPanel__hudIndex::before {
	content: "";
	width: 1.8rem;
	height: .2rem;
	background: var(--brand-accent);
}

.paymentsPanel__verifyPrompt {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--gap-stack);
	background: var(--surface-raised);
	border: .1rem solid var(--border-default);
	border-radius: var(--radius-card);
	padding: var(--pad-card);
	box-shadow: var(--elevation-raised);
}

.paymentsPanel__verifyText {
	flex: 1 1 24rem;
}

.paymentsPanel__verifyButton {
	min-height: var(--touch-target-primary);
}

.paymentsPanel__notice {
	padding: var(--pad-card);
}

.paymentsPanel__planCard,
.paymentsPanel__section {
	background: var(--surface-raised);
	border: .1rem solid var(--border-default);
	border-radius: var(--radius-card);
	padding: var(--pad-card);
	box-shadow: var(--elevation-raised);
}

:root[data-viewport="phone"] .paymentsPanel__view {
	padding: var(--pad-page);
}

:root[data-viewport="phone"] .paymentsPanel__hudMasthead {
	display: flex;
	align-items: center;
	min-height: var(--touch-target-primary);
	padding-inline-start: var(--touch-target-primary);
}

/**
* showroom.css — an isolated, themeable showroom and its onboarding plates
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* The page holds no palette of its own. One `:root[data-shell='landing']` block aliases
* the sheet, inks, rules, signal, faces, radii and stroke onto the real role tokens,
* which the applied theme states; the era IS the applied theme (`data-theme`), forced to
* Modern, Retro or Futuristic for every visitor (locked decision 13). The one axis the
* aliases still fork on is `data-mode`, and it forks two roles only: `--ground-well`
* rises toward its band and `--seam` strengthens, because a recessed ground and a
* hairline both read weaker in dark than the same step reads in light. The plate is NOT
* one of them any more — it follows the theme in both modes.
* The stage palette is minted in themes/{modern,retro,futuristic}.css, not
* here, since a `[data-theme` selector outside themes/ is a decision-0014 violation.
* Of the four `--stage-*` roles the 3D scene reads exactly ONE off its canvas,
* `--stage-ground`; the other three — `--stage-plate-ink`, `--stage-prop` and
* `--stage-prop-lit` — are read by CSS alone.
* Every length is rem against the app's 10px root; the mockup's 16px-root values were
* rescaled x1.6 on graduation. Width bands use data-viewport. The one carve-out is the
* hero wordmark, sized in `em` because it is part of the `clamp()`-ed title rather than a
* box beside it — landing-page.md § the arc states why.
* Two class names outlived the concept they were written for: `.section__tag` and
* `.eyebrow` styled the decorative labels above each section, and the re-dress retired all
* of them but two. `.section__tag` now has exactly ONE writer — the welcome deck's
* `Card 01 of 05` counter — and `.eyebrow` exactly one, the demo's category line. Read the
* rules below as those two elements' rules, not as a family's.
*
* @version 2026-September-19 Pin the mode control and reserve mobile stage clearance (#2486)
*/

:root[data-shell='landing'] {
	--sheet: var(--surface-page);
	--ink: var(--text-primary);
	--ink-quiet: var(--text-secondary);
	--ink-rule: var(--border-default);
	--rule-strong: var(--border-strong);
	--signal: var(--brand-accent);
	--on-signal: var(--text-on-brand);
	--plate: var(--ground-raise);
	--on-plate: var(--ink);
	--on-plate-quiet: var(--ink-quiet);
	--on-plate-danger: var(--text-danger);
	--plate-edge: var(--seam);
	--stencil: var(--font-display);
	--telling: var(--font-body);
	--gauge: var(--font-mono);
	--eyebrow-face: var(--font-mono);
	--eyebrow-case: var(--landing-eyebrow-case, none);
	--display-weight: var(--font-weight-display);
	--display-tracking: var(--letter-spacing-display);
	--display-tracking-wide: .12em;
	--radius-capsule: var(--radius-pill);
	--radius-module: var(--radius-card);
	--radius-slab: var(--radius-sheet);
	--radius-plate: var(--radius-sheet);
	--radius-field: var(--radius-input);
	--stroke: var(--border-width);
	--page-max: 144rem;
	--page-gutter: 3.2rem;
	--ground-well: color-mix(in srgb, var(--ink) 5%, var(--sheet));
	--ground-raise: var(--surface-card);
	--seam: color-mix(in srgb, var(--ink) 9%, transparent);
	--lift-rest: var(--elevation-raised);
	--lift-hover: var(--elevation-surround);
	--measure: 66ch;
}

:root[data-shell='landing'][data-mode='dark'] {
	--ground-well: color-mix(in srgb, var(--ink) 6%, var(--sheet));
	--seam: color-mix(in srgb, var(--ink) 14%, transparent);
}

/* ============ the floor and its five movements ============ */

:root[data-shell='landing'] {
	background: var(--sheet);
	color: var(--ink);
	font-family: var(--telling);
	scroll-behavior: smooth;
	scroll-padding-top: 9.6rem;
}

:root[data-shell='landing'] :is(button, input) { font: inherit; }
:root[data-shell='landing'] :is(button, a, input) { -webkit-tap-highlight-color: transparent; }
:root[data-shell='landing'] :is(button, a) { touch-action: manipulation; }
:root[data-shell='landing'] button { appearance: none; margin: 0; padding: 0; border: 0; background: none; cursor: pointer; color: inherit; }
:root[data-shell='landing'] a { color: inherit; text-underline-offset: .2em; }
:root[data-shell='landing'] :is(img, canvas) { display: block; max-width: 100%; }
:root[data-shell='landing'] :is(button, input, select, fieldset, figure, dl) { min-width: 0; }
:root[data-shell='landing'] [hidden] { display: none !important; }

:root[data-shell='landing'] ::selection { background: var(--signal); color: var(--on-signal); }
:root[data-shell='landing'] { caret-color: var(--signal); accent-color: var(--signal); }
:root[data-shell='landing'] :focus-visible { outline: var(--focus-ring-width) solid var(--signal); outline-offset: .32rem; }
:root[data-shell='landing'] { scrollbar-color: color-mix(in srgb, var(--ink) 30%, transparent) transparent; }

:root[data-shell='landing'] .masthead {
	position: sticky;
	top: 0;
	z-index: 5;
	background: var(--sheet);
	border-bottom: var(--stroke) solid var(--ink-rule);
}

:root[data-shell='landing'] .masthead__row {
	max-width: var(--page-max);
	margin: 0 auto;
	padding: max(1.6rem, env(safe-area-inset-top)) max(var(--page-gutter), env(safe-area-inset-right)) 1.6rem max(var(--page-gutter), env(safe-area-inset-left));
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2.4rem;
}

:root[data-shell='landing'] .masthead__brand {
	display: flex;
	align-items: center;
	gap: 1.04rem;
	font-family: var(--stencil);
	font-weight: var(--display-weight);
	font-size: var(--font-size-subheading);
	letter-spacing: var(--display-tracking);
	text-decoration: none;
	margin-left: -1.04rem;
	padding: .64rem 1.04rem;
	border-radius: var(--radius-field);
	transition: background-color var(--motion-fast) var(--ease-standard);
}

:root[data-shell='landing'] .masthead__brand:hover { background: color-mix(in srgb, var(--ink) 7%, transparent); }
:root[data-shell='landing'] .masthead__brand > span:first-child { font-size: var(--font-size-stat); line-height: 1; }
:root[data-shell='landing'] .masthead__nav { display: flex; align-items: center; gap: .64rem; margin-left: auto; }
:root[data-shell='landing'] .masthead__nav > button { display: inline-flex; align-items: center; min-height: 4.4rem; padding: 0 1.44rem; border-radius: var(--radius-capsule); font-size: var(--font-size-caption); font-weight: 500; text-decoration: none; transition: background-color var(--motion-fast) var(--ease-standard); }
:root[data-shell='landing'] .masthead__nav > button:not(.button):hover { background: color-mix(in srgb, var(--ink) 8%, transparent); }

:root[data-shell='landing'] .quiet-button {
	border: var(--stroke) solid var(--rule-strong);
	background: transparent;
	padding: 1.04rem 1.92rem;
	border-radius: var(--radius-capsule);
	font-family: var(--telling);
	font-size: var(--font-size-body);
	font-weight: 600;
	line-height: 1.4;
	min-height: 4.8rem;
}

:root[data-shell='landing'] .quiet-button:hover:not(:disabled) {
	background: color-mix(in srgb, currentColor 8%, transparent);
}

:root[data-shell='landing'] .quiet-button:disabled {
	border-color: color-mix(in srgb, currentColor 22%, transparent);
	color: color-mix(in srgb, currentColor 45%, transparent);
	cursor: not-allowed;
}

:root[data-shell='landing'] .button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 1.28rem;
	padding: 1.44rem 2.24rem;
	min-height: 4.8rem;
	border: var(--stroke) solid transparent;
	border-radius: var(--radius-capsule);
	background: var(--signal);
	color: var(--on-signal);
	font-family: var(--telling);
	font-size: var(--font-size-body);
	font-weight: 600;
	line-height: 1.4;
	text-align: center;
	text-decoration: none;
	overflow-wrap: anywhere;
}

:root[data-shell='landing'] .button:hover { filter: brightness(1.12); }
:root[data-shell='landing'] .button:active { transform: translateY(.128rem); }

:root[data-shell='landing'] .section {
	position: relative;
	max-width: var(--page-max);
	margin: 0 auto;
	padding: 8rem var(--page-gutter);
}

:root[data-shell='landing'] .section__tag, :root[data-shell='landing'] .eyebrow {
	display: block;
	font-family: var(--eyebrow-face);
	font-size: var(--font-size-label);
	font-weight: 400;
	letter-spacing: var(--display-tracking-wide);
	line-height: 1.65;
	text-transform: var(--eyebrow-case);
	color: var(--ink-quiet);
}

:root[data-shell='landing'] .section__tag { margin-bottom: 2.88rem; }
:root[data-shell='landing'] .heading { text-align: start; white-space: normal; }
:root[data-shell='landing'] .stringNode { width: auto; }
:root[data-shell='landing'] .section__heading, :root[data-shell='landing'] .hero__title, :root[data-shell='landing'] .state-plate h1, :root[data-shell='landing'] .state-plate h2 {
	font-family: var(--stencil);
	font-weight: var(--display-weight);
	letter-spacing: var(--display-tracking);
	line-height: 1.04;
	text-wrap: balance;
}

/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'] .section__heading { font-size: clamp(3.68rem, 3.6dvw, 5.84rem); max-width: 18ch; }
:root[data-shell='landing'] .section__lede { margin-top: 1.92rem; max-width: var(--measure); font-size: var(--font-size-subheading); line-height: 1.65; color: var(--ink-quiet); text-wrap: pretty; }
:root[data-shell='landing'] .section__lede, :root[data-shell='landing'] .state-plate > p { overflow-wrap: anywhere; }
:root[data-shell='landing'] .section__lede strong { color: var(--ink); font-weight: 600; }

:root[data-shell='landing'] .arc { overflow-x: clip; }

:root[data-shell='landing'] .showroom-overture {
	background: var(--ground-raise);
	border-bottom: var(--stroke) solid var(--seam);
}

:root[data-shell='landing'] .showroom-floor {
	display: grid;
	grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
	align-items: start;
	gap: 3.84rem;
	max-width: var(--page-max);
	margin: 0 auto;
	padding: 4.8rem var(--page-gutter) 0;
}

:root[data-shell='landing'] .showroom-story { min-width: 0; }
:root[data-shell='landing'] .showroom-story .section { padding-top: 4.8rem; padding-left: 0; padding-right: 0; }
:root[data-shell='landing'] .showroom-story [data-slot] + [data-slot] .section, :root[data-shell='landing'] .showroom-story .section + .section { border-top: var(--stroke) solid var(--ink-rule); }
:root[data-shell='landing'] .hero { min-height: 0; display: flex; flex-direction: column; justify-content: center; padding-top: 9.6rem; padding-bottom: 9.6rem; }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'] .hero__title { font-size: clamp(4.64rem, 7dvw, 11.2rem); max-width: 14ch; text-align: start; }
:root[data-shell='landing'] .hero__wordmark { display: block; width: min(100%, 6.4em); margin-bottom: .28em; }
:root[data-shell='landing'] .name-origin { margin-top: 2.88rem; }
:root[data-shell='landing'] .name-origin__sound { display: flex; flex-wrap: wrap; align-items: baseline; gap: .96rem 1.6rem; color: var(--ink-quiet); font-size: var(--font-size-body); line-height: 1.6; }
:root[data-shell='landing'] .name-origin__sound > :first-child { font-family: 'Inter', sans-serif; font-size: var(--font-size-lead); }
:root[data-shell='landing'] .name-origin__sound > :last-child { font-family: var(--gauge); font-size: var(--font-size-label); letter-spacing: .035em; }
:root[data-shell='landing'] .name-origin__parts { display: grid; grid-template-columns: 1fr 1.4fr; margin: 1.76rem 0 0; max-width: 40rem; border-top: var(--stroke) solid var(--ink-rule); padding-top: 1.6rem; }
:root[data-shell='landing'] .name-origin__parts > div + div { border-left: var(--stroke) solid var(--ink-rule); padding-left: 2.08rem; }
:root[data-shell='landing'] .name-origin__parts dt { font-family: var(--stencil); font-size: var(--font-size-heading); font-weight: var(--display-weight); letter-spacing: -.025em; }
:root[data-shell='landing'] .name-origin__parts dt::after { content: ''; display: block; width: 2.4rem; height: .24rem; margin: .8rem 0; background: var(--signal); }
:root[data-shell='landing'] .name-origin__parts dd { margin: 0; font-size: var(--font-size-caption); line-height: 1.6; }
:root[data-shell='landing'] .hero__intro { margin-top: 2.88rem; font-size: var(--font-size-lead); line-height: 1.8; }
:root[data-shell='landing'] .hero__copy { max-width: 76.8rem; }
:root[data-shell='landing'] .scene-name { display: grid; gap: .88rem; margin-bottom: 4.8rem; max-width: 44.8rem; min-width: 0; }
:root[data-shell='landing'] .scene-name > label { font-family: var(--stencil); font-size: var(--font-size-subheading); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); line-height: 1.3; }
:root[data-shell='landing'] .scene-name__input {
	width: 100%;
	min-width: 0;
	min-height: 5.76rem;
	padding: 1.36rem 1.76rem;
	border: var(--stroke) solid var(--rule-strong);
	border-radius: var(--radius-field);
	background: var(--sheet);
	color: var(--ink);
	font-family: var(--stencil);
	font-size: var(--font-size-subheading);
	font-weight: var(--display-weight);
	letter-spacing: var(--display-tracking);
	line-height: 1.3;
}
:root[data-shell='landing'] .scene-name__input::placeholder { color: var(--ink-quiet); font-weight: 400; }
:root[data-shell='landing'] .scene-name__input:hover { border-color: var(--ink); }
:root[data-shell='landing'] .scene-name__input:focus-visible { border-color: var(--signal); outline-color: var(--signal); }
:root[data-shell='landing'] .scene-name__hint { font-size: var(--font-size-caption); line-height: 1.7; color: var(--ink-quiet); }

:root[data-shell='landing'] input::placeholder { color: var(--ink-quiet); }

:root[data-shell='landing'] .showroom-preview {
	position: sticky;
	top: calc(var(--masthead-height, 9.6rem) + 1.6rem);
	margin: 0 0 8rem;
	align-self: start;
	min-width: 0;
}

:root[data-shell='landing'] .showroom-stage {
	margin: 0;
	min-width: 0;
	overflow: hidden;
	background: var(--stage-ground, var(--surface-page));
	color: var(--stage-plate-ink, var(--text-primary));
	border: var(--stroke) solid color-mix(in srgb, var(--stage-prop, var(--border-default)) 28%, var(--stage-ground, var(--surface-page)));
	border-radius: var(--radius-slab);
}

:root[data-shell='landing'] .showroom-stage__canvas { width: 100%; height: 0; min-height: 0; flex: 1; }
:root[data-shell='landing'] .showroom-stage__status { font-family: var(--gauge); font-size: var(--font-size-label); color: var(--stage-prop-lit); letter-spacing: .04em; }

:root[data-shell='landing'] .bridge { padding-top: 4.16rem; margin-top: 4.16rem; border-top: var(--stroke) solid var(--ink-rule); font-family: var(--stencil); font-size: var(--font-size-subheading); line-height: 1.6; letter-spacing: var(--display-tracking); }

/* ============ the rooms and their native controls ============ */

:root[data-shell='landing'] .trade-picker { display: grid; gap: 3.04rem; }
:root[data-shell='landing'] .trade-family { min-width: 0; padding: 1.76rem; border: var(--stroke) solid var(--rule-strong); border-radius: var(--radius-module); }
:root[data-shell='landing'] .trade-family legend { width: auto; padding: 0 .8rem; margin-left: -.8rem; margin-bottom: .56rem; font-family: var(--stencil); font-size: var(--font-size-subheading); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); }
:root[data-shell='landing'] .trade-family > p { color: var(--ink-quiet); font-size: var(--font-size-caption); line-height: 1.75; margin-bottom: 1.28rem; }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'] .showroom-story__lead { margin-bottom: 3.2rem; font-size: clamp(2.88rem, 2.7dvw, 4rem); max-width: 24ch; }
:root[data-shell='landing'] .trade-family__spaces { display: grid; grid-template-columns: repeat(auto-fit, minmax(17.6rem, 1fr)); gap: 1.04rem; }
:root[data-shell='landing'] .trade-family__spaces > .trade-option:last-child:nth-child(n + 3) { grid-column: 1 / -1; }
:root[data-shell='landing'] .trade-family__spaces > .trade-option:last-child:nth-child(n + 3) > span strong { font-family: var(--telling); font-size: inherit; font-weight: 500; color: var(--ink-quiet); }
:root[data-shell='landing'] .trade-option > input:checked + span strong { color: inherit; }
:root[data-shell='landing'] .trade-family--properties .trade-family__spaces { grid-template-columns: minmax(0, 1fr); }
:root[data-shell='landing'] .trade-family > .trade-family__note { margin: 1.36rem 0 0; color: var(--ink-quiet); font-size: var(--font-size-label); line-height: 1.7; }
:root[data-shell='landing'] .trade-more { border-top: var(--stroke) solid var(--ink-rule); padding-top: 2.4rem; }
:root[data-shell='landing'] .trade-more > summary { display: grid; gap: .72rem; padding: .48rem 0; list-style: none; cursor: pointer; }
:root[data-shell='landing'] .trade-more > summary::-webkit-details-marker { display: none; }
:root[data-shell='landing'] .trade-more__label { display: flex; align-items: center; gap: .96rem; font-family: var(--stencil); font-size: var(--font-size-subheading); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); }
:root[data-shell='landing'] .trade-more__label::after { content: ''; width: .8rem; height: .8rem; border-right: .192rem solid currentColor; border-bottom: .192rem solid currentColor; rotate: 45deg; translate: 0 -.192rem; transition: rotate .2s ease; }
:root[data-shell='landing'] .trade-more[open] > summary .trade-more__label::after { rotate: -135deg; translate: 0 .192rem; }
:root[data-shell='landing'] .trade-more__hint { max-width: 46ch; font-size: var(--font-size-caption); line-height: 1.7; color: var(--ink-quiet); }
:root[data-shell='landing'] .trade-more > summary:hover .trade-more__label { color: var(--signal); }
:root[data-shell='landing'] .trade-more > summary:focus-visible { outline: var(--focus-ring-width) solid var(--signal); outline-offset: .48rem; border-radius: var(--radius-field); }
:root[data-shell='landing'] .trade-more__families { display: grid; gap: 3.04rem; margin-top: 2.56rem; }
:root[data-shell='landing'] .trade-option { position: relative; display: flex; align-items: stretch; min-width: 0; cursor: pointer; }
:root[data-shell='landing'] .trade-option > input, :root[data-shell='landing'] .swatch > input { position: absolute; inset: 0; margin: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
:root[data-shell='landing'] .trade-option > span { width: 100%; display: flex; flex-direction: column; justify-content: center; gap: .4rem; min-height: 5.12rem; padding: 1.44rem; border: var(--stroke) solid var(--ink-rule); border-radius: var(--radius-module); font-size: var(--font-size-caption); line-height: 1.5; }
:root[data-shell='landing'] .trade-option > span { pointer-events: none; }
:root[data-shell='landing'] .trade-option > span small { color: var(--ink-quiet); font-size: var(--font-size-caption); line-height: 1.75; }
:root[data-shell='landing'] .trade-option > span { transition: border-color var(--motion-fast) var(--ease-standard), background-color var(--motion-fast) var(--ease-standard), transform var(--motion-base) var(--ease-standard); }
:root[data-shell='landing'] .trade-option:hover > span { border-color: var(--rule-strong); background: var(--ground-raise); transform: translateY(-.2rem); }
:root[data-shell='landing'] .trade-option > input:checked + span { background: var(--signal); color: var(--on-signal); border-color: var(--ink); }
:root[data-shell='landing'] .trade-option > input:checked + span small { color: inherit; }
:root[data-shell='landing'] .trade-option > input:focus-visible + span { outline: var(--focus-ring-width) solid var(--signal); outline-offset: .32rem; }
:root[data-shell='landing'] .scale-claim { margin-top: 4.48rem; padding: 3.52rem 3.84rem; border: var(--stroke) solid var(--seam); border-radius: var(--radius-slab); background: var(--ground-raise); box-shadow: var(--lift-rest); font-size: var(--font-size-lead); line-height: 1.8; }
:root[data-shell='landing'] .scale-claim strong { display: block; font-family: var(--stencil); font-size: clamp(2.4rem, 2.2dvw, 3.2rem); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); line-height: 1.24; margin-bottom: 1.6rem; text-wrap: balance; } /* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */

/* ============ the shared job and the look rail ============ */


:root[data-shell='landing'] .theme-picker { margin-top: 1.84rem; }
:root[data-shell='landing'] .theme-picker > h3 { font-family: var(--telling); font-size: var(--font-size-label); font-weight: 500; }
:root[data-shell='landing'] .theme-rail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1.04rem; margin-top: 1.12rem; }
:root[data-shell='landing'] .swatch { display: block; position: relative; min-width: 0; cursor: pointer; }
:root[data-shell='landing'] .swatch__face { display: flex; flex-direction: column; gap: 1.12rem; min-height: 14.4rem; height: 100%; padding: 1.2rem; border: .2rem solid transparent; border-radius: var(--sw-radius, var(--radius-module)); background: var(--sw-ground, var(--sheet)); color: var(--sw-ink, var(--ink)); box-shadow: 0 0 0 .1rem var(--ink-rule); } /* intentional literal: the swatch selection rings here and below are flat outlines drawn as shadows so they cost no layout — not depth cues, and no --elevation-* rung is a ring */
:root[data-shell='landing'] .swatch__name { font-family: var(--sw-display, var(--stencil)); font-size: var(--font-size-body); font-weight: var(--sw-weight, var(--display-weight)); letter-spacing: var(--sw-tracking, var(--display-tracking)); }
:root[data-shell='landing'] .swatch__sample { display: flex; flex-direction: column; gap: .96rem; margin-top: auto; font-family: var(--sw-display, var(--stencil)); font-size: var(--font-size-body); font-weight: var(--sw-weight, var(--display-weight)); line-height: 1.35; letter-spacing: var(--sw-tracking, var(--display-tracking)); overflow-wrap: anywhere; }
:root[data-shell='landing'] .swatch__sample::after { content: ''; display: block; width: 42%; height: 1.12rem; border-radius: var(--sw-capsule, var(--radius-capsule)); background: var(--sw-signal, var(--signal)); }
:root[data-shell='landing'] .swatch > input:checked + .swatch__face { border-color: var(--sw-ink, var(--ink)); box-shadow: 0 0 0 .2rem var(--sheet), 0 0 0 .3rem var(--ink); }
:root[data-shell='landing'] .swatch > input:focus-visible + .swatch__face { outline: var(--focus-ring-width) solid var(--ink); outline-offset: .56rem; }
:root[data-shell='landing'] .swatch__face { pointer-events: none; }
:root[data-shell='landing'] .swatch__face { transition: transform var(--motion-base) var(--ease-standard), box-shadow var(--motion-base) var(--ease-standard); }
:root[data-shell='landing'] .swatch:not(.swatch--placeholder):hover .swatch__face { transform: translateY(-.4rem); box-shadow: 0 0 0 .1rem var(--ink-rule), var(--lift-hover); }
:root[data-shell='landing'] .swatch--placeholder { cursor: default; }
:root[data-shell='landing'] .swatch--placeholder > input { cursor: default; }
:root[data-shell='landing'] .swatch--placeholder .swatch__face { border: var(--stroke) dashed var(--rule-strong); border-radius: var(--radius-module); background: color-mix(in srgb, var(--ink) 3%, var(--sheet)); color: var(--ink-quiet); box-shadow: none; }
:root[data-shell='landing'] .swatch__skeleton { display: grid; gap: .64rem; margin-top: auto; }
:root[data-shell='landing'] .swatch__skeleton i { display: block; height: .56rem; width: 80%; border-radius: var(--radius-field); background: color-mix(in srgb, var(--ink) 10%, transparent); }
:root[data-shell='landing'] .swatch__skeleton i:first-child { width: 45%; height: 1.2rem; margin-bottom: .32rem; }
:root[data-shell='landing'] .swatch__skeleton i:last-child { width: 60%; }
:root[data-shell='landing'] .swatch__placeholder-copy { font-size: var(--font-size-label); line-height: 1.55; }
:root[data-shell='landing'] .swatch__placeholder-copy strong { color: var(--ink); font-weight: 700; }

/* ============ the price and the open door ============ */

:root[data-shell='landing'] .price { border-top: var(--stroke) solid var(--ink-rule); }
:root[data-shell='landing'] .price > .section__heading { max-width: 19ch; }
:root[data-shell='landing'] .price__kicker { font-family: var(--stencil); font-weight: var(--display-weight); font-size: var(--font-size-stat); letter-spacing: var(--display-tracking); margin-top: 1.6rem; }
:root[data-shell='landing'] .price__rows { max-width: 92.8rem; margin-top: 4.8rem; border-top: var(--stroke) solid var(--seam); }
:root[data-shell='landing'] .price__row { display: flex; justify-content: space-between; gap: 2.4rem; align-items: baseline; padding: 2.24rem 0; border-bottom: var(--stroke) solid var(--seam); font-size: var(--font-size-subheading); line-height: 1.5; }
:root[data-shell='landing'] .price__row > :last-child { font-family: var(--stencil); font-size: var(--font-size-heading); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); font-variant-numeric: tabular-nums; white-space: nowrap; }
:root[data-shell='landing'] .price__payments { position: relative; max-width: 92.8rem; margin-top: 4.48rem; padding: 3.84rem; border: var(--stroke) solid var(--seam); border-radius: var(--radius-slab); background: var(--ground-raise); box-shadow: var(--lift-rest); }
:root[data-shell='landing'] .price__optional {
	position: absolute;
	top: 0;
	inset-inline-end: 2.4rem;
	translate: 0 -50%;
	padding: .48rem 1.28rem;
	border: var(--stroke) solid var(--seam);
	border-radius: var(--radius-capsule);
	background: var(--sheet);
	color: var(--ink-quiet);
	font-family: var(--telling);
	font-size: var(--font-size-label);
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: var(--display-tracking-wide);
	text-transform: uppercase;
}

:root[data-shell='landing'] .price__payments > h3 { font-family: var(--stencil); font-size: clamp(2.4rem, 2.2dvw, 3.2rem); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); line-height: 1.24; } /* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'] .price__payments p { max-width: var(--measure); margin-top: 1.76rem; font-size: var(--font-size-lead); line-height: 1.75; color: var(--ink-quiet); }
:root[data-shell='landing'] .price__offer { margin-top: 2.88rem; border-top: var(--stroke) solid var(--seam); }
:root[data-shell='landing'] .price__offer .price__row:last-child { border-bottom: 0; }
:root[data-shell='landing'] .price__payments .price__offer-note { font-size: var(--font-size-caption); line-height: 1.75; }
:root[data-shell='landing'] .price__fine { max-width: var(--measure); margin-top: 2.4rem; font-size: var(--font-size-caption); line-height: 1.85; color: var(--ink-quiet); }
:root[data-shell='landing'] .price__fine p + p { margin-top: .96rem; }

:root[data-shell='landing'] .begin { padding-top: 3.2rem; }
:root[data-shell='landing'] .begin__plate, :root[data-shell='landing'] .state-plate { padding: 5.12rem; border: var(--stroke) solid var(--plate-edge); border-radius: var(--radius-plate); background: var(--plate); color: var(--on-plate); box-shadow: var(--lift-hover); }
:root[data-shell='landing'] .state-plate .section__tag { color: var(--on-plate-quiet); }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'] .begin__plate .section__heading { font-size: clamp(4.8rem, 5dvw, 8rem); }
:root[data-shell='landing'] .begin__plate .section__lede, :root[data-shell='landing'] .state-plate .section__lede { max-width: 72rem; color: var(--on-plate-quiet); }
:root[data-shell='landing'] .begin__echo { margin: 3.52rem 0; }
:root[data-shell='landing'] .echo__row { display: grid; grid-template-columns: 8.48rem minmax(0, 1fr); gap: 1.6rem; padding: 1.36rem 0; border-bottom: var(--stroke) solid color-mix(in srgb, var(--on-plate) 20%, transparent); font-size: var(--font-size-body); line-height: 1.6; }
:root[data-shell='landing'] .echo__row dt { font-family: var(--gauge); font-size: var(--font-size-label); color: var(--on-plate-quiet); }
:root[data-shell='landing'] .echo__row dd { margin: 0; overflow-wrap: anywhere; }
:root[data-shell='landing'] #beginForm, :root[data-shell='landing'] #codeForm { max-width: 51.2rem; }
:root[data-shell='landing'] .begin__model { color: var(--on-plate); max-width: 60.8rem; margin-bottom: 4.16rem; padding-bottom: 2.56rem; border-bottom: var(--stroke) solid color-mix(in srgb, var(--on-plate) 22%, transparent); font-family: var(--stencil); font-size: var(--font-size-lead); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); line-height: 1.65; }
:root[data-shell='landing'] .begin__group { min-width: 0; padding: 0; margin: 0; border: 0; }
:root[data-shell='landing'] .begin__group + .begin__group { margin-top: 4.48rem; }
:root[data-shell='landing'] .begin__group > legend { float: left; width: 100%; padding: 0; font-family: var(--stencil); font-size: var(--font-size-subheading); font-weight: var(--display-weight); letter-spacing: var(--display-tracking); line-height: 1.3; }
:root[data-shell='landing'] .begin__group > legend + * { clear: both; }
:root[data-shell='landing'] .begin__group-note { margin-top: .8rem; max-width: 60.8rem; font-size: var(--font-size-caption); line-height: 1.7; color: var(--on-plate-quiet); }
:root[data-shell='landing'] .begin__group > .begin__row:first-of-type { margin-top: 2.24rem; }
:root[data-shell='landing'] .begin__row { display: grid; gap: 1.04rem; margin-top: 2.08rem; }
:root[data-shell='landing'] .begin__row > label, :root[data-shell='landing'] .begin__field-heading > label, :root[data-shell='landing'] #codeForm > label { font-size: var(--font-size-caption); font-weight: 600; }
:root[data-shell='landing'] .begin__field-heading { display: flex; flex-wrap: wrap; align-items: baseline; gap: .56rem 1.28rem; }
:root[data-shell='landing'] .begin__field-heading > label { flex-shrink: 0; }
:root[data-shell='landing'] .begin__field-heading > .begin__email-caption { flex: 1 1 22.4rem; }
:root[data-shell='landing'] .begin__row input, :root[data-shell='landing'] .begin__row select, :root[data-shell='landing'] #codeForm input, :root[data-shell='landing'] .tutorial input { width: 100%; min-height: 5.12rem; padding: 1.28rem 1.6rem; border: var(--stroke) solid color-mix(in srgb, var(--on-plate) 35%, transparent); border-radius: var(--radius-field); background: transparent; color: var(--on-plate); font-size: var(--font-size-lead); }
:root[data-shell='landing'] .begin__row select {
	appearance: none;
	font-family: inherit;
	text-overflow: ellipsis;
	cursor: pointer;
	padding-right: 4.8rem;
	background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
	background-position: right 2.16rem center, right 1.6rem center;
	background-size: .56rem .56rem, .56rem .56rem;
	background-repeat: no-repeat;
}

:root[data-shell='landing'] .begin__row select:hover { border-color: color-mix(in srgb, var(--on-plate) 60%, transparent); }
:root[data-shell='landing'] .begin__row select option, :root[data-shell='landing'] .begin__row select optgroup { background: var(--plate); color: var(--on-plate); }
:root[data-shell='landing'] .begin__row select optgroup { font-weight: 600; letter-spacing: var(--display-tracking-wide); }
:root[data-shell='landing'] .begin__row input::placeholder, :root[data-shell='landing'] #codeForm input::placeholder, :root[data-shell='landing'] .tutorial input::placeholder { color: var(--on-plate-quiet); }
:root[data-shell='landing'] .begin__email-caption, :root[data-shell='landing'] .begin__fine { color: var(--on-plate-quiet); font-size: var(--font-size-caption); line-height: 1.75; }
:root[data-shell='landing'] #beginForm > .button, :root[data-shell='landing'] #beginForm > button[type='submit'] { margin-top: 3.2rem; }
:root[data-shell='landing'] .begin__fine { margin-top: 1.6rem; max-width: 56rem; }
:root[data-shell='landing'] .form-error { margin-top: .32rem; color: var(--on-plate-danger); font-size: var(--font-size-caption); font-weight: 600; line-height: 1.65; }
:root[data-shell='landing'] [aria-invalid='true'] { border-color: var(--on-plate-danger); outline: .2rem solid var(--on-plate-danger); outline-offset: .192rem; }

/* ============ waiting, tutorial and arrival ============ */

:root[data-shell='landing'] .waiting, :root[data-shell='landing'] .tutorial, :root[data-shell='landing'] .landed { max-width: 92.8rem; margin: 0 auto; padding: 6.4rem 2.56rem 9.6rem; min-height: calc(100dvh - 9.6rem); }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'] .state-plate h1, :root[data-shell='landing'] .state-plate h2 { font-size: clamp(3.68rem, 4dvw, 5.92rem); overflow-wrap: anywhere; }
:root[data-shell='landing'] .state-plate > p { margin-top: 2.24rem; line-height: 1.8; }
:root[data-shell='landing'] .state-plate > p:not(.section__lede) { color: var(--on-plate); }
:root[data-shell='landing'] .echo__row dd { color: var(--on-plate); }
:root[data-shell='landing'] .state-plate .quiet-button { border-color: color-mix(in srgb, var(--on-plate) 35%, transparent); }
:root[data-shell='landing'] #codeForm { display: grid; justify-items: start; gap: 1.28rem; margin-top: 3.2rem; }
:root[data-shell='landing'] #codeForm > .begin__row { width: 22.4rem; }
:root[data-shell='landing'] #codeForm input { font-family: var(--gauge); font-size: var(--font-size-heading); letter-spacing: .28em; }
:root[data-shell='landing'] #codeForm .button { justify-self: start; }
:root[data-shell='landing'] .waiting__pulse, :root[data-shell='landing'] .waiting__resent { font-family: var(--gauge); font-size: var(--font-size-label); color: var(--on-plate-quiet); }
:root[data-shell='landing'] .tutorial__preview { margin-top: 3.2rem; padding: 2.4rem; background: var(--sheet); color: var(--ink); border: var(--stroke) solid var(--ink-rule); border-radius: var(--radius-module); }
:root[data-shell='landing'] .tutorial__avatar { display: block; width: 5.12rem; height: 5.12rem; margin-bottom: 1.6rem; border-radius: var(--radius-capsule); background: var(--sheet); border: var(--stroke) solid var(--rule-strong); }
:root[data-shell='landing'] .tutorial__preview h3 { font-family: var(--stencil); font-weight: var(--display-weight); font-size: var(--font-size-heading); overflow-wrap: anywhere; }
:root[data-shell='landing'] .tutorial__preview p { margin-top: 1.04rem; color: var(--ink-quiet); font-size: var(--font-size-caption); line-height: 1.7; }
:root[data-shell='landing'] .landed .button { margin-top: 3.2rem; }
:root[data-shell='landing'] .colophon { max-width: var(--page-max); margin: 0 auto; padding: 4rem var(--page-gutter); border-top: var(--stroke) solid var(--ink-rule); display: flex; align-items: start; justify-content: space-between; gap: 3.2rem; font-size: var(--font-size-caption); line-height: 1.9; color: var(--ink-quiet); }
:root[data-shell='landing'] .colophon strong { color: var(--ink); font-family: var(--stencil); font-weight: var(--display-weight); }
:root[data-shell='landing'] .colophon small { font-size: var(--font-size-label); }
:root[data-shell='landing'] .colophon p + p { margin-top: .4rem; }

/* ============ specimen details ============ */

:root[data-shell='landing'] .showroom-stage__frame { position: relative; container-type: inline-size; container-name: stage; display: flex; flex-direction: column; height: clamp(22.4rem, calc(100dvh - 41.6rem), 56rem); }
:root[data-shell='landing'] .showroom-stage__toolbar { display: flex; align-items: center; justify-content: space-between; gap: 1.6rem; padding: 1.36rem 2.24rem; flex-shrink: 0; }
:root[data-shell='landing'] .showroom-stage__toolbar .showroom-stage__status { flex: 1; min-width: 0; line-height: 1.6; text-wrap: balance; }

:root[data-shell='landing'] .stage-screen {
	position: absolute;
	right: 1.36rem;
	bottom: 1.36rem;
	z-index: 2;
	width: clamp(17.6rem, 36cqi, 28.8rem);
	container-type: inline-size;
	container-name: screen;
	max-height: calc(100% - 2.72rem);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	border: var(--stroke) solid var(--ink-rule);
	border-radius: var(--radius-module);
	background: var(--sheet);
	color: var(--ink);
	box-shadow: 0 1.92rem 4.8rem -1.28rem rgba(0, 0, 0, .45); /* intentional literal: the stage screen floats over the showroom's ground plane — a theatrical scene depth far past any --elevation-* rung (retro's overlay is 0 .2rem 0), and it must read the same in all three eras so the stage reads as one prop */
}

:root[data-shell='landing'] .stage-screen__chrome {
	display: flex;
	align-items: center;
	gap: .88rem;
	padding: .96rem 1.2rem;
	border-bottom: var(--stroke) solid var(--ink-rule);
}

:root[data-shell='landing'] .stage-screen__plate {
	display: grid;
	place-items: center;
	width: 2.88rem;
	height: 2.88rem;
	flex-shrink: 0;
	border-radius: var(--radius-field);
	background: var(--signal);
	color: var(--on-signal);
	font-family: var(--stencil);
	font-size: var(--font-size-label);
	font-weight: var(--display-weight);
	letter-spacing: 0;
}

:root[data-shell='landing'] .stage-screen__name { flex: 1; min-width: 0; font-size: var(--font-size-caption); font-weight: 600; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:root[data-shell='landing'] .stage-screen__look { flex-shrink: 0; font-family: var(--gauge); font-size: var(--font-size-label); color: var(--ink-quiet); }
:root[data-shell='landing'] .stage-screen__body { flex: 1; min-height: 0; padding: .96rem; }
:root[data-shell='landing'] .stage-screen__foot { flex-shrink: 0; padding: 0 1.12rem .8rem; font-family: var(--gauge); font-size: var(--font-size-label); line-height: 1.4; color: var(--ink-quiet); }

:root[data-shell='landing'] .stage-screen .realtime-space, :root[data-shell='landing'] .stage-screen .realtime-task { gap: .96rem; }
:root[data-shell='landing'] .stage-screen .realtime-space__title, :root[data-shell='landing'] .stage-screen .realtime-task__title { font-size: var(--font-size-lead); }
:root[data-shell='landing'] .stage-screen .realtime-space__title, :root[data-shell='landing'] .stage-screen .realtime-task__title,
:root[data-shell='landing'] .stage-screen .realtime-space__detail, :root[data-shell='landing'] .stage-screen .realtime-task__detail { display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; -webkit-line-clamp: 2; line-clamp: 2; }
:root[data-shell='landing'] .stage-screen .realtime-space__detail, :root[data-shell='landing'] .stage-screen .realtime-task__detail { min-height: 0; font-size: var(--font-size-label); }
:root[data-shell='landing'] .stage-screen .realtime-space__item, :root[data-shell='landing'] .stage-screen .realtime-space__context-text { min-width: 0; }
:root[data-shell='landing'] .stage-screen .realtime-space__order-line { padding: .32rem 0 .72rem; }
:root[data-shell='landing'] .stage-screen .realtime-space__content { gap: .72rem; }
:root[data-shell='landing'] .stage-screen .realtime-space__context { padding: .88rem; gap: .8rem; }
:root[data-shell='landing'] .stage-screen .realtime-space__context-icon { flex-basis: 3.2rem; height: 3.2rem; }
:root[data-shell='landing'] .stage-screen .realtime-space__progress, :root[data-shell='landing'] .stage-screen .realtime-task__progress { display: none; }
:root[data-shell='landing'] .stage-screen .realtime-space__footer, :root[data-shell='landing'] .stage-screen .realtime-task__footer { gap: .72rem; }
:root[data-shell='landing'] .stage-screen .realtime-space__action, :root[data-shell='landing'] .stage-screen .realtime-space__secondary,
:root[data-shell='landing'] .stage-screen .realtime-task__action, :root[data-shell='landing'] .stage-screen .realtime-task__secondary { min-height: 3.84rem; padding: .64rem 1.12rem; font-size: var(--font-size-label); }
:root[data-shell='landing'] .stage-screen .realtime-space__assignee, :root[data-shell='landing'] .stage-screen .realtime-space__attendance { font-size: var(--font-size-label); }
:root[data-shell='landing'] .stage-screen .realtime-space__identity, :root[data-shell='landing'] .stage-screen .realtime-task__identity { font-size: var(--font-size-label); }
:root[data-shell='landing'] .stage-screen .realtime-space__top { gap: .64rem; }

@container screen (min-width: 21.616rem) {
	:root[data-shell='landing'] .stage-screen .realtime-space__status { flex-shrink: 0; white-space: nowrap; }
	:root[data-shell='landing'] .stage-screen .realtime-space__identity { flex: 1 1 auto; }
	:root[data-shell='landing'] .stage-screen .realtime-space__top, :root[data-shell='landing'] .stage-screen .realtime-space__order-line, :root[data-shell='landing'] .stage-screen .realtime-space__appointment { flex-wrap: nowrap; }
	:root[data-shell='landing'] .stage-screen .realtime-space__identity { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

@container screen (max-width: 27.2rem) {
	:root[data-shell='landing'] .stage-screen .realtime-space__detail, :root[data-shell='landing'] .stage-screen .realtime-task__detail { display: none; }
	:root[data-shell='landing'] .stage-screen .realtime-space__title, :root[data-shell='landing'] .stage-screen .realtime-task__title { font-size: var(--font-size-body); }
}

@container screen (max-width: 21.6rem) {
	:root[data-shell='landing'] .stage-screen .realtime-space__context, :root[data-shell='landing'] .stage-screen .realtime-space__guests, :root[data-shell='landing'] .stage-screen .realtime-space__order-line { display: none; }
	:root[data-shell='landing'] .stage-screen .realtime-space__secondary, :root[data-shell='landing'] .stage-screen .realtime-task__secondary { display: none; }
	:root[data-shell='landing'] .stage-screen__foot { display: none; }
	:root[data-shell='landing'] .stage-screen__look { display: none; }
}
:root[data-shell='landing'] .showroom-story > .bridge { margin-top: 0; }
:root[data-shell='landing'] .bridge-wide { max-width: var(--page-max); margin: 8rem auto 6.4rem; padding: 4.16rem var(--page-gutter) 0; }
:root[data-shell='landing'] .swatch__label { display: flex; align-items: baseline; }
:root[data-shell='landing'] .swatch__sample { margin: 0 0 auto; min-height: 6.08rem; }
:root[data-shell='landing'] .swatch__sample b { font-weight: var(--sw-weight, var(--display-weight)); }
:root[data-shell='landing'] .swatch__sample i { display: block; width: 100%; height: .32rem; border-radius: var(--sw-capsule, var(--radius-capsule)); background: color-mix(in srgb, var(--sw-ink, var(--ink)) 18%, transparent); }
:root[data-shell='landing'] .swatch__sample i:nth-of-type(2) { width: 72%; }
:root[data-shell='landing'] .swatch__sample i:nth-of-type(3) { width: 48%; }
:root[data-shell='landing'] .price__row dd { margin: 0; }
:root[data-shell='landing'] .begin__plate { margin-top: 3.68rem; max-width: fit-content; }
:root[data-shell='landing'] .begin__echo:first-child { margin-top: 0; }
:root[data-shell='landing'] .state-actions { display: flex; flex-wrap: wrap; gap: 1.12rem; margin-top: 2.88rem; }
:root[data-shell='landing'] .waiting.state-plate, :root[data-shell='landing'] .tutorial.state-plate, :root[data-shell='landing'] .landed.state-plate { min-height: 0; margin-top: 6.4rem; margin-bottom: 6.4rem; padding: 5.12rem; width: calc(100% - 5.12rem); }
:root[data-shell='landing'] .tutorial.state-plate { display: flex; flex-direction: column; min-height: 67.2rem; }
:root[data-shell='landing'] .tutorial.state-plate > .state-actions { margin-top: auto; padding-top: 2.88rem; }
:root[data-shell='landing'] .tutorial__preview > strong { display: block; font-family: var(--stencil); font-size: var(--font-size-heading); font-weight: var(--display-weight); overflow-wrap: anywhere; }
:root[data-shell='landing'] .tutorial__preview > span:not(.tutorial__avatar) { display: block; margin-top: .96rem; font-size: var(--font-size-label); color: var(--ink-quiet); }
:root[data-shell='landing'] .tutorial__preview-lines { display: grid; gap: .96rem; margin-top: 2.24rem; }
:root[data-shell='landing'] .tutorial__preview-lines i { display: block; height: .32rem; max-width: 100%; border-radius: var(--radius-field); background: color-mix(in srgb, var(--ink) 18%, transparent); }
:root[data-shell='landing'] .tutorial__preview-lines i:nth-child(2) { max-width: 72%; }
:root[data-shell='landing'] .tutorial__preview-lines i:nth-child(3) { max-width: 48%; }

/* ============ viewport bands and motion ============ */

:root[data-shell='landing'][data-viewport='tablet'] { --page-gutter: 2.24rem; }
:root[data-shell='landing'][data-viewport='tablet'] .section { padding-top: 6.4rem; padding-bottom: 6.4rem; }
:root[data-shell='landing'][data-viewport='tablet'] .showroom-floor { gap: 2.88rem; }
:root[data-shell='landing'][data-viewport='tablet'] .showroom-story .section { padding-right: 0; padding-left: 0; }
:root[data-shell='landing'][data-viewport='tablet'] .theme-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
:root[data-shell='landing'][data-viewport='tablet'] .swatch__face { min-height: 12rem; }
:root[data-shell='landing'][data-viewport='tablet'] .showroom-stage__frame { height: clamp(22.4rem, calc(100dvh - 56rem), 48rem); }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'][data-viewport='tablet'] .hero__title { font-size: 6.08rem; }

:root[data-shell='landing'] { scroll-padding-top: calc(var(--masthead-height, 9.6rem) + 1.6rem); }
:root[data-shell='landing'][data-viewport='phone'] .masthead__row { padding: max(1.12rem, env(safe-area-inset-top)) max(var(--page-gutter), env(safe-area-inset-right)) 1.12rem max(var(--page-gutter), env(safe-area-inset-left)); gap: .8rem; flex-wrap: nowrap; }
:root[data-shell='landing'][data-viewport='phone'] .masthead__nav { gap: .32rem; margin-left: auto; margin-right: 0; }
:root[data-shell='landing'][data-viewport='phone'] .masthead__nav > button { font-size: var(--font-size-label); padding: 0 .96rem; }
:root[data-shell='landing'][data-viewport='phone'] .masthead__nav > .button { padding: 1.04rem 1.36rem; min-height: 4.4rem; }
:root[data-shell='landing'][data-viewport='phone'] .masthead__brand { font-size: var(--font-size-lead); min-height: 3.2rem; margin-left: -.64rem; padding: .4rem .64rem; }
:root[data-shell='landing'][data-viewport='phone'] { --page-gutter: 2.08rem; }
:root[data-shell='landing'][data-viewport='phone'] .section { padding-top: 5.12rem; padding-bottom: 5.12rem; }
:root[data-shell='landing'][data-viewport='phone'] .showroom-floor { display: flex; flex-direction: column; gap: 0; padding: 0; }
:root[data-shell='landing'][data-viewport='phone'] .showroom-story { width: 100%; display: contents; }
:root[data-shell='landing'][data-viewport='phone'] .showroom-story .section { width: 100%; padding-left: var(--page-gutter); padding-right: var(--page-gutter); }
:root[data-shell='landing'][data-viewport='phone'] .showroom-story .scene-name { margin-inline: var(--page-gutter); }
:root[data-shell='landing'][data-viewport='phone'] .showroom-story__lead { margin: 0 var(--page-gutter) 2.56rem; }
:root[data-shell='landing'][data-viewport='phone'] .showroom-floor { padding-top: 0; }
:root[data-shell='landing'][data-viewport='phone'] .showroom-preview { position: static; align-self: stretch; margin: 0 var(--page-gutter) 4.8rem; }
:root[data-shell='landing'][data-viewport='phone'] .showroom-stage__toolbar { gap: 1.04rem; padding: 1.36rem; }
:root[data-shell='landing'][data-stage-fit='tile'] .showroom-stage__frame { height: auto; }
:root[data-shell='landing'][data-stage-fit='tile'] .showroom-stage__canvas { height: 20rem; flex: none; }
:root[data-shell='landing'][data-stage-fit='tile'] .stage-screen { position: static; width: auto; max-height: none; margin: 0 1.36rem 1.36rem; box-shadow: none; }
:root[data-shell='landing'][data-viewport='phone'] .scene-name { margin-top: 3.2rem; max-width: none; }
:root[data-shell='landing'][data-viewport='phone'] .hero { min-height: 0; justify-content: flex-start; padding-top: 4.16rem; }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'][data-viewport='phone'] .hero__title { font-size: clamp(4rem, 11dvw, 7.2rem); }
:root[data-shell='landing'][data-viewport='phone'] .hero__copy { max-width: none; }
:root[data-shell='landing'][data-viewport='phone'] .section__heading { font-size: var(--font-size-display); }
:root[data-shell='landing'][data-viewport='phone'] .section__lede { font-size: var(--font-size-lead); }
:root[data-shell='landing'][data-viewport='phone'] .section__tag { margin-bottom: 2.24rem; }
:root[data-shell='landing'][data-viewport='phone'] .trade-option > span { font-size: var(--font-size-caption); }
:root[data-shell='landing'][data-viewport='phone'] .trade-family legend { font-size: var(--font-size-lead); }
:root[data-shell='landing'][data-viewport='phone'] .theme-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
:root[data-shell='landing'][data-viewport='phone'] .swatch__face { padding: 1.28rem; min-height: 14.4rem; }
:root[data-shell='landing'][data-viewport='phone'] .price__row { font-size: var(--font-size-body); gap: 1.6rem; }
:root[data-shell='landing'][data-viewport='phone'] .price__payments { padding: 2.08rem; }
:root[data-shell='landing'][data-viewport='phone'] .begin__plate, :root[data-shell='landing'][data-viewport='phone'] .state-plate { padding: 2.08rem; }
/* intentional literal: poster type — the landing's fluid headings ramp past --font-size-display, the top of the ladder, and no rung states a viewport-fluid size */
:root[data-shell='landing'][data-viewport='phone'] .begin__plate .section__heading { font-size: 4.8rem; }
:root[data-shell='landing'][data-viewport='phone'] .echo__row { grid-template-columns: 5.6rem minmax(0, 1fr); gap: 1.04rem; font-size: var(--font-size-label); }
:root[data-shell='landing'][data-viewport='phone'] .echo__row dt { font-size: var(--font-size-label); }
:root[data-shell='landing'][data-viewport='phone'] #beginForm > .button { width: 100%; }
:root[data-shell='landing'][data-viewport='phone'] .waiting, :root[data-shell='landing'][data-viewport='phone'] .tutorial, :root[data-shell='landing'][data-viewport='phone'] .landed { padding: 3.2rem 1.76rem 6.4rem; }
:root[data-shell='landing'][data-viewport='phone'] .bridge { padding-left: var(--page-gutter); padding-right: var(--page-gutter); }
:root[data-shell='landing'][data-viewport='phone'] .waiting.state-plate, :root[data-shell='landing'][data-viewport='phone'] .tutorial.state-plate, :root[data-shell='landing'][data-viewport='phone'] .landed.state-plate { width: calc(100% - 3.52rem); margin-top: 3.2rem; margin-bottom: 4.8rem; padding: 2.08rem; }
:root[data-shell='landing'][data-viewport='phone'] .colophon { flex-direction: column; gap: 1.92rem; }

@media (prefers-reduced-motion: reduce) {
	:root[data-shell='landing'] { scroll-behavior: auto; }
	:root[data-shell='landing'] .swatch:hover .swatch__face, :root[data-shell='landing'] .button:active, :root[data-shell='landing'] .trade-option:hover > span { transform: none; }
	:root[data-shell='landing'] .swatch__face, :root[data-shell='landing'] .trade-option > span, :root[data-shell='landing'] .masthead__brand, :root[data-shell='landing'] .masthead__nav > button { transition: none; }
}

/* ============ era showroom controls ============ */

:root[data-shell='landing'][data-viewport='desktop'] .showroom-floor {
	grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
}

:root[data-shell='landing'][data-viewport='desktop'] .hero__copy {
	max-width: none;
	display: grid;
	grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr);
	column-gap: 3.84rem;
	align-items: start;
}

:root[data-shell='landing'][data-viewport='desktop'] .hero__title { grid-column: 1 / -1; }
:root[data-shell='landing'][data-viewport='desktop'] .name-origin { margin-top: 4.8rem; }
:root[data-shell='landing'][data-viewport='desktop'] .name-origin__parts { max-width: none; }
:root[data-shell='landing'][data-viewport='desktop'] .hero__intro { margin-top: 4.8rem; max-width: var(--measure); font-size: var(--font-size-subheading); line-height: 1.6; }
:root[data-shell='landing'][data-viewport='desktop'] .showroom-stage__frame {
	height: clamp(22.4rem, calc(100dvh - 41.6rem), 70.4rem);
}

:root[data-shell='landing'][data-scene='absent'] .showroom-stage .showroom-stage__frame { height: auto; }
:root[data-shell='landing'][data-scene='absent'] .stage-screen { position: static; width: auto; max-height: none; margin: 0 1.36rem 1.36rem; box-shadow: none; }

:root[data-shell='landing'] .showroom-continuation { max-width: var(--page-max); margin: 0 auto; padding: 0 var(--page-gutter); }
:root[data-shell='landing'] .showroom-continuation > .scale-claim { margin-top: 8rem; max-width: 72rem; }
:root[data-shell='landing'] .showroom-continuation > .section { padding-left: 0; padding-right: 0; }
:root[data-shell='landing'][data-viewport='tablet'] .showroom-preview { margin-bottom: 6.4rem; }

/**
* showroomRealtime.css — two themed sample screens sharing one local demonstration
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
* @version 2026-September-20 Frame the live examples below the sticky showroom boundary
*/

:root[data-shell='landing'] .realtime-demo, :root[data-shell='landing'] .stage-screen {
	--demo-surface: var(--sheet);
	--demo-raised: color-mix(in srgb, var(--sheet) 96%, var(--ink));
	--demo-ink: var(--ink);
	--demo-muted: var(--ink-quiet);
	--demo-line: var(--rule-strong);
	--demo-accent: var(--signal);
	--demo-accent-ink: var(--on-signal);
	--demo-radius: var(--radius-module);
	--demo-font: var(--telling);
}

:root[data-shell='landing'] .realtime-demo { z-index: 0; --demo-surface: var(--ground-raise); }

:root[data-shell='landing'] .realtime-demo::before {
	content: '';
	position: absolute;
	z-index: -1;
	inset: 0 50%;
	width: 100dvw;
	translate: -50% 0;
	background: var(--ground-well);
	border-block: var(--stroke) solid var(--seam);
}
:root[data-shell='landing'] .realtime-demo > .section__heading { max-width: none; }
:root[data-shell='landing'] .realtime-demo__heading { display: flex; align-items: center; justify-content: space-between; gap: 1.6rem; margin: 4.48rem 0 1.76rem; }
:root[data-shell='landing'] .realtime-demo__heading h3 { font-family: var(--stencil); font-size: var(--font-size-heading); line-height: 1.3; font-weight: var(--display-weight); letter-spacing: var(--display-tracking); margin-top: .8rem; }
:root[data-shell='landing'] #demoCategory { display: inline-flex; align-items: center; padding: .4rem 1.12rem; border: var(--stroke) solid var(--seam); border-radius: var(--radius-capsule); background: var(--ground-raise); color: var(--ink-quiet); font-family: var(--telling); font-weight: 500; letter-spacing: normal; text-transform: none; }
:root[data-shell='landing'] .realtime-demo__reset { flex-shrink: 0; padding: .88rem 1.28rem; min-height: 4.4rem; border: var(--stroke) solid var(--demo-line); border-radius: var(--radius-field); background: transparent; color: var(--demo-ink); font: inherit; font-size: var(--font-size-label); cursor: pointer; }
:root[data-shell='landing'] .realtime-demo__reset:hover { background: var(--demo-raised); }
:root[data-shell='landing'] .realtime-demo__panels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2.4rem; }
:root[data-shell='landing'] .realtime-peer { min-width: 0; overflow: hidden; border: var(--stroke) solid var(--demo-line); border-radius: var(--radius-slab); background: var(--demo-surface); color: var(--demo-ink); box-shadow: 0 .96rem 3.2rem color-mix(in srgb, var(--ink) 5%, transparent); transition: border-color .2s; } /* intentional literal: the two demo peers are screens standing in the showroom scene, lifted to match the stage prop above rather than the app's own surface ladder */
:root[data-shell='landing'] .realtime-peer__header { display: flex; align-items: center; gap: 1.12rem; padding: 1.68rem 1.84rem; border-bottom: var(--stroke) solid var(--demo-line); background: var(--demo-raised); }
:root[data-shell='landing'] .realtime-peer__header > div { min-width: 0; flex: 1; }
:root[data-shell='landing'] .realtime-peer__header h4 { font-size: var(--font-size-caption); line-height: 1.5; font-weight: 600; overflow-wrap: anywhere; }
:root[data-shell='landing'] .realtime-peer__header p { overflow-wrap: anywhere; font-size: var(--font-size-label); line-height: 1.6; color: var(--demo-muted); }
:root[data-shell='landing'] .realtime-peer__avatar { flex: 0 0 3.52rem; width: 3.52rem; height: 3.52rem; border-radius: var(--radius-capsule); background: var(--demo-surface); border: var(--stroke) solid var(--demo-line); }
:root[data-shell='landing'] .realtime-peer__connected { display: flex; align-items: center; gap: .56rem; font-size: var(--font-size-label); color: var(--demo-muted); white-space: nowrap; }
:root[data-shell='landing'] .realtime-peer__connected::before { content: ''; width: .56rem; height: .56rem; flex-shrink: 0; border-radius: var(--radius-circle); background: var(--demo-accent); }
:root[data-shell='landing'] .realtime-peer__body { padding: 2.08rem 1.84rem; min-height: 25.6rem; }
:root[data-shell='landing'] .realtime-demo[data-synced='true'] .realtime-peer { border-color: var(--demo-accent); }
:root[data-shell='landing'] .realtime-peer[data-peer='remote'] { transition: border-color var(--motion-fast), box-shadow var(--motion-slow) var(--ease-standard), transform var(--motion-slow) var(--ease-standard); }
:root[data-shell='landing'] .realtime-demo[data-synced='true'] .realtime-peer[data-peer='remote'] { transition-duration: var(--motion-fast); transform: translateY(-.4rem); box-shadow: 0 0 0 .4rem color-mix(in srgb, var(--demo-accent) 26%, transparent), 0 1.6rem 4rem color-mix(in srgb, var(--ink) 10%, transparent); } /* intentional literal: the delivered-change ring is a flat outline drawn as a shadow, not a depth cue, and no --elevation-* rung is a ring */
:root[data-shell='landing'] .realtime-demo[data-synced='true'] .realtime-peer__connected::before { box-shadow: 0 0 0 .32rem color-mix(in srgb, var(--demo-accent) 14%, transparent); } /* intentional literal: a flat halo ring around the delivered-change dot, not a depth cue — no --elevation-* rung is a ring */
:root[data-shell='landing'] .realtime-demo__editor { position: relative; display: block; max-width: 83.2rem; margin-top: 3.2rem; }
:root[data-shell='landing'] .realtime-demo__editor label {
	position: absolute;
	z-index: 1;
	top: 0;
	inset-inline-start: 1.12rem;
	translate: 0 -50%;
	padding: 0 .56rem;
	background: var(--ground-well);
	font-size: var(--font-size-label);
	line-height: 1.2;
	color: var(--demo-muted);
}
:root[data-shell='landing'] .realtime-demo__editor input { width: 100%; min-width: 0; min-height: 4.4rem; padding: 1.04rem 1.36rem; border: var(--stroke) solid var(--demo-line); border-radius: var(--radius-field); background: var(--demo-raised); color: var(--demo-ink); font: inherit; font-size: var(--font-size-body); }
:root[data-shell='landing'] .realtime-demo__receipt { min-height: 2.7em; margin-top: 1.6rem; font-size: var(--font-size-caption); line-height: 1.6; color: var(--demo-ink); }
:root[data-shell='landing'] .realtime-demo__note { font-size: var(--font-size-label); line-height: 1.6; color: var(--demo-muted); }
:root[data-shell='landing'] .realtime-demo button:focus-visible, :root[data-shell='landing'] .realtime-demo input:focus-visible { outline: .224rem solid var(--demo-ink); outline-offset: .32rem; }
:root[data-shell='landing'][data-viewport='tablet'] .realtime-demo__panels { gap: 1.6rem; }
:root[data-shell='landing'][data-viewport='phone'] .realtime-demo__panels { grid-template-columns: minmax(0, 1fr); gap: 1.6rem; }
:root[data-shell='landing'][data-viewport='phone'] .realtime-demo__heading { align-items: flex-start; gap: 1.12rem; margin-top: 3.2rem; }
:root[data-shell='landing'][data-viewport='phone'] .realtime-demo__heading h3 { font-size: var(--font-size-lead); }
:root[data-shell='landing'][data-viewport='phone'] .realtime-peer__body { padding: 1.6rem 1.36rem; min-height: 0; }
:root[data-shell='landing'][data-viewport='phone'] .realtime-peer__header { padding: 1.36rem; gap: .96rem; }
:root[data-shell='landing'][data-viewport='phone'] .realtime-peer__connected { font-size: var(--font-size-label); }
:root[data-shell='landing'][data-viewport='phone'] .realtime-demo__editor { margin-top: 2.88rem; }
@media (prefers-reduced-motion: reduce) {
	:root[data-shell='landing'] .realtime-peer { transition: none; }
	:root[data-shell='landing'] .realtime-peer[data-peer='remote'] { transition: none; }
	:root[data-shell='landing'] .realtime-demo[data-synced='true'] .realtime-peer[data-peer='remote'] { transform: none; }
}

/**
 * showroomRealtimeTask.css — scoped TaskTile, TeamMemberAvatars and PlayPauseToggleButton specimen
 * @author Francisco Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2026-September-20 Local paired-screen demonstration (#2486)
 */

:root[data-shell='landing'] .realtime-task {
    --task-dense: var(--pad-dense);
    --task-caption: var(--font-size-caption);
    --task-title: var(--font-size-lead);
    --task-control-radius: var(--radius-shell);
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas:
        'type badges'
        'description description'
        'project project'
        'members members';
    gap: var(--task-dense);
    min-width: 0;
    padding: var(--task-dense);
    border: .1rem solid var(--demo-line, var(--ink-rule));
    border-radius: var(--demo-radius, var(--radius-module));
    color: var(--demo-ink, var(--ink));
    background-color: var(--demo-surface, var(--sheet));
    background-image: var(--surface-card-texture, none);
    font-family: var(--demo-font, var(--telling));
    line-height: 1.2;
}

:root[data-shell='landing'] .realtime-task .taskTile__typeAndNumber {
    grid-area: type;
    display: flex;
    align-items: center;
    gap: var(--task-dense);
}

:root[data-shell='landing'] .realtime-task .taskTile__badges {
    grid-area: badges;
    display: flex;
    align-items: center;
}

:root[data-shell='landing'] .realtime-task .realtime-task__chip {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    padding: .2rem var(--task-dense);
    border: .1rem solid var(--demo-line, var(--ink-rule));
    border-radius: var(--demo-radius, var(--radius-module));
    font-family: var(--stencil);
    font-size: var(--task-caption);
    line-height: 1.35;
    white-space: nowrap;
}

:root[data-shell='landing'] .realtime-task .realtime-task__number {
    font-size: var(--task-caption);
}

:root[data-shell='landing'] .realtime-task .taskTile__deadline {
    color: #fff;
    background-color: #8b651b;
    border-color: transparent;
}

:root[data-shell='landing'] .realtime-task .taskTile__description {
    grid-area: description;
    margin: 0;
    min-width: 0;
    font-size: var(--task-title);
    font-weight: 400;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

:root[data-shell='landing'] .realtime-task .taskTile__project {
    grid-area: project;
    margin: 0;
    min-width: 0;
    color: var(--demo-muted, var(--ink-quiet));
    font-size: var(--task-caption);
    line-height: 1.5;
    overflow-wrap: anywhere;
}

:root[data-shell='landing'] .realtime-task .taskTile__teamMemberTimerContainer {
    grid-area: members;
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: center;
    gap: var(--task-dense);
    padding-top: var(--task-dense);
    border-top: .1rem solid var(--demo-line, var(--ink-rule));
}

:root[data-shell='landing'] .realtime-task .taskTile__teamMemberContainer,
:root[data-shell='landing'] .realtime-task .taskTile__controllers {
    display: flex;
    align-items: center;
    gap: var(--task-dense);
    min-width: 0;
}

:root[data-shell='landing'] .realtime-task .realtime-task__avatar {
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 3rem;
    height: 3rem;
    border: .1rem solid transparent;
    border-radius: var(--radius-circle);
    background: var(--demo-raised, var(--sheet));
    box-shadow: inset 0 .1rem .2rem color-mix(in srgb, var(--demo-ink, var(--ink)) 6%, transparent);
}

:root[data-shell='landing'] .realtime-task .realtime-task__avatar--running {
    border-color: var(--demo-accent, var(--signal));
}

:root[data-shell='landing'] .realtime-task .taskTile__timer {
    flex: 0 0 auto;
    font-size: var(--task-title);
    font-variant-numeric: tabular-nums;
}

:root[data-shell='landing'] .realtime-task .taskTile__timer:empty {
    display: none;
}

:root[data-shell='landing'] .realtime-task .taskTile__playPauseButton {
    position: relative;
    display: grid;
    place-items: center;
    flex: 0 0 auto;
    width: 2.1rem;
    height: 2.1rem;
    min-width: 0;
    min-height: 0;
    padding: 0 0 0 .2rem;
    border: 0;
    border-radius: var(--task-control-radius);
    background: var(--demo-muted, var(--ink-quiet));
    color: var(--demo-surface, var(--sheet));
    cursor: pointer;
    touch-action: manipulation;
}

:root[data-shell='landing'] .realtime-task .taskTile__playPauseButton::before {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 4.4rem;
    height: 4.4rem;
    transform: translate(-50%, -50%);
    content: '';
}

:root[data-shell='landing'] .realtime-task .taskTile__playPauseButton:focus-visible {
    outline: var(--focus-ring-width) solid var(--demo-ink, var(--ink));
    outline-offset: .4rem;
}

:root[data-shell='landing'] .realtime-task .realtime-task__playGlyph {
    width: 1rem;
    height: 1rem;
    background: currentColor;
    clip-path: polygon(0 0, 100% 50%, 0 100%);
}

:root[data-shell='landing'] .realtime-task .taskTile__playPauseButton[aria-pressed='true'] {
    padding: 0;
    background: var(--demo-accent, var(--signal));
    color: var(--demo-accent-ink, var(--on-signal));
}

:root[data-shell='landing'] .realtime-task .taskTile__playPauseButton[aria-pressed='true'] .realtime-task__playGlyph {
    clip-path: none;
}

:root[data-shell='landing'] .realtime-task .taskTile__runningCount {
    grid-column: 1 / -1;
    color: var(--demo-ink, var(--ink));
    font-size: var(--task-caption);
}

:root[data-shell='landing'] .realtime-task [hidden] {
    display: none;
}


/**
* showroomRealtimeSpaces.css — themed activity specimens within the paired showroom demo
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-September-20 Bulletin, repair, booking and order cards (#2486)
*/

:root[data-shell='landing'] .realtime-space {
    display: flex;
    flex-direction: column;
    gap: 1.6rem;
    min-width: 0;
    width: 100%;
    padding: 2rem;
    border: .1rem solid var(--demo-line);
    border-radius: var(--demo-radius);
    color: var(--demo-ink);
    background: var(--demo-raised);
    font-family: var(--demo-font);
    font-size: var(--font-size-body);
    line-height: 1.55;
    text-align: left;
}

:root[data-shell='landing'] .realtime-space *,
:root[data-shell='landing'] .realtime-space *::before,
:root[data-shell='landing'] .realtime-space *::after {
    box-sizing: border-box;
}

:root[data-shell='landing'] .realtime-space :is(p, h3) {
    margin: 0;
}

:root[data-shell='landing'] .realtime-space__top {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.04rem;
}

:root[data-shell='landing'] .realtime-space__identity {
    font-size: var(--font-size-label);
    font-weight: 600;
    color: var(--demo-muted);
}

:root[data-shell='landing'] .realtime-space__status {
    display: inline-flex;
    align-items: center;
    gap: .56rem;
    padding: .4rem .96rem;
    border: .1rem solid var(--demo-line);
    border-radius: var(--demo-radius);
    color: var(--demo-ink);
    font-size: var(--font-size-label);
    font-weight: 600;
}

:root[data-shell='landing'] .realtime-space__status::before {
    content: '';
    flex-shrink: 0;
    width: .56rem;
    height: .56rem;
    border-radius: var(--radius-circle);
    background: currentColor;
}

:root[data-shell='landing'] .realtime-space[data-completed='true'] .realtime-space__status {
    background: var(--demo-accent);
    color: var(--demo-accent-ink);
    border-color: var(--demo-accent);
}

:root[data-shell='landing'] .realtime-space__title {
    font-family: inherit;
    font-size: var(--font-size-subheading);
    font-weight: 650;
    line-height: 1.35;
    letter-spacing: -.015em;
    overflow-wrap: anywhere;
}

:root[data-shell='landing'] .realtime-space__detail {
    min-height: 2.6em;
    color: var(--demo-muted);
    font-size: var(--font-size-caption);
    overflow-wrap: anywhere;
}

:root[data-shell='landing'] .realtime-space__content {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 1.6rem;
    padding-block: .4rem;
}

:root[data-shell='landing'] .realtime-space__context {
    display: flex;
    gap: 1.2rem;
    align-items: center;
    padding: 1.28rem;
    border-radius: var(--demo-radius);
    background: var(--demo-surface);
    border: .1rem solid var(--demo-line);
}

:root[data-shell='landing'] .realtime-space__context-icon {
    display: grid;
    flex: 0 0 3.84rem;
    height: 3.84rem;
    place-items: center;
    border: .1rem solid var(--demo-line);
    border-radius: var(--demo-radius);
    color: var(--demo-ink);
    background: var(--demo-raised);
}

:root[data-shell='landing'] .realtime-space__icon {
    display: block;
    flex-shrink: 0;
    width: 1.92rem;
    height: 1.92rem;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

:root[data-shell='landing'] .realtime-space__context-text,
:root[data-shell='landing'] .realtime-space__person,
:root[data-shell='landing'] .realtime-space__item {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: .32rem;
    overflow-wrap: anywhere;
}

:root[data-shell='landing'] .realtime-space__context-text strong,
:root[data-shell='landing'] .realtime-space__item strong {
    font-size: var(--font-size-caption);
    font-weight: 600;
}

:root[data-shell='landing'] .realtime-space__context-text > span,
:root[data-shell='landing'] .realtime-space__person > span,
:root[data-shell='landing'] .realtime-space__item-label {
    font-size: var(--font-size-label);
    color: var(--demo-muted);
}

:root[data-shell='landing'] .realtime-space__guests,
:root[data-shell='landing'] .realtime-space__assignee {
    display: flex;
    align-items: center;
    gap: 1.2rem;
}

:root[data-shell='landing'] .realtime-space__avatars {
    display: flex;
    flex-shrink: 0;
    padding-left: .56rem;
}

:root[data-shell='landing'] .realtime-space__avatar {
    display: grid;
    flex-shrink: 0;
    width: 3.2rem;
    height: 3.2rem;
    place-items: center;
    border: .2rem solid var(--demo-raised);
    border-radius: var(--radius-circle);
    background: var(--demo-surface);
    outline: .1rem solid var(--demo-line);
}

:root[data-shell='landing'] .realtime-space__avatars .realtime-space__avatar {
    margin-left: -.56rem;
}

:root[data-shell='landing'] .realtime-space__attendance {
    color: var(--demo-muted);
    font-size: var(--font-size-label);
}

:root[data-shell='landing'] .realtime-space__person strong {
    font-size: var(--font-size-caption);
    font-weight: 600;
}

:root[data-shell='landing'] .realtime-space__appointment {
    display: flex;
    flex-wrap: wrap;
    gap: .88rem 1.76rem;
}

:root[data-shell='landing'] .realtime-space__fact {
    display: flex;
    align-items: center;
    gap: .64rem;
    color: var(--demo-muted);
    font-size: var(--font-size-label);
}

:root[data-shell='landing'] .realtime-space__fact .realtime-space__icon {
    width: 1.6rem;
    height: 1.6rem;
}

:root[data-shell='landing'] .realtime-space__order-line {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 1.28rem;
    padding: .64rem 0 1.6rem;
    border-bottom: .1rem solid var(--demo-line);
}

:root[data-shell='landing'] .realtime-queue {
    display: flex;
    min-width: 0;
    flex: 1;
    flex-direction: column;
    gap: .88rem;
}

:root[data-shell='landing'] .realtime-queue__label {
    color: var(--demo-muted);
    font-size: var(--font-size-label);
    letter-spacing: .04em;
    text-transform: uppercase;
}

:root[data-shell='landing'] .realtime-queue__list {
    display: flex;
    flex-direction: column;
    gap: .64rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

:root[data-shell='landing'] .realtime-queue__row {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: .88rem;
    padding: .88rem 1.12rem;
    border: .1rem solid var(--demo-line);
    border-radius: var(--demo-radius);
    background: var(--demo-surface);
}

:root[data-shell='landing'] .realtime-queue__row > strong {
    min-width: 0;
    flex: 1;
    overflow: hidden;
    font-size: var(--font-size-caption);
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

:root[data-shell='landing'] .realtime-queue__where {
    flex-shrink: 0;
    color: var(--demo-muted);
    font-size: var(--font-size-label);
}

:root[data-shell='landing'] .realtime-queue__count {
    flex-shrink: 0;
    color: var(--demo-muted);
    font-size: var(--font-size-label);
    font-weight: 600;
}

:root[data-shell='landing'] .realtime-queue__row--mine {
    border-color: var(--demo-accent);
    background: color-mix(in srgb, var(--demo-accent) 12%, var(--demo-surface));
}

:root[data-shell='landing'] .realtime-queue__row--mine > strong, :root[data-shell='landing'] .realtime-queue__row--mine .realtime-queue__where, :root[data-shell='landing'] .realtime-queue__row--mine .realtime-queue__count { color: var(--demo-ink); }

:root[data-shell='landing'] .realtime-queue__row--active {
    border-color: var(--demo-accent);
    background: color-mix(in srgb, var(--demo-accent) 24%, var(--demo-surface));
}

:root[data-shell='landing'] .realtime-space__action:disabled {
    cursor: not-allowed;
    opacity: .5;
}

:root[data-shell='landing'] .realtime-queue__waiting {
    color: var(--demo-muted);
    font-size: var(--font-size-label);
    line-height: 1.6;
}

:root[data-shell='landing'] .realtime-space__count {
    flex-shrink: 0;
    padding: .56rem 1.12rem;
    border: .1rem solid var(--demo-line);
    border-radius: var(--demo-radius);
    background: var(--demo-raised);
    color: var(--demo-ink);
    font-size: var(--font-size-caption);
    font-weight: 600;
}

:root[data-shell='landing'] .realtime-space__stepper {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    border: .1rem solid var(--demo-line);
    border-radius: var(--demo-radius);
    background: var(--demo-surface);
}

:root[data-shell='landing'] .realtime-space__stepper button {
    width: 4rem;
    min-height: 4rem;
    padding: 0;
    border: 0;
    border-radius: var(--demo-radius);
    background: transparent;
    color: var(--demo-ink);
    font: inherit;
    font-size: var(--font-size-lead);
    cursor: pointer;
}

:root[data-shell='landing'] .realtime-space__stepper button:disabled {
    color: var(--demo-muted);
    cursor: default;
}

:root[data-shell='landing'] .realtime-space__quantity {
    min-width: 2.4rem;
    font-size: var(--font-size-body);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    text-align: center;
}

:root[data-shell='landing'] .realtime-space__progress {
    padding-top: 1.28rem;
    border-top: .1rem solid var(--demo-line);
    color: var(--demo-muted);
    font-size: var(--font-size-label);
}

:root[data-shell='landing'] .realtime-space__footer {
    display: flex;
    flex-wrap: wrap;
    gap: .8rem;
    align-items: center;
    margin-top: auto;
}

:root[data-shell='landing'] .realtime-space :is(.realtime-space__action, .realtime-space__secondary) {
    flex: 1 1 auto;
    min-height: 4.24rem;
    padding: .96rem 1.36rem;
    border: .1rem solid var(--demo-accent);
    border-radius: var(--demo-radius);
    background: var(--demo-accent);
    color: var(--demo-accent-ink);
    font-family: inherit;
    font-size: var(--font-size-label);
    font-weight: 600;
    line-height: 1.4;
    cursor: pointer;
    transition: filter 140ms ease;
}

:root[data-shell='landing'] .realtime-space .realtime-space__secondary {
    background: var(--demo-raised);
    border-color: var(--demo-line);
    color: var(--demo-ink);
}

:root[data-shell='landing'] .realtime-space button:focus-visible {
    outline: .24rem solid var(--demo-ink);
    outline-offset: .32rem;
}

:root[data-shell='landing'] .realtime-space button:not(:disabled):hover {
    filter: brightness(.94);
}

@media (prefers-reduced-motion: reduce) {
    :root[data-shell='landing'] .realtime-space button {
        transition: none;
    }
}

/**
* showroomIdentity.css — locally hosted portrait crops and entity logos
* @author Francisco Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
* @version 2026-September-20 Shared image treatment for sample identities
*/

:root[data-shell='landing'] .showroom-identity { position: relative; display: inline-block; overflow: hidden; isolation: isolate; vertical-align: middle; flex-shrink: 0; }
:root[data-shell='landing'] .showroom-identity > img { position: absolute; display: block; width: 100%; height: 100%; max-width: none; left: 0; top: 0; object-fit: cover; pointer-events: none; }
:root[data-shell='landing'] .showroom-identity[data-kind='person'] > img { width: 300%; height: 200%; left: calc(var(--portrait-column, 0) * -100%); top: calc(var(--portrait-row, 0) * -100%); }
:root[data-shell='landing'] .showroom-identity[data-kind='entity'] > img { object-fit: contain; }

/**
* propertyManagementView.css
* @author Miguel A. González <miguel.gonzalez@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2025-October-03 Initial Version
*/

.propertyManagementView__view {
	height: 100%;
	width: 100%;
	display: grid;
	gap: var(--gap-stack);
	grid-template-columns: min-content 0 3fr;
	/* TODO: change when implementing template */
}

.propertyManagementView__mainContainer {}

.propertyManagementView__sidebar {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
}

.propertyManagementView__divider {
	height: 100%;
}
/**
* selfEntityView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-January-31 Initial Version
*/

.selfEntityView__view {
	/* background-color: grey; */
	display: grid;
	gap: var(--gap-stack);
	grid-template-rows: auto minmax(0, 1fr);
	height: 100%;
}

.selfEntityView__modulePanel {}

/**
* taskManagementView.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-March-17 Initial Version
*/

.taskManagementView__view {
	height: 100%;
	display: grid;
	grid-template-rows: var(--shell-tab-row-height) minmax(0, 1fr);
	min-height: 0;
}

.taskManagementView__tabHeaderBar {
	align-self: center;
	padding: 0 var(--pad-page);
}

.taskManagementView__modulePanel {
	height: 100%;
	min-height: 0;
	overflow: hidden;
}

/**
* personalizeEntity.css — the Personalize dock: heading, the device appearance row, and the
* two-pane track (theme list | theme editor) that slides one viewport width when the editor
* opens. The dock draws the close mark at the top-right corner, so the header keeps that
* corner clear.
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2020-05-15 Initial Version
*/

.personalizeEntity__view {
	display: grid;
	grid-template-rows: auto auto minmax(0, 1fr);
	width: 30rem;
	max-width: 100%;
	height: 100%;
	min-height: 0;
	overflow: hidden;
	color: var(--text-primary);
}

.personalizeEntity__header {
	padding: var(--pad-card) 5.2rem /* intentional literal: clears the dock's close mark, which sits over the header's right edge */ var(--pad-dense) var(--pad-card);
}

:root[data-viewport="phone"] .personalizeEntity__header {
	padding-left: 4.8rem; /* intentional literal: clears the phone-band overlay's close mark, which sits over the header's left edge */
	padding-right: var(--pad-card);
}

.personalizeEntity__heading {
	margin: 0;
	text-align: left;
}

.personalizeEntity__appearanceRow {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--gap-stack);
	padding: var(--pad-dense) var(--pad-card) var(--pad-row);
	border-bottom: var(--border-width) solid var(--border-default);
}

.personalizeEntity__appearanceText {
	display: flex;
	flex-direction: column;
	gap: var(--gap-hairline);
	min-width: 0;
}

.personalizeEntity__appearanceLabel {
	width: auto;
	font-weight: var(--font-weight-medium);
}

.personalizeEntity__appearanceHint {
	width: auto;
	color: var(--text-secondary);
	font-size: var(--font-size-caption);
}

.personalizeEntity__panes {
	display: grid;
	grid-template-columns: 100% 100%;
	min-height: 0;
	overflow: hidden;
}

.personalizeEntity__pane {
	min-width: 0;
	min-height: 0;
	overflow-y: auto;
	scrollbar-gutter: stable;
	translate: 0 0;
	transition: translate var(--motion-base) var(--ease-emphasized);
}

.personalizeEntity__panes-editor > .personalizeEntity__pane {
	translate: -100% 0;
}

.personalizeEntity__pane[inert] {
	visibility: hidden;
	transition: visibility 0s var(--motion-base);
}

.personalizeEntity__skeleton {
	display: flex;
	flex-direction: column;
	gap: var(--gap-stack);
	padding: var(--pad-row) var(--pad-card);
}

.personalizeEntity__status {
	display: block;
	padding: var(--pad-row) var(--pad-card);
}

/**
 * utilities.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 * 
 * @version 2019-09-18 Initial Version
 *   @keyframes (authored in themes/<key>.css); the floor stays motionEnter
 */

.hide {
	opacity: 0;
}

.exitTop {
	transform: translateY(-100vw);
	opacity: 0;
}

.exitRight {
	transform: translateX(100vw);
	opacity: 0;
}

.exitBottom {
	transform: translateY(100vw);
	opacity: 0;
}

.exitLeft {
	transform: translateX(-100vw);
	opacity: 0;
}

.flatten {
	overflow: hidden;
	padding: 0;
	height: 0;
	border: none;
	margin: 0;
}

.rumble {
	border-color: var(--status-danger);
	animation: shake .5s linear;
}

/* ---- The one sanctioned entrance treatment ----------------------------------
   Compositor-only (opacity + transform), so no layout and no paint. Reduced
   motion is already neutralized app-wide by the `prefers-reduced-motion` block
   in app.css — no local guard. (Deliberately unnumbered: this pointer went stale
   by 14 lines during this PR's own integration when the token layer grew `:root`.)

   `backwards`, never `forwards`/`both`: these elements also carry the global
   `* { transition: all }`, and a filled-forwards animation outranks normal
   declarations, so it would permanently pin `transform` and break every later
   transform write (the panel slide, the drag handler's per-frame writes).
   `backwards` fills only the pre-animation frame and then releases the element.
   For the same reason the `to` state must stay byte-equal to the recipient's own
   base values (`opacity: 1`, no translate) — a mismatch hands off into a visible
   second drift as the live transition chases the base value.

   The recipient selector lives here rather than in floatingExpandablePanel.css so
   the whole treatment is one revertable hunk. It fires with no JS because
   `display: none → grid` on open restarts CSS animations, which is why this one
   selector covers every Dropdown and anchored panel in the app. */
@keyframes motionEnter {
	from {
		opacity: 0;
		transform: translateY(var(--motion-enter-distance));
	}

	to {
		opacity: 1;
		transform: translateY(0);
	}
}

.motion-enter,
.floatingExpandablePanel__view:popover-open,
.floatingExpandablePanel__view[open] {
	animation: motionEnter var(--motion-base) var(--ease-enter) backwards;
	animation-name: var(--motion-enter-name, motionEnter);
}
/**
 * mobileOptimization.css
 * @author Francisco J. Medina <francisco@seedburysquare.com>
 * @copyright Seedbury Square, LLC. All Rights Reserved.
 *
 * @version 2019-09-20 Initial Version
 */

/* Touch Screen Optimization */

@media (hover: none) {
	.scrollArea {
		overflow: auto;
	}
}

/* The discrete root-size step that used to live here (font-size: 50% under a
   width media query) is superseded by the fluid clamp() root in app.css. */

@media (pointer: coarse) {

	.button,
	.icon__view:where(button):not(.intervalTile__deleteButton, .floatingExpandablePanel__closeButton),
	input[type='checkbox'],
	input[type='radio'] {
		min-width: var(--touch-target-minimum);
		min-height: var(--touch-target-minimum);
	}

	.filesSummary__iconLabelContainer[role="button"],
	.boardSummary__iconLabelContainer[role="button"] {
		min-height: var(--touch-target-minimum);
	}

	/* Slider stops only get the height floor: a min-WIDTH would beat the
	   collapse animation's `max-width: 0` (min-width wins over max-width) and
	   un-collapse every MultiStepSlider. */
	.multiStepSlider__stop {
		min-height: var(--touch-target-minimum);
	}

	/* Corner buttons anchored with translate(±50%, -50%): growing their box
	   moves the visible glyph, so the tappable area grows via an ::after
	   pseudo-element instead — inset goes negative only while the box is under
	   the minimum floor, expanding the hit box without any visual change. (These are the
	   two Icon-root corner buttons excluded from the floor above plus the
	   EditButton corner instances; all are position:absolute at their use
	   sites, which the ::after needs as its containing block.) */
	.compensationView__editButton::after,
	.taskEntryTile__editButton::after,
	.timeLimitTile__editButton::after,
	.deadlineTile__editButton::after,
	.intervalTile__editButton::after,
	.intervalTile__deleteButton::after,
	.floatingExpandablePanel__closeButton::after {
		content: '';
		position: absolute;
		inset: min(0rem, calc((100% - var(--touch-target-minimum)) / 2));
	}

	.playPauseToggleButton__view::before {
		content: '';
		position: absolute;
		inset: min(0rem, calc((100% - var(--touch-target-minimum)) / 2));
	}

	.playPauseToggleButton__view {
		position: relative;
	}

	/* The VISIBLE modifier only: `.miniCalendar__day-view` is the hidden state
	   (height/width 0), so a floor on the base class un-hides every empty cell. */
	.miniCalendar__day-view-visible {
		min-width: var(--touch-target-minimum);
		min-height: var(--touch-target-minimum);
	}

	/* The form-control family. The focusable element is `.dropdown__headingArea`,
	   not `.dropdown__view` — flooring the shell alone leaves the extra area dead. */
	.textInput__view,
	.dropdown__headingArea,
	.input-smaller,
	.input-small,
	.input-medium,
	.input-large,
	.input-larger,
	textarea {
		min-height: var(--touch-target-minimum);
	}
}

/* ── primary touch floor + the iOS focus-zoom font rung (phone band) ──
   The form-control family is the "primary mobile control" tier, and the rule
   spans three component stylesheets, so it lives here beside its minimum-tier twin.
   `--font-size-subheading` measures 16.0px at 320px through 20.0px at 800px, so
   it clears the iOS Safari focus-zoom threshold across the whole band with no
   px literal. */
:root[data-viewport="phone"] .textInput__view,
:root[data-viewport="phone"] .textInput__input,
:root[data-viewport="phone"] .dropdown__headingArea,
:root[data-viewport="phone"] .input-smaller,
:root[data-viewport="phone"] .input-small,
:root[data-viewport="phone"] .input-medium,
:root[data-viewport="phone"] .input-large,
:root[data-viewport="phone"] .input-larger,
:root[data-viewport="phone"] textarea {
	min-height: var(--touch-target-primary);
	font-size: var(--font-size-subheading);
}

/* The `.input-*` rungs set a FIXED height (baseElements.css); it must yield. */
:root[data-viewport="phone"] .input-smaller,
:root[data-viewport="phone"] .input-small,
:root[data-viewport="phone"] .input-medium,
:root[data-viewport="phone"] .input-large,
:root[data-viewport="phone"] .input-larger {
	height: auto;
}

/* ── the input FILLS its frame, whatever the frame's height is ──
   `.textInput__input` is `position: absolute` so the drawn frame can sit under a
   floating label. A height of its own therefore decides nothing about the frame
   and everything about the tap zone: a frame taller than the floor (the New Task
   headline's `min-height: 6.4rem`) kept a floor-tall input and left the rest of
   the drawn field dead to a tap. Pinning `inset-block` makes the frame the single
   source of the field's height at this band. See
   knowledge-base/architecture/mobile.md § Touch ergonomics. */
:root[data-viewport="phone"] .textInput__view > .textInput__input {
	inset-block: 0;
	height: auto;
}


/**
* styleSheet.css
* @author Francisco J. Medina <francisco@seedburysquare.com>
* @copyright Seedbury Square, LLC. All Rights Reserved.
*
* @version 2026-January-31 Set Regions
*/

/* #region root elements - Must be first  */
/* #endregion */
/* #region Components - should be before containers, but after root elements */
/*  #endregion Components*/
/* #region Containers - should be after components, but before mobile optimization */
/*  #endregion */
/* #region Entity Type Views */
/*  #endregion */
/* #region Utilities */
/*  #endregion */
/* #region Mobile Optimization  - Must be Last */
/* #endregion */

