@boost33/ui 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ProductMark.js","sources":["../../../src/components/ProductMark/ProductMark.tsx"],"sourcesContent":["import { useId, type ReactNode } from 'react'\nimport styles from './ProductMark.module.css'\n\n/**\n * The size the mark renders at unless a caller says otherwise. 20px is the\n * Wallet's own default at its call sites, and the size the four\n * tests/baselines/productmark-*.png were captured at: a 20px tile in the 24px\n * gutter the specimen crop uses either side -> 68px CSS -> 136 device px at\n * deviceScaleFactor 2. Changing it moves four apps.\n *\n * There is deliberately no minimum-legible floor here, unlike Boost33Mark. That\n * floor is the monogram's alone -- the bowls of the B close up below ~20px. The\n * product marks have the opposite property: each is one path on a 40-unit grid\n * with a quarter-side corner, chosen so it renders correctly from Paper's 96px\n * down to 20px. Do not generalise Boost33Mark's floor into a shared rule.\n */\nconst DEFAULT_SIZE = 20\n\n/**\n * The slugs this package draws a product mark for, as one list. Everything else\n * keys off it: ProductSlug is derived from it, and GLYPHS is typed against it so\n * adding a slug without artwork is a compile error rather than a mark that\n * silently draws nothing.\n *\n * **Module-internal since B33-1269, and it has to stay that way.** `src/index.ts`\n * publishes `hasProductMark` below and neither this list nor `ProductSlug`. A\n * `const` assertion over four strings made an artwork inventory part of the\n * published type contract: a consumer could write `Record<ProductSlug, ...>` or\n * switch exhaustively over it, and then artwork landing for a fifth product --\n * the thing this package exists to ship -- would be a breaking change for them.\n * Nothing published is typed `ProductSlug` anyway; every slug prop is `string` on\n * purpose, so Identity's registry may run ahead of a mark release (ADR-0003, and\n * `slug` below). So the union's only real job was answering \"which slugs have\n * artwork\", and `hasProductMark` answers that without freezing the list.\n *\n * The tests and the specimen read both names by deep import, which is how\n * everything in this repo reaches into `src/`. A consumer cannot: `package.json`\n * exports `.`, `./style.css` and `./theme.css`, and nothing else.\n *\n * **It is no longer the whole of Identity's registry, and the difference is\n * deliberate.** Identity serves five slugs: these four plus `brokers` (B33-1158,\n * \"Boost Brokers\"). This package has no `brokers` glyph, so that row draws the\n * bare tile through the safe degrade below -- see \"The fifth slug\" underneath.\n *\n * **Transcribed from `boost33-identity/src/lib/productRegistry.ts`** -- its\n * `REGISTRY_SLUGS`, which is `PRODUCTS` from `src/config/products.ts` plus\n * `WALLET_SLUG`. That file is the source of truth and this is a copy of it in\n * another repository, which is a thing that drifts. It already did: until\n * B33-1043 this list read `wallet | score | voice | outbound` while this comment\n * asserted it was Identity's, so three of the four rows of a switcher fed\n * straight from `GET /api/v1/products` drew the bare tile (see `slug` below) and\n * nothing anywhere failed.\n *\n * Identity is not the side that renames. ADR-0003 records the shorter slugs as\n * considered and rejected: these match the `?app=` keys live campaign URLs\n * already carry, so renaming them means those links grant nothing on sign-up.\n *\n * `tests/product-mark.test.tsx` pins this list against a second transcription of\n * the same source, so the two repositories cannot part company in silence again.\n * That pin is what the old comment's assertion was standing in for, and it now\n * pins the gap as well as the overlap: it names `brokers` as the one served slug\n * with no glyph here, so a *sixth* product, or artwork landing for this one,\n * fails rather than passing quietly.\n *\n * The *order* is this package's own and not Identity's -- `REGISTRY_SLUGS` ends\n * with `wallet` where this begins with it. Nothing reads a render order off this\n * list: a switcher draws the order its consumer was served (`AppSwitcher`), and\n * the only thing this order sets is the left-to-right run of frames in the\n * ProductMark specimen.\n *\n * ── The fifth slug ───────────────────────────────────────────────────────────\n *\n * **`brokers` is absent because no Brokers artwork exists to lift, not because\n * nobody got to it.** The four glyphs below were taken verbatim out of\n * `boostledger/src/ui/primitives/icons.tsx`, whose own `GLYPHS` is typed\n * `Record<ProductName, ReactNode>` over exactly four display names. There is no\n * Brokers mark in that file, none in `boost33-brand-hub`, and none in this\n * repository. The hub renders the product as a text quick-link and no mark at\n * all.\n *\n * So drawing one here would not be transcribing a mark, it would be inventing\n * one -- and the comment on GLYPHS below records what that costs: PR #4 redrew\n * all four from a written description, got all four wrong, and reintroduced the\n * retired one-orange-element construction. An invented fifth mark is worse than\n * that was, because it has nothing to be caught against. A human captures the\n * first baseline at the fidelity gate, which would make the invention the\n * referent, and it looks equally settled either way afterwards (CLAUDE.md, \"an\n * agent that picks one and builds it has invented a referent\").\n *\n * The degrade is also the mildest it will ever be. Identity serves `brokers` as\n * `live: false` -- the space is still being built -- so the switcher row carries\n * the \"Soon\" tag beside the bare tile, which reads as a product that has not\n * arrived rather than as a drawing that failed to load. That stops being true\n * the day Brokers ships.\n *\n * **To close it:** get the mark drawn where the other four live\n * (`boostledger/src/ui/primitives/icons.tsx`), lift it here verbatim, add\n * `brokers` to this list, and let a human approve `productmark-brokers.png` at a\n * gate. Not in that order optional: this list is what GLYPHS is typed against,\n * so adding the slug without the artwork stops the build, which is the one part\n * of this that cannot go wrong quietly.\n *\n * **And since B33-1269 that is an ordinary addition rather than a breaking\n * change.** This list is not published, so widening it widens nothing a consumer\n * has typed against: a fifth entry adds a drawing where there was a bare tile and\n * flips `hasProductMark('brokers')` from false to true. Until then it was a\n * major-bump-shaped change to ship a picture, which is the wrong price for the\n * thing this package is for.\n */\nexport const PRODUCT_SLUGS = ['wallet', 'boostscore', 'boostvoice', 'boostoutbound'] as const\n\n/**\n * One of the slugs this package draws a mark for. Not every slug Identity serves\n * -- see above -- and not published either, for the reason recorded there. What\n * this type is for is typing GLYPHS, so the list and the artwork cannot part\n * company.\n */\nexport type ProductSlug = (typeof PRODUCT_SLUGS)[number]\n\n/**\n * The four product glyphs, lifted verbatim from `boostledger`'s\n * `src/ui/primitives/icons.tsx` (the `GLYPHS` record, as of `837d85d`) rather\n * than redrawn from any written description. Redrawing them from\n * `docs/mintlify/system/product-marks.mdx` is how PR #4 got all four wrong and\n * reintroduced the retired one-orange-element construction; if any document\n * disagrees with that file, that file wins. See B33-562.\n *\n * Each glyph is drawn on its own full 40-unit grid and inset into the middle 20\n * of the tile by the `translate(10 10) scale(0.5)` group below. The stroke\n * widths are right on that grid -- do not \"correct\" them to compensate for the\n * scale, the scale is what puts the stroke at the weight Paper draws. Every\n * element paints in `currentColor` (the tile's white glyph ink) or `none`;\n * there is no colour of any kind in here, which is what tells the four marks\n * apart by shape and never by hue.\n *\n * Typing this `Record<ProductSlug, ReactNode>` is load-bearing: a fifth slug\n * added to PRODUCT_SLUGS without a glyph here stops the build. That is why the\n * list stays a `const` assertion with a union derived from it even though\n * B33-1269 stopped publishing both -- the union moved off the package surface,\n * it did not stop existing, and `tsc --noEmit` is the check that a slug and its\n * drawing arrive together.\n */\nconst GLYPHS: Record<ProductSlug, ReactNode> = {\n // A credit card with its magnetic stripe: an outline card (fill none, so the\n // tile shows through) plus a filled stripe across it.\n wallet: (\n <>\n <rect x=\"5\" y=\"10\" width=\"30\" height=\"20\" rx=\"4\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"3\" />\n <rect x=\"5\" y=\"16\" width=\"30\" height=\"5\" fill=\"currentColor\" />\n </>\n ),\n // A gauge with the needle swung high: an arc, the needle, and the hub it\n // pivots on. Arc and needle stroke at width 4 with round caps.\n boostscore: (\n <>\n <path d=\"M6 26 A14 14 0 0 1 34 26\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"4\" strokeLinecap=\"round\" />\n <line x1=\"20\" y1=\"26\" x2=\"28\" y2=\"14\" stroke=\"currentColor\" strokeWidth=\"4\" strokeLinecap=\"round\" />\n <circle cx=\"20\" cy=\"26\" r=\"3\" fill=\"currentColor\" />\n </>\n ),\n // A soundwave, tall in the middle: three pill bars, all centred on y=20.\n boostvoice: (\n <>\n <rect x=\"6\" y=\"14\" width=\"7\" height=\"12\" rx=\"3.5\" fill=\"currentColor\" />\n <rect x=\"16.5\" y=\"4\" width=\"7\" height=\"32\" rx=\"3.5\" fill=\"currentColor\" />\n <rect x=\"27\" y=\"14\" width=\"7\" height=\"12\" rx=\"3.5\" fill=\"currentColor\" />\n </>\n ),\n // An arrow leaving through the top-right: the shaft and the elbow of its head,\n // both stroke width 4 with round caps and joins.\n boostoutbound: (\n <>\n <line x1=\"8\" y1=\"32\" x2=\"32\" y2=\"8\" stroke=\"currentColor\" strokeWidth=\"4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n <path d=\"M16 8 H32 V24\" fill=\"none\" stroke=\"currentColor\" strokeWidth=\"4\" strokeLinecap=\"round\" strokeLinejoin=\"round\" />\n </>\n ),\n}\n\n/*\n * The narrowing half of the same question, deliberately separate from the\n * published `hasProductMark` below. A type predicate -- `slug is ProductSlug` --\n * is what lets `GLYPHS[slug]` index safely, and it is also a signature that\n * names `ProductSlug` in the emitted `.d.ts`. Publishing this one would put the\n * union back on the package surface through the back door, which is exactly what\n * B33-1269 took off it.\n */\nfunction isProductSlug(slug: string): slug is ProductSlug {\n return (PRODUCT_SLUGS as readonly string[]).includes(slug)\n}\n\n/**\n * Does this package draw a mark for `slug`? The supported way to ask, and the\n * only thing about the artwork inventory the package publishes (B33-1269).\n *\n * **Ask this rather than matching a slug against a union of known slugs.** The\n * set of slugs with artwork is this package's inventory, not a vocabulary:\n * Identity owns which products exist (ADR-0003) and this list grows whenever a\n * drawing lands. `brokers` is the one slug Identity serves today that there is no\n * glyph here for -- see \"The fifth slug\" above. A caller that pattern-matches a\n * union is pinned to whichever inventory it compiled against; a caller that asks\n * this gets the installed version's answer, and keeps working when the next mark\n * ships.\n *\n * **A `false` is not an error and needs no guard around it.** `ProductMark`\n * renders a slug it has no glyph for as the bare tile rather than throwing\n * (ADR-0003's safe degrade), and in a switcher that row is still named, still\n * linked and still clickable -- only the glyph is missing. So do not use this to\n * filter a served registry, to hide a product's row, or to decide to substitute a\n * drawing of your own: every one of those turns a missing glyph into a missing\n * product, and the registry running ahead of the artwork is the supported state.\n *\n * It is here for a caller that needs to *know* rather than to branch on\n * rendering -- a consumer test asserting its own hardcoded fixtures still draw\n * something, or a report of which served slugs have artwork yet.\n */\nexport function hasProductMark(slug: string): boolean {\n return isProductSlug(slug)\n}\n\nexport interface ProductMarkProps {\n /**\n * Identity's product slug. An unknown one -- a product the served registry\n * carries but this package has no artwork for yet -- draws the bare tile\n * rather than throwing (ADR-0003's safe degrade), so the registry can run\n * ahead of a mark release.\n */\n slug: string\n /** Rendered width and height in px. Defaults to 20, the Wallet's own default. */\n size?: number\n /**\n * Dims the tile for a product the account is not entitled to -- the switcher's\n * unowned rows need it. It swaps the **ground only**, to --color-neutral-300;\n * the glyph stays white. Fading the glyph too would cost the shape the one\n * thing telling the four marks apart, and it is a prop rather than a wrapper\n * `opacity-40 grayscale` filter because that lands on a mid-grey visibly\n * darker than the grey Paper draws.\n *\n * **Only use this where the mark is decorative.** White on --color-neutral-300\n * is 1.41:1, well under WCAG 1.4.11's 3:1, and the reason that is not a defect\n * is that the criterion covers graphics *required to understand the content* --\n * which this is not, while the mark is `aria-hidden`, the product's name sits\n * beside it as text, and entitlement is additionally stated in words (the\n * switcher's \"Not on plan\" tag). Combining `muted` with `title`, so the mark\n * stands alone as the sole carrier of a product's identity, removes every one\n * of those and makes the ratio bite. That combination is out of contract; no\n * call site in this package uses it. See ADR-0012, which also records why the\n * ground is not darkened and what to reach for if this is ever revisited.\n */\n muted?: boolean\n /**\n * An accessible name. Omit it -- the default -- and the mark is decorative:\n * `aria-hidden`, contributing nothing to the accessibility tree. That is the\n * right answer in the switcher, where the product's name sits beside it and a\n * name here would only make a screen reader say it twice. Pass one only where\n * the mark stands alone as the sole carrier of meaning.\n *\n * Passing this is what takes the mark out of `muted`'s contract -- see the\n * note there. A mark that carries meaning on its own has to be legible on its\n * own, and the muted ground is not.\n */\n title?: string\n /** Escape hatch for a consumer that needs to position the mark. */\n className?: string\n}\n\n/**\n * The tile-and-glyph mark for one Boost33 product -- a rounded --color-neutral-950\n * square with the product's glyph in --color-primary-foreground. The four marks\n * share one palette and are told apart by shape alone; there is zero brand\n * orange in any of them.\n */\nexport function ProductMark({ slug, size = DEFAULT_SIZE, muted, title, className }: ProductMarkProps) {\n const titleId = useId()\n const decorative = title == null\n const glyph = isProductSlug(slug) ? GLYPHS[slug] : null\n\n return (\n <svg\n className={className != null ? `${styles.mark} ${className}` : styles.mark}\n width={size}\n height={size}\n viewBox=\"0 0 40 40\"\n role={decorative ? undefined : 'img'}\n aria-hidden={decorative ? 'true' : undefined}\n aria-labelledby={decorative ? undefined : titleId}\n >\n {!decorative && <title id={titleId}>{title}</title>}\n {/* The tile. Fill set inline, next to the muted decision that chooses it;\n the corner radius comes from the class (see ProductMark.module.css). */}\n <rect\n className={styles.ground}\n width=\"40\"\n height=\"40\"\n style={{ fill: muted ? 'var(--color-neutral-300)' : 'var(--color-neutral-950)' }}\n />\n {glyph && (\n <g\n transform=\"translate(10 10) scale(0.5)\"\n style={{ color: 'var(--color-primary-foreground)' }}\n >\n {glyph}\n </g>\n )}\n </svg>\n )\n}\n"],"names":["DEFAULT_SIZE","PRODUCT_SLUGS","GLYPHS","jsxs","Fragment","jsx","isProductSlug","slug","hasProductMark","ProductMark","size","muted","title","className","titleId","useId","decorative","glyph","styles"],"mappings":"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"}
1
+ {"version":3,"file":"ProductMark.js","sources":["../../../src/components/ProductMark/ProductMark.tsx"],"sourcesContent":["import { useId, type ReactNode } from 'react'\nimport styles from './ProductMark.module.css'\n\n/**\n * The size the mark renders at unless a caller says otherwise. 20px is the\n * Wallet's own default at its call sites, and the size every\n * tests/baselines/productmark-*.png is captured at: a 20px tile in the 24px\n * gutter the specimen crop uses either side -> 68px CSS -> 136 device px at\n * deviceScaleFactor 2. Changing it moves four apps.\n *\n * There is deliberately no minimum-legible floor here, unlike Boost33Mark. That\n * floor is the monogram's alone -- the bowls of the B close up below ~20px. The\n * product marks are drawn to hold from Paper's 96px down to 20px, and the one\n * glyph with detail that does not survive the small end handles it itself:\n * Passport drops its globe lines below 24px (PASSPORT_GLOBE_LINES_MIN_SIZE), as\n * Paper's \"Small sizes\" row draws it. Do not generalise Boost33Mark's floor into\n * a shared rule.\n */\nconst DEFAULT_SIZE = 20\n\n/**\n * The slugs this package draws a product mark for, as one list. Everything else\n * keys off it: ProductSlug is derived from it, and GLYPHS is typed against it so\n * adding a slug without artwork is a compile error rather than a mark that\n * silently draws nothing.\n *\n * **Module-internal since B33-1269, and it has to stay that way.** `src/index.ts`\n * publishes `hasProductMark` below and neither this list nor `ProductSlug`. A\n * `const` assertion over these strings made an artwork inventory part of the\n * published type contract: a consumer could write `Record<ProductSlug, ...>` or\n * switch exhaustively over it, and then artwork landing for another product --\n * the thing this package exists to ship -- would be a breaking change for them.\n * Nothing published is typed `ProductSlug` anyway; every slug prop is `string` on\n * purpose, so Identity's registry may run ahead of a mark release (ADR-0003, and\n * `slug` below). So the union's only real job was answering \"which slugs have\n * artwork\", and `hasProductMark` answers that without freezing the list.\n * B33-1670 widening this from four slugs to ten is the proof: it adds drawings\n * and flips six `hasProductMark` answers to true, and breaks nothing a consumer\n * could have typed.\n *\n * The tests and the specimen read both names by deep import, which is how\n * everything in this repo reaches into `src/`. A consumer cannot: `package.json`\n * exports `.`, `./style.css` and `./theme.css`, and nothing else.\n *\n * **It is the whole of Identity's registry: all ten slugs, every one with a\n * mark.** Transcribed from `boost33-identity/src/lib/productRegistry.ts` -- its\n * `REGISTRY_SLUGS`, which is `PRODUCTS` from `src/config/products.ts`\n * (boostscore, boostvoice, boostoutbound, brokers, boosttrade, boostfunding)\n * plus `RESULTS_SLUG`, `PASSPORT_SLUG`, `PIPE_SLUG` and `WALLET_SLUG`. That file\n * is the source of truth and this is a copy of it in another repository, which\n * is a thing that drifts. It already did: until B33-1043 this list read\n * `wallet | score | voice | outbound` while its comment asserted it was\n * Identity's, so three of the four rows of a switcher fed straight from\n * `GET /api/v1/products` drew the bare tile (see `slug` below) and nothing\n * anywhere failed.\n *\n * Identity is not the side that renames. ADR-0003 records the shorter slugs as\n * considered and rejected: these match the `?app=` keys live campaign URLs\n * already carry, so renaming them means those links grant nothing on sign-up.\n * The same holds for `boostvoice`, whose mark is already the Content pencil:\n * the product is being renamed Boost Content, and the display name moves on\n * Identity's side (B33-1672) while the slug stays.\n *\n * `tests/product-mark.test.tsx` pins this list against a second transcription of\n * the same source, so the two repositories cannot part company in silence again.\n * The pin also keeps a list of served slugs this package deliberately draws\n * nothing for. That list is empty since B33-1670, and it stays in the test so an\n * eleventh product Identity serves before its mark lands is a recorded decision\n * rather than a quiet pass.\n *\n * The *order* is this package's own and not Identity's -- `REGISTRY_SLUGS` ends\n * with `wallet` where this begins with it, then follows Identity's order for the\n * other nine. Nothing reads a render order off this list: a switcher draws the\n * order its consumer was served (`AppSwitcher`), and the only thing this order\n * sets is the left-to-right run of frames in the ProductMark specimen, where the\n * four slugs that have carried a mark since 0.1 keep the first four places.\n *\n * ── Brokers, and the six that arrived with it ────────────────────────────────\n *\n * From 0.4.0 to 0.6.0 Identity served `brokers` and this package drew it as the\n * bare tile, deliberately: no Brokers artwork existed in any repository to lift,\n * and drawing one here would have been inventing a referent rather than\n * transcribing a mark (PR #4 redrew the first four from a written description\n * and got all four wrong). Identity then grew `boosttrade`, `boostfunding`,\n * `boostresults`, `passport` and `pipe`, all served with no mark here either.\n *\n * B33-1669 closed it the way the old comment said it had to be closed: the\n * marks were drawn where the others live (`boostledger/src/ui/primitives/icons.tsx`),\n * for all ten products at once, and B33-1670 lifted them here verbatim. The\n * part a commit cannot do is still outstanding when this lands -- a human\n * approves `productmark-<slug>.png` for each of the ten at the fidelity gate\n * (tests/baselines/README.md).\n */\nexport const PRODUCT_SLUGS = [\n 'wallet',\n 'boostscore',\n 'boostvoice',\n 'boostoutbound',\n 'brokers',\n 'boosttrade',\n 'boostfunding',\n 'boostresults',\n 'passport',\n 'pipe',\n] as const\n\n/**\n * One of the slugs this package draws a mark for. Not published, for the reason\n * recorded above. What this type is for is typing GLYPHS, so the list and the\n * artwork cannot part company.\n */\nexport type ProductSlug = (typeof PRODUCT_SLUGS)[number]\n\n/*\n * The three paints a mark uses, all tokens. Named once so a glyph below cannot\n * reach for a literal. The tile ground is chosen per render (it greys when\n * muted) and handed to each glyph as `tile`; these two are fixed.\n */\nconst GLYPH = 'var(--color-primary-foreground)'\nconst ACCENT = 'var(--color-primary)'\nconst TILE = 'var(--color-neutral-950)'\nconst MUTED_TILE = 'var(--color-neutral-300)'\n\n/** The tile's own grid: a 40-unit square, cornered by --radius-product-tile. */\nconst TILE_GRID = 40\n\n/** The glyph box as a share of the tile side, before the optical factor. */\nconst GLYPH_BOX = 0.62\n\n/**\n * Below this rendered size Passport drops its two globe lines (the meridian\n * ellipse and the equator): at 20px they are under a pixel apart and fill the\n * globe in, which is what Paper's \"Small sizes\" row draws. A rendered size in\n * px compared against a number, not a px value painted into the mark, so it is\n * not a token. It is upstream's constant under upstream's name.\n */\nconst PASSPORT_GLOBE_LINES_MIN_SIZE = 24\n\ntype Glyph = {\n /** Optical size factor applied to the 62% glyph box. */\n optical: number\n /** The glyph on its 24-unit grid. `tile` is the ground colour in use, for cut-outs. */\n draw: (p: { tile: string; accent: string; size: number }) => ReactNode\n}\n\n/**\n * The ten product glyphs, lifted verbatim from `boostledger`'s\n * `src/ui/primitives/icons.tsx` (the `GLYPHS` record, as of the B33-1669 merge\n * `ad4146f31666db0cbab1f7ba3dcb248215cc8697`, which replaced the four lifted\n * from `837d85d`) rather than redrawn from any written description. Redrawing\n * from `docs/mintlify/system/product-marks.mdx` is how PR #4 got all four of the\n * first set wrong; if any document disagrees with that file, that file wins. See\n * B33-562. Upstream keys the record by display name; this one keys it by\n * Identity's slug, noted against each entry, and every path, number and paint\n * is upstream's unchanged.\n *\n * **Every mark carries exactly ONE orange accent, and that is a reversal.**\n * Decided by Jamal on 29 Oct 2026 (B33-1669; this package's half is B33-1670,\n * and ADR-0015 records it). From 9 Sep 2026 to 29 Oct 2026 the rule here was the\n * opposite: every element painted in `currentColor` or `none`, \"no colour of any\n * kind\", and a test failed any mark that reached for `--color-primary`. That\n * zero-orange rule is retired. If you find it quoted -- in an older copy of this\n * file, a cached doc, a consumer's fork -- it is the old construction.\n *\n * What survives the reversal, and is the rule the set exists to hold: **products\n * are told apart by SHAPE, never by hue.** The accent is the same\n * `--color-primary` in all ten, on one element of the drawing, so it cannot\n * identify anything; it ties the family back to the parent's orange letterform.\n * A mark that is only recognisable by where its orange sits is the wrong shape.\n * Brokers' accent is one element drawn as two shapes, a head and a body.\n *\n * **The accent is identity, not emphasis.** It does not count against a\n * screen's one orange moment (the `--color-primary` rule in tokens.css: the\n * primary action or the threshold marker, never both), any more than the\n * Boost33 monogram's orange letterform does. A switcher showing ten marks has\n * spent none of the screen's orange. Jamal, 29 Oct 2026.\n *\n * Construction. Each glyph is drawn on a 24-unit grid and sits in a box 62% of\n * the tile side, centred, times an optical factor: Passport and Wallet sit at\n * 0.94 and Pipe at 0.96 because their solid masses read larger than the open\n * shapes beside them. Scaling thins the strokes with it; do not \"fix\" the stroke\n * widths to compensate -- they are correct on their own grid.\n *\n * Three paints, all tokens:\n * - the tile: `--color-neutral-950`, or `--color-neutral-300` when muted;\n * - the glyph: `--color-primary-foreground`;\n * - the accent: `--color-primary`, or `--color-primary-foreground` (white)\n * when muted -- a product the account does not own spends no\n * orange.\n * Some glyphs are cut by shapes painted in the TILE colour (Score's ring gap,\n * the pencil's groove, Brokers' outline between the two people, Off Market's key\n * bow, Financing's note edge and coin, Passport's globe lines and name bar,\n * Wallet's clasp pocket). Those are cut-outs, so they take the tile colour\n * actually in use -- muted included -- or a muted mark would show black slivers\n * on its grey ground.\n *\n * Typing this `Record<ProductSlug, Glyph>` is load-bearing: a slug added to\n * PRODUCT_SLUGS without a glyph here stops the build. That is why the list stays\n * a `const` assertion with a union derived from it even though B33-1269 stopped\n * publishing both -- `tsc --noEmit` is the check that a slug and its drawing\n * arrive together.\n */\nconst GLYPHS: Record<ProductSlug, Glyph> = {\n // wallet (upstream \"Wallet\"). A wallet with a card tucked behind its flap and\n // an orange clasp.\n wallet: {\n optical: 0.94,\n draw: ({ tile, accent }) => (\n <>\n <path\n d=\"M5 7 L15.4 3.1 A1.2 1.2 0 0 1 17 4 L17.6 7 Z\"\n fill={GLYPH}\n stroke={GLYPH}\n strokeWidth=\"1\"\n strokeLinejoin=\"round\"\n />\n <rect x=\"2.5\" y=\"6.5\" width=\"19\" height=\"15\" rx=\"3\" fill={GLYPH} />\n <rect x=\"14.5\" y=\"10.75\" width=\"9\" height=\"6.5\" rx=\"2.5\" fill={tile} />\n <circle cx=\"17.75\" cy=\"14\" r=\"1.5\" fill={accent} />\n </>\n ),\n },\n // boostscore (upstream \"Boost Score\"). A target: a white ring around an orange\n // bull's-eye.\n boostscore: {\n optical: 1,\n draw: ({ tile, accent }) => (\n <>\n <circle cx=\"12\" cy=\"12\" r=\"10\" fill={GLYPH} />\n <circle cx=\"12\" cy=\"12\" r=\"7\" fill={tile} />\n <circle cx=\"12\" cy=\"12\" r=\"4\" fill={accent} />\n </>\n ),\n },\n // boostvoice (upstream \"Boost Voice\"). The CONTENT pencil: the product is being\n // renamed Boost Content and the mark is already drawn for the new name. The\n // slug stays `boostvoice`; the display rename is Identity's (B33-1672).\n boostvoice: {\n optical: 1,\n draw: ({ tile, accent }) => (\n <>\n <path\n d=\"M15.8 3.6 A2 2 0 0 1 18.6 3.6 L20.4 5.4 A2 2 0 0 1 20.4 8.2 L9 19.6 L4 20.5 L4.4 15 Z\"\n fill={GLYPH}\n stroke={GLYPH}\n strokeWidth=\"1\"\n strokeLinejoin=\"round\"\n />\n <path d=\"M13.4 6 L18 10.6\" stroke={tile} strokeWidth=\"1.6\" strokeLinecap=\"round\" />\n <rect x=\"13\" y=\"18.25\" width=\"8.5\" height=\"2.75\" rx=\"1.375\" fill={accent} />\n </>\n ),\n },\n // boostoutbound (upstream \"Boost Outbound\"). A paper plane, its near wing orange.\n boostoutbound: {\n optical: 1,\n draw: ({ tile, accent }) => (\n <>\n <path\n d=\"M21 3 L3 10.4 L10.2 13.8 Z\"\n fill={GLYPH}\n stroke={GLYPH}\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M21 3 L10.2 13.8 L13.6 21 Z\"\n fill={accent}\n stroke={accent}\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n {/* Muted, both wings are white and would merge into one triangle; a fold\n line in the tile colour keeps the plane. */}\n {accent === GLYPH && (\n <path d=\"M20 4 L10.2 13.8\" stroke={tile} strokeWidth=\"1.4\" strokeLinecap=\"round\" />\n )}\n </>\n ),\n },\n // brokers (upstream \"Boost Brokers\"). Two people, the one behind in orange; a\n // tile-coloured outline separates the white figure in front from it.\n brokers: {\n optical: 1,\n draw: ({ tile, accent }) => (\n <>\n <circle cx=\"16.5\" cy=\"7.5\" r=\"3.25\" fill={accent} />\n <path d=\"M11 20 A5.5 5.5 0 0 1 22 20 Z\" fill={accent} />\n <circle cx=\"9\" cy=\"7.5\" r=\"3.75\" fill={GLYPH} stroke={tile} strokeWidth=\"1.5\" />\n <path\n d=\"M2 20.5 A7 7 0 0 1 16 20.5 Z\"\n fill={GLYPH}\n stroke={tile}\n strokeWidth=\"1.5\"\n strokeLinejoin=\"round\"\n />\n </>\n ),\n },\n // boosttrade (upstream \"Boost Off Market\"). A key -- something not on the open\n // market -- with an orange bow.\n boosttrade: {\n optical: 1,\n draw: ({ tile, accent }) => (\n <>\n <rect x=\"11\" y=\"10.6\" width=\"11\" height=\"2.8\" rx=\"1.4\" fill={GLYPH} />\n <rect x=\"15.6\" y=\"11\" width=\"2.8\" height=\"5\" rx=\"1.2\" fill={GLYPH} />\n <rect x=\"19.2\" y=\"11\" width=\"2.8\" height=\"3.8\" rx=\"1.2\" fill={GLYPH} />\n <circle cx=\"7.5\" cy=\"12\" r=\"5.5\" fill={GLYPH} />\n <circle cx=\"7.5\" cy=\"12\" r=\"2.6\" fill={tile} />\n <circle cx=\"7.5\" cy=\"12\" r=\"1.6\" fill={accent} />\n </>\n ),\n },\n // boostfunding (upstream \"Boost Financing\"). A banknote with its coin, an\n // orange note stacked behind it.\n boostfunding: {\n optical: 1,\n draw: ({ tile, accent }) => (\n <>\n <rect x=\"4.75\" y=\"4.5\" width=\"17\" height=\"11\" rx=\"2.5\" fill={accent} />\n <rect x=\"1\" y=\"8.25\" width=\"18.75\" height=\"12.5\" rx=\"3.25\" fill={tile} />\n <rect x=\"2.25\" y=\"9.5\" width=\"16.25\" height=\"10\" rx=\"2\" fill={GLYPH} />\n <circle cx=\"10.375\" cy=\"14.5\" r=\"2.75\" fill={tile} />\n </>\n ),\n },\n // boostresults (upstream \"Boost Activity\"). A pulse line running into an\n // orange dot -- activity, now.\n boostresults: {\n optical: 1,\n draw: ({ accent }) => (\n <>\n <path\n d=\"M2.5 12.5 H6 L9 5 L14 19 L16.6 12.5 H17\"\n fill=\"none\"\n stroke={GLYPH}\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <circle cx=\"20\" cy=\"12.5\" r=\"2.5\" fill={accent} />\n </>\n ),\n },\n // passport (upstream \"Boost Passport\"). A passport booklet with an orange globe\n // and a name bar. The globe's meridian and equator are dropped below 24px (see\n // the constant above).\n passport: {\n optical: 0.94,\n draw: ({ tile, accent, size }) => (\n <>\n <rect x=\"4.5\" y=\"2\" width=\"15\" height=\"20\" rx=\"2.5\" fill={GLYPH} />\n {/* Muted, a white globe would vanish into the white book, so it flips to\n the tile colour and its lines to white, as Paper's no-orange row draws. */}\n <circle cx=\"12\" cy=\"10\" r=\"5.75\" fill={accent === GLYPH ? tile : accent} />\n {size >= PASSPORT_GLOBE_LINES_MIN_SIZE && (\n <>\n <ellipse\n cx=\"12\"\n cy=\"10\"\n rx=\"2.5\"\n ry=\"5.1\"\n fill=\"none\"\n stroke={accent === GLYPH ? GLYPH : tile}\n strokeWidth=\"1.3\"\n />\n <path d=\"M6.25 10 H17.75\" stroke={accent === GLYPH ? GLYPH : tile} strokeWidth=\"1.3\" />\n </>\n )}\n <rect x=\"8.5\" y=\"17.75\" width=\"7\" height=\"1.8\" rx=\"0.9\" fill={tile} />\n </>\n ),\n },\n // pipe (upstream \"Boost Pipe\"). A pipeline narrowing in three stages, the last\n // -- the deal -- orange.\n pipe: {\n optical: 0.96,\n draw: ({ accent }) => (\n <>\n <rect x=\"2.5\" y=\"4\" width=\"19\" height=\"4\" rx=\"2\" fill={GLYPH} />\n <rect x=\"6\" y=\"10\" width=\"12\" height=\"4\" rx=\"2\" fill={GLYPH} />\n <rect x=\"9.5\" y=\"16\" width=\"5\" height=\"4\" rx=\"2\" fill={accent} />\n </>\n ),\n },\n}\n\n/*\n * The narrowing half of the same question, deliberately separate from the\n * published `hasProductMark` below. A type predicate -- `slug is ProductSlug` --\n * is what lets `GLYPHS[slug]` index safely, and it is also a signature that\n * names `ProductSlug` in the emitted `.d.ts`. Publishing this one would put the\n * union back on the package surface through the back door, which is exactly what\n * B33-1269 took off it.\n */\nfunction isProductSlug(slug: string): slug is ProductSlug {\n return (PRODUCT_SLUGS as readonly string[]).includes(slug)\n}\n\n/**\n * Does this package draw a mark for `slug`? The supported way to ask, and the\n * only thing about the artwork inventory the package publishes (B33-1269).\n *\n * **Ask this rather than matching a slug against a union of known slugs.** The\n * set of slugs with artwork is this package's inventory, not a vocabulary:\n * Identity owns which products exist (ADR-0003) and this list grows whenever a\n * drawing lands. Since B33-1670 every slug Identity serves has a mark, and the\n * next product Identity adds will be served before its mark ships here. A\n * caller that pattern-matches a union is pinned to whichever inventory it compiled against; a caller that asks\n * this gets the installed version's answer, and keeps working when the next mark\n * ships.\n *\n * **A `false` is not an error and needs no guard around it.** `ProductMark`\n * renders a slug it has no glyph for as the bare tile rather than throwing\n * (ADR-0003's safe degrade), and in a switcher that row is still named, still\n * linked and still clickable -- only the glyph is missing. So do not use this to\n * filter a served registry, to hide a product's row, or to decide to substitute a\n * drawing of your own: every one of those turns a missing glyph into a missing\n * product, and the registry running ahead of the artwork is the supported state.\n *\n * It is here for a caller that needs to *know* rather than to branch on\n * rendering -- a consumer test asserting its own hardcoded fixtures still draw\n * something, or a report of which served slugs have artwork yet.\n */\nexport function hasProductMark(slug: string): boolean {\n return isProductSlug(slug)\n}\n\nexport interface ProductMarkProps {\n /**\n * Identity's product slug. An unknown one -- a product the served registry\n * carries but this package has no artwork for yet -- draws the bare tile\n * rather than throwing (ADR-0003's safe degrade), so the registry can run\n * ahead of a mark release.\n */\n slug: string\n /** Rendered width and height in px. Defaults to 20, the Wallet's own default. */\n size?: number\n /**\n * Dims the tile for a product the account is not entitled to -- the switcher's\n * unowned and unbuilt rows need it. The tile ground greys to\n * --color-neutral-300, and the cut-outs painted in the tile colour grey with\n * it. The glyph stays white, and **the orange accent turns white too** (Jamal,\n * 29 Oct 2026, B33-1669): a product the account does not own spends no\n * orange. Two marks take the drawing from Paper's \"Option: no orange\" row to\n * stay legible without the accent -- Outbound gains a fold line in the tile\n * colour between its two wings, and Passport's globe flips to the tile colour\n * with white lines. Fading the glyph instead would cost the shape the one\n * thing telling the marks apart, and it is a prop rather than a wrapper\n * `opacity-40 grayscale` filter because that lands on a mid-grey visibly\n * darker than the grey Paper draws.\n *\n * **Only use this where the mark is decorative.** White on --color-neutral-300\n * is 1.41:1, well under WCAG 1.4.11's 3:1, and the reason that is not a defect\n * is that the criterion covers graphics *required to understand the content* --\n * which this is not, while the mark is `aria-hidden`, the product's name sits\n * beside it as text, and entitlement is additionally stated in words (the\n * switcher's \"Not on plan\" tag). Combining `muted` with `title`, so the mark\n * stands alone as the sole carrier of a product's identity, removes every one\n * of those and makes the ratio bite. That combination is out of contract; no\n * call site in this package uses it. See ADR-0012, which also records why the\n * ground is not darkened and what to reach for if this is ever revisited.\n * Since the accent turned white on a muted tile, every ink on that tile is the\n * same white ADR-0012 measured, so its 1.41:1 is still the only ratio there is.\n */\n muted?: boolean\n /**\n * An accessible name. Omit it -- the default -- and the mark is decorative:\n * `aria-hidden`, contributing nothing to the accessibility tree. That is the\n * right answer in the switcher, where the product's name sits beside it and a\n * name here would only make a screen reader say it twice. Pass one only where\n * the mark stands alone as the sole carrier of meaning.\n *\n * Passing this is what takes the mark out of `muted`'s contract -- see the\n * note there. A mark that carries meaning on its own has to be legible on its\n * own, and the muted ground is not.\n */\n title?: string\n /** Escape hatch for a consumer that needs to position the mark. */\n className?: string\n}\n\n/**\n * The tile-and-glyph mark for one Boost33 product -- a rounded --color-neutral-950\n * square with the product's glyph in --color-primary-foreground and one accent\n * in --color-primary. The ten marks share one palette and are told apart by\n * shape; the accent is the same orange in every one of them, so it identifies\n * nothing.\n */\nexport function ProductMark({ slug, size = DEFAULT_SIZE, muted, title, className }: ProductMarkProps) {\n const titleId = useId()\n const decorative = title == null\n const glyph = isProductSlug(slug) ? GLYPHS[slug] : null\n const tile = muted ? MUTED_TILE : TILE\n const accent = muted ? GLYPH : ACCENT\n\n return (\n <svg\n className={className != null ? `${styles.mark} ${className}` : styles.mark}\n width={size}\n height={size}\n viewBox={`0 0 ${TILE_GRID} ${TILE_GRID}`}\n role={decorative ? undefined : 'img'}\n aria-hidden={decorative ? 'true' : undefined}\n aria-labelledby={decorative ? undefined : titleId}\n >\n {!decorative && <title id={titleId}>{title}</title>}\n {/* The tile. Fill set inline, next to the muted decision that chooses it;\n the corner radius comes from the class (see ProductMark.module.css). */}\n <rect className={styles.ground} width={TILE_GRID} height={TILE_GRID} style={{ fill: tile }} />\n {glyph && <g transform={glyphTransform(glyph.optical)}>{glyph.draw({ tile, accent, size })}</g>}\n </svg>\n )\n}\n\n/**\n * The 24-unit glyph scaled into a box 62% of the tile side times its optical\n * factor, and centred -- upstream's arithmetic, so the transform strings match\n * boostledger's to the digit (`translate(7.6 7.6) scale(1.0333)` for a factor\n * of 1). This replaced the `translate(10 10) scale(0.5)` the 40-unit glyphs\n * before B33-1670 were inset with.\n */\nfunction glyphTransform(optical: number): string {\n const box = TILE_GRID * GLYPH_BOX * optical\n const offset = round((TILE_GRID - box) / 2)\n const scale = round(box / 24)\n return `translate(${offset} ${offset}) scale(${scale})`\n}\n\n/** Four decimals: enough for sub-pixel accuracy at any size, short in the DOM. */\nfunction round(n: number): number {\n return Math.round(n * 10000) / 10000\n}\n"],"names":["DEFAULT_SIZE","PRODUCT_SLUGS","GLYPH","ACCENT","TILE","MUTED_TILE","TILE_GRID","GLYPH_BOX","PASSPORT_GLOBE_LINES_MIN_SIZE","GLYPHS","tile","accent","jsxs","Fragment","jsx","size","isProductSlug","slug","hasProductMark","ProductMark","muted","title","className","titleId","useId","decorative","glyph","styles","glyphTransform","optical","box","offset","round","scale","n"],"mappings":"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"}
@@ -1,12 +1,39 @@
1
- import { ReactNode } from 'react';
1
+ import { ElementType, ReactNode } from 'react';
2
2
  export interface WordmarkProps {
3
3
  /**
4
4
  * The Boost33 mark -- the logo artwork, owned by its own ticket. Passed in
5
5
  * rather than hardcoded here so the wordmark does not carry a second copy of
6
6
  * the mark. On the rail it is all that shows.
7
+ *
8
+ * **Pass it unlinked.** With `hubHref` set the whole lockup is already the
9
+ * link; a `Boost33Mark` given its own `hubHref` here would nest one anchor
10
+ * inside another, which is invalid HTML and two tab stops for one place.
7
11
  */
8
12
  mark?: ReactNode;
9
13
  /** Sidebar-on-the-rail state. Hides the "Boost33" name; the mark stays. */
10
14
  collapsed?: boolean;
15
+ /**
16
+ * Where the hub lives. Set it and the whole lockup -- mark and name, or the
17
+ * mark alone on the rail -- renders as a link there; omit it and the lockup
18
+ * renders exactly as it did before, a plain `div` (B33-1699).
19
+ *
20
+ * **The consumer supplies the URL; the package never does.** Identity owns
21
+ * where the hub lives, and the estate already resolves it per environment
22
+ * (Score from a validated env var, Voice from a zod-defaulted one), so a
23
+ * literal here would point every staging build at production.
24
+ *
25
+ * The link's accessible name is the "Boost33" name, which stays in the
26
+ * accessibility tree on the rail as well, so the rail's mark-only link is
27
+ * still named.
28
+ */
29
+ hubHref?: string;
30
+ /**
31
+ * The element the linked lockup renders through. Defaults to a plain `a`; a
32
+ * consumer whose router owns navigation passes its own so a same-app hub
33
+ * routes client-side with the locale prefix intact (ADR-0011, B33-847).
34
+ * Receives `href`, `className` and the `data-collapsed` attribute unchanged.
35
+ * Only used when `hubHref` is set.
36
+ */
37
+ linkComponent?: ElementType;
11
38
  }
12
- export declare function Wordmark({ mark, collapsed }: WordmarkProps): import("react").JSX.Element;
39
+ export declare function Wordmark({ mark, collapsed, hubHref, linkComponent }: WordmarkProps): import("react").JSX.Element;
@@ -1,12 +1,13 @@
1
- import { jsxs as l, jsx as s } from "react/jsx-runtime";
2
- import a from "./Wordmark.module.css.js";
3
- function n({ mark: r, collapsed: e = !1 }) {
4
- return /* @__PURE__ */ l("div", { className: a.wordmark, "data-collapsed": e ? "true" : void 0, children: [
5
- r != null && /* @__PURE__ */ s("span", { className: a.mark, "aria-hidden": "true", children: r }),
6
- /* @__PURE__ */ s("span", { className: a.name, children: "Boost33" })
7
- ] });
1
+ import { jsx as a, jsxs as d, Fragment as c } from "react/jsx-runtime";
2
+ import r from "./Wordmark.module.css.js";
3
+ function h({ mark: e, collapsed: o = !1, hubHref: s, linkComponent: t }) {
4
+ const n = /* @__PURE__ */ d(c, { children: [
5
+ e != null && /* @__PURE__ */ a("span", { className: r.mark, "aria-hidden": "true", children: e }),
6
+ /* @__PURE__ */ a("span", { className: r.name, children: "Boost33" })
7
+ ] }), l = o ? "true" : void 0;
8
+ return s ? /* @__PURE__ */ a(t ?? "a", { className: r.wordmark, href: s, "data-collapsed": l, children: n }) : /* @__PURE__ */ a("div", { className: r.wordmark, "data-collapsed": l, children: n });
8
9
  }
9
10
  export {
10
- n as Wordmark
11
+ h as Wordmark
11
12
  };
12
13
  //# sourceMappingURL=Wordmark.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Wordmark.js","sources":["../../../src/components/Wordmark/Wordmark.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\nimport styles from './Wordmark.module.css'\n\nexport interface WordmarkProps {\n /**\n * The Boost33 mark -- the logo artwork, owned by its own ticket. Passed in\n * rather than hardcoded here so the wordmark does not carry a second copy of\n * the mark. On the rail it is all that shows.\n */\n mark?: ReactNode\n /** Sidebar-on-the-rail state. Hides the \"Boost33\" name; the mark stays. */\n collapsed?: boolean\n}\n\n// The lockup at the top of the sidebar: the Boost33 mark and the \"Boost33\"\n// name beside it. On the rail the name drops to the accessibility tree and the\n// mark stands alone.\nexport function Wordmark({ mark, collapsed = false }: WordmarkProps) {\n return (\n <div className={styles.wordmark} data-collapsed={collapsed ? 'true' : undefined}>\n {mark != null && (\n <span className={styles.mark} aria-hidden=\"true\">\n {mark}\n </span>\n )}\n <span className={styles.name}>Boost33</span>\n </div>\n )\n}\n"],"names":["Wordmark","mark","collapsed","jsxs","styles","jsx"],"mappings":";;AAiBO,SAASA,EAAS,EAAE,MAAAC,GAAM,WAAAC,IAAY,MAAwB;AACnE,SACE,gBAAAC,EAAC,SAAI,WAAWC,EAAO,UAAU,kBAAgBF,IAAY,SAAS,QACnE,UAAA;AAAA,IAAAD,KAAQ,0BACN,QAAA,EAAK,WAAWG,EAAO,MAAM,eAAY,QACvC,UAAAH,EAAA,CACH;AAAA,IAEF,gBAAAI,EAAC,QAAA,EAAK,WAAWD,EAAO,MAAM,UAAA,UAAA,CAAO;AAAA,EAAA,GACvC;AAEJ;"}
1
+ {"version":3,"file":"Wordmark.js","sources":["../../../src/components/Wordmark/Wordmark.tsx"],"sourcesContent":["import type { ElementType, ReactNode } from 'react'\nimport styles from './Wordmark.module.css'\n\nexport interface WordmarkProps {\n /**\n * The Boost33 mark -- the logo artwork, owned by its own ticket. Passed in\n * rather than hardcoded here so the wordmark does not carry a second copy of\n * the mark. On the rail it is all that shows.\n *\n * **Pass it unlinked.** With `hubHref` set the whole lockup is already the\n * link; a `Boost33Mark` given its own `hubHref` here would nest one anchor\n * inside another, which is invalid HTML and two tab stops for one place.\n */\n mark?: ReactNode\n /** Sidebar-on-the-rail state. Hides the \"Boost33\" name; the mark stays. */\n collapsed?: boolean\n /**\n * Where the hub lives. Set it and the whole lockup -- mark and name, or the\n * mark alone on the rail -- renders as a link there; omit it and the lockup\n * renders exactly as it did before, a plain `div` (B33-1699).\n *\n * **The consumer supplies the URL; the package never does.** Identity owns\n * where the hub lives, and the estate already resolves it per environment\n * (Score from a validated env var, Voice from a zod-defaulted one), so a\n * literal here would point every staging build at production.\n *\n * The link's accessible name is the \"Boost33\" name, which stays in the\n * accessibility tree on the rail as well, so the rail's mark-only link is\n * still named.\n */\n hubHref?: string\n /**\n * The element the linked lockup renders through. Defaults to a plain `a`; a\n * consumer whose router owns navigation passes its own so a same-app hub\n * routes client-side with the locale prefix intact (ADR-0011, B33-847).\n * Receives `href`, `className` and the `data-collapsed` attribute unchanged.\n * Only used when `hubHref` is set.\n */\n linkComponent?: ElementType\n}\n\n// The lockup at the top of the sidebar: the Boost33 mark and the \"Boost33\"\n// name beside it. On the rail the name drops to the accessibility tree and the\n// mark stands alone.\n//\n// With `hubHref` it is also the way home. Before B33-1699 the trip back to the\n// hub existed only as a row inside the switcher's panel, and a founder testing\n// as a new user could not find it (\"I don't see the button\"). The lockup in the\n// top-left corner is where people look for that link, so the lockup becomes it.\n// The linked and unlinked forms draw the same pixels; only focus differs.\nexport function Wordmark({ mark, collapsed = false, hubHref, linkComponent }: WordmarkProps) {\n const content = (\n <>\n {mark != null && (\n <span className={styles.mark} aria-hidden=\"true\">\n {mark}\n </span>\n )}\n <span className={styles.name}>Boost33</span>\n </>\n )\n const dataCollapsed = collapsed ? 'true' : undefined\n\n if (hubHref) {\n const Link = linkComponent ?? 'a'\n return (\n <Link className={styles.wordmark} href={hubHref} data-collapsed={dataCollapsed}>\n {content}\n </Link>\n )\n }\n\n return (\n <div className={styles.wordmark} data-collapsed={dataCollapsed}>\n {content}\n </div>\n )\n}\n"],"names":["Wordmark","mark","collapsed","hubHref","linkComponent","content","jsxs","Fragment","styles","jsx","dataCollapsed"],"mappings":";;AAkDO,SAASA,EAAS,EAAE,MAAAC,GAAM,WAAAC,IAAY,IAAO,SAAAC,GAAS,eAAAC,KAAgC;AAC3F,QAAMC,IACJ,gBAAAC,EAAAC,GAAA,EACG,UAAA;AAAA,IAAAN,KAAQ,0BACN,QAAA,EAAK,WAAWO,EAAO,MAAM,eAAY,QACvC,UAAAP,EAAA,CACH;AAAA,IAEF,gBAAAQ,EAAC,QAAA,EAAK,WAAWD,EAAO,MAAM,UAAA,UAAA,CAAO;AAAA,EAAA,GACvC,GAEIE,IAAgBR,IAAY,SAAS;AAE3C,SAAIC,IAGA,gBAAAM,EAFWL,KAAiB,OAEtB,WAAWI,EAAO,UAAU,MAAML,GAAS,kBAAgBO,GAC9D,UAAAL,EAAA,CACH,sBAKD,OAAA,EAAI,WAAWG,EAAO,UAAU,kBAAgBE,GAC9C,UAAAL,GACH;AAEJ;"}
@@ -1,12 +1,12 @@
1
- const r = "_wordmark_1k88r_4", a = "_mark_1k88r_17", k = "_name_1k88r_35", m = {
2
- wordmark: r,
3
- mark: a,
4
- name: k
1
+ const a = "_wordmark_ccf4z_4", c = "_mark_ccf4z_32", r = "_name_ccf4z_50", m = {
2
+ wordmark: a,
3
+ mark: c,
4
+ name: r
5
5
  };
6
6
  export {
7
7
  m as default,
8
- a as mark,
9
- k as name,
10
- r as wordmark
8
+ c as mark,
9
+ r as name,
10
+ a as wordmark
11
11
  };
12
12
  //# sourceMappingURL=Wordmark.module.css.js.map
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- .btn-primary,.btn-quiet,.btn-danger{cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.btn-primary{border:none;background:var(--color-primary);color:var(--color-primary-foreground)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-quiet{background:transparent;color:var(--color-foreground-secondary)}.btn-quiet:hover:not(:disabled){background:var(--color-surface-muted)}.btn-danger{border:1px solid var(--color-danger);background:var(--color-danger);color:var(--color-neutral-0)}.btn-danger:hover:not(:disabled){border-color:color-mix(in srgb,var(--color-danger) 85%,var(--color-neutral-950));background:color-mix(in srgb,var(--color-danger) 85%,var(--color-neutral-950))}.btn-primary:disabled,.btn-quiet:disabled,.btn-danger:disabled{opacity:.55;cursor:not-allowed}.spinner{box-sizing:border-box;width:var(--spacing-4_5);height:var(--spacing-4_5);border:2px solid var(--color-neutral-0);border-right-color:transparent;border-radius:var(--radius-full);animation:boost33-spin var(--dur-spin) linear infinite}.spinner--sm{width:var(--spacing-3_5);height:var(--spacing-3_5)}.spinner--primary{border-color:var(--color-primary);border-right-color:transparent}@keyframes boost33-spin{to{transform:rotate(360deg)}}.sk{display:block;border-radius:var(--radius-md);background:var(--color-surface-muted);animation:boost33-pulse var(--dur-pulse) ease-in-out infinite}.sk-group{animation:boost33-appear var(--dur-base) var(--ease-out) var(--dur-fast) both}.reveal{animation:boost33-appear var(--dur-base) var(--ease-out) both}@keyframes boost33-pulse{50%{opacity:.55}}@keyframes boost33-appear{0%{opacity:0}}@media(prefers-reduced-motion:no-preference){.btn-primary:active:not(:disabled),.btn-quiet:active:not(:disabled),.btn-danger:active:not(:disabled){transform:scale(.98)}}@media(prefers-reduced-motion:reduce){.sk,.sk-group,.reveal,.spinner{animation:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:0s!important;scroll-behavior:auto!important}}._sidebar_17kel_7{display:flex;flex-direction:column;box-sizing:border-box;width:var(--container-sidebar);height:100%;padding-inline:var(--spacing-3);border-right:1px solid var(--color-border);background:var(--color-background);font-family:var(--font-sans)}._sidebar_17kel_7[data-collapsed=true]{width:var(--container-sidebar-rail)}._sidebar_17kel_7>nav{flex-shrink:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:calc(-1 * var(--spacing-1));padding:var(--spacing-1);scroll-padding:var(--spacing-1)}@media(prefers-reduced-motion:reduce){._sidebar_17kel_7>nav{scroll-behavior:auto}}._section_3sxsg_5{display:flex;flex-direction:column}._header_3sxsg_13{margin:0;padding:var(--spacing-2) var(--spacing-2_5);color:var(--color-foreground-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase}._wordmark_1k88r_4{display:flex;align-items:center;gap:var(--spacing-2_5);font-family:var(--font-display)}._mark_1k88r_17{display:inline-flex;flex:0 0 var(--spacing-6);align-items:center;justify-content:center;width:var(--spacing-6);height:var(--spacing-6)}._mark_1k88r_17 svg{width:100%;height:100%}._name_1k88r_35{color:var(--color-foreground);font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight)}._wordmark_1k88r_4[data-collapsed=true] ._name_1k88r_35{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px;white-space:nowrap}._wordmark_1k88r_4[data-collapsed=true]{justify-content:center}._tile_5vhrh_12{fill:var(--color-neutral-950)}._ring_5vhrh_16{fill:var(--color-primary)}._mark_5vhrh_24{display:block}._mark_1jt5g_6{display:block}._ground_1jt5g_17{rx:var(--radius-product-tile)}._row_w21mf_4{display:flex;align-items:center;width:100%;gap:var(--spacing-2_5);padding:var(--spacing-2) var(--spacing-2_5);border:none;border-radius:var(--radius-lg);background:transparent;font-family:var(--font-sans);text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}._row_w21mf_4:hover{background:var(--color-surface-muted)}._row_w21mf_4[data-active=true]{background:var(--color-surface)}._row_w21mf_4:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._icon_w21mf_41{display:inline-flex;flex:0 0 var(--spacing-4);align-items:center;justify-content:center;width:var(--spacing-4);height:var(--spacing-4);color:var(--color-foreground-secondary)}._icon_w21mf_41 svg{width:100%;height:100%}._row_w21mf_4[data-active=true] ._icon_w21mf_41{color:var(--color-foreground)}._row_w21mf_4[data-collapsed=true]{justify-content:center}._label_w21mf_66{flex:1 1 auto;min-width:0;overflow:hidden;color:var(--color-foreground-secondary);font-size:var(--text-nav-label);font-weight:var(--font-weight-regular);text-overflow:ellipsis;white-space:nowrap}._row_w21mf_4[data-active=true] ._label_w21mf_66{color:var(--color-foreground);font-weight:var(--font-weight-semibold)}._row_w21mf_4[data-collapsed=true] ._label_w21mf_66{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px;white-space:nowrap}._trailingSlot_w21mf_92{display:flex;flex:0 0 var(--spacing-5_5);align-items:center;justify-content:center;width:var(--spacing-5_5);font-family:var(--font-sans);font-size:var(--text-nav-label)}._row_w21mf_4[data-collapsed=true] ._trailingSlot_w21mf_92{display:none}._count_w21mf_106{color:var(--color-foreground-muted)}._countUrgent_w21mf_110{color:var(--color-primary)}@media(prefers-reduced-motion:reduce){._row_w21mf_4{transition:none}}._chip_xxga2_37{--chip-lift: 0px;position:relative;box-sizing:border-box;width:100%;padding:calc(var(--spacing-3) + var(--chip-lift));border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:transparent;font-family:var(--font-sans)}._chip_xxga2_37:not([data-unknown]):hover,._chip_xxga2_37:not([data-unknown]):focus-within,._chip_xxga2_37[data-threshold]{--chip-lift: var(--spacing-0_5);box-shadow:var(--shadow-overlay)}._chip_xxga2_37:not([data-threshold]):not([data-unknown]):hover,._chip_xxga2_37:not([data-threshold]):not([data-unknown]):focus-within{background:var(--color-surface)}._chip_xxga2_37:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._header_xxga2_74{display:flex;align-items:center;gap:var(--spacing-2)}._chip_xxga2_37:not([data-threshold]):not([data-unknown]) ._header_xxga2_74{padding-right:var(--spacing-topup-reserve)}._name_xxga2_83{min-width:0;overflow:hidden;color:var(--color-foreground-muted);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-tight);text-overflow:ellipsis;white-space:nowrap}._pill_xxga2_162{padding:var(--spacing-0_5) var(--spacing-2);border-radius:var(--radius-full);background:var(--color-warning-subtle);color:var(--color-warning);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold)}._figure_xxga2_171{display:flex;align-items:baseline;gap:var(--spacing-1_5);margin-top:calc(var(--spacing-2_5) + var(--chip-lift))}._amount_xxga2_186{color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);line-height:var(--leading-none)}._unit_xxga2_195{color:var(--color-foreground-muted);font-size:var(--text-xs)}._retry_xxga2_200{width:var(--spacing-3);height:var(--spacing-3);color:var(--color-foreground-muted)}._bar_xxga2_209{display:flex;overflow:hidden;width:100%;height:calc(var(--spacing-1_25) + var(--chip-lift));margin-top:calc(var(--spacing-2_5) + var(--chip-lift));border-radius:var(--radius-full)}._bar_xxga2_209[data-tone=rest]{background:var(--color-surface-muted)}._bar_xxga2_209[data-tone=threshold]{background:var(--color-warning-subtle)}._bar_xxga2_209[data-tone=unknown]{background:var(--color-surface-muted)}._segmentGranted_xxga2_230,._segmentPurchased_xxga2_231{height:100%;transition:width var(--dur-fast) var(--ease-out)}._segmentGranted_xxga2_230{background:var(--color-grant)}._segmentPurchased_xxga2_231{background:var(--color-purchased)}._details_xxga2_275{display:none}._chip_xxga2_37:hover ._details_xxga2_275,._chip_xxga2_37:focus-within ._details_xxga2_275{display:block}._split_xxga2_284{display:flex;flex-direction:column;gap:var(--spacing-1);margin:var(--spacing-2_5) 0 0}._splitRow_xxga2_291{display:flex;align-items:center;justify-content:space-between}._splitLabel_xxga2_297{display:flex;align-items:center;gap:var(--spacing-1_5);color:var(--color-foreground);font-size:var(--text-xs)}._splitAmount_xxga2_305{margin:0;color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}._dotGranted_xxga2_313,._dotPurchased_xxga2_314{width:var(--spacing-1_5);height:var(--spacing-1_5);border-radius:var(--radius-full)}._dotGranted_xxga2_313{background:var(--color-grant)}._dotPurchased_xxga2_314{background:var(--color-purchased)}._footer_xxga2_328{margin:var(--spacing-3) 0 0;padding-top:var(--spacing-1);border-top:1px solid var(--color-border);color:var(--color-foreground-muted);font-size:var(--text-2xs)}._burnNote_xxga2_336{margin:var(--spacing-2_5) 0 0;color:var(--color-foreground-secondary);font-size:var(--text-2xs);line-height:var(--leading-snug)}._topUp_xxga2_87{position:absolute;top:calc(var(--spacing-3) + var(--chip-lift));right:calc(var(--spacing-3) + var(--chip-lift));padding:0;border:none;background:transparent;color:var(--color-primary);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);opacity:0;cursor:pointer;transition:opacity var(--dur-fast) var(--ease-out)}._chip_xxga2_37:hover ._topUp_xxga2_87,._chip_xxga2_37:focus-within ._topUp_xxga2_87,._topUp_xxga2_87:focus-visible{opacity:1}._topUp_xxga2_87:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._topUp_xxga2_87[data-grown=true]{position:static;width:100%;margin-top:var(--spacing-2_5);padding:var(--spacing-2);border-radius:var(--radius-lg);background:var(--color-primary);color:var(--color-primary-foreground);font-size:var(--text-sm);opacity:1}._topUp_xxga2_87[data-grown=true]:hover{background:var(--color-primary-hover)}._rail_xxga2_402{--chip-lift: 0px;position:relative;display:flex;box-sizing:border-box;width:100%;flex-direction:column;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2);font-family:var(--font-sans)}._railIcon_xxga2_416{width:var(--spacing-6);height:var(--spacing-6);color:var(--color-foreground-secondary)}._railFigure_xxga2_422{color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}._rail_xxga2_402 ._bar_xxga2_209{height:var(--spacing-0_5);margin-top:0}._srOnly_xxga2_435{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px;white-space:nowrap}@media(prefers-reduced-motion:reduce){._segmentGranted_xxga2_230,._segmentPurchased_xxga2_231,._topUp_xxga2_87{transition:none}}._bar_194bx_7{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-4);box-sizing:border-box;height:var(--spacing-12);padding:0 var(--spacing-8);border-bottom:1px solid var(--color-border);background:var(--color-surface);font-family:var(--font-sans)}._breadcrumb_194bx_20{display:flex;min-width:0;align-items:center;gap:var(--spacing-2);overflow:hidden;color:var(--color-foreground);font-size:var(--text-sm);font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap}._actions_194bx_33{display:flex;flex:0 0 auto;align-items:center;gap:var(--spacing-2)}@supports (animation-timeline: --a) and (timeline-scope: --a){@container style(--boost33-shell-timeline: on){._bar_194bx_7{position:relative;z-index:1;animation:_scrolled_194bx_1 linear both;animation-timeline:--boost33-shell-scroll;animation-range:0 var(--spacing-10)}}}@keyframes _scrolled_194bx_1{to{box-shadow:var(--shadow-scrolled)}}._header_i17td_42{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-8);padding:var(--spacing-4_5) var(--spacing-8) var(--spacing-4);background:var(--color-surface);font-family:var(--font-sans)}._headings_i17td_52{display:flex;min-width:0;flex-direction:column;gap:var(--spacing-1)}._title_i17td_33{margin:0;color:var(--color-foreground);font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}._subtitle_i17td_74{margin:0;color:var(--color-foreground-secondary);font-size:var(--text-base);font-weight:var(--font-weight-regular);line-height:var(--leading-snug)}._actions_i17td_82{display:flex;flex:0 0 auto;align-items:center;gap:var(--spacing-2)}._shell_10chf_10{display:flex;height:100%;background:var(--color-surface);font-family:var(--font-sans)}._wordmark_10chf_20{padding:var(--spacing-3) var(--spacing-2_5) var(--spacing-5)}._switcher_10chf_26{padding-bottom:var(--spacing-4)}._foot_10chf_33{display:flex;flex-direction:column;gap:var(--spacing-4);margin-block-start:auto;padding-block-start:var(--spacing-4)}._nav_10chf_45{display:flex;flex-direction:column;gap:var(--spacing-4)}._main_10chf_54{display:flex;min-width:0;flex:1;flex-direction:column}._content_10chf_75{flex:1;min-height:0;overflow-y:auto;background:var(--color-surface)}@supports (animation-timeline: --a) and (timeline-scope: --a){._main_10chf_54{timeline-scope:--boost33-shell-scroll;--boost33-shell-timeline: on}._content_10chf_75{scroll-timeline:--boost33-shell-scroll block}}._root_15f7d_8{position:relative;font-family:var(--font-sans)}._trigger_15f7d_17{display:flex;box-sizing:border-box;width:100%;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2_25) var(--spacing-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);background:transparent;font-family:var(--font-sans);cursor:pointer}._trigger_15f7d_17[aria-expanded=true]{background:var(--color-surface-muted)}._trigger_15f7d_17:focus-visible,._railTrigger_15f7d_46:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._triggerName_15f7d_56{overflow:hidden;flex:1;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);text-align:left;text-overflow:ellipsis;white-space:nowrap}._chevron_15f7d_67{width:var(--spacing-3);height:var(--spacing-3);flex-shrink:0;color:var(--color-foreground-muted);transition:transform var(--dur-fast) var(--ease-out)}._trigger_15f7d_17[aria-expanded=true] ._chevron_15f7d_67{transform:rotate(180deg)}._railTrigger_15f7d_46{display:flex;box-sizing:border-box;width:100%;min-height:var(--spacing-6);align-items:flex-start;justify-content:center;padding:0;border:none;background:transparent;cursor:pointer}._panel_15f7d_109{position:absolute;z-index:1;top:100%;left:0;width:var(--container-sidebar);box-sizing:border-box;margin-top:var(--spacing-0_5);padding:var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay)}._hubRow_15f7d_135,._productRow_15f7d_136,._accountRow_15f7d_137{display:flex;box-sizing:border-box;width:100%;align-items:center;gap:var(--spacing-2_5);padding:var(--spacing-2);border:none;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font-family:var(--font-sans);text-align:left;text-decoration:none;cursor:pointer}._hubRow_15f7d_135:hover,._productRow_15f7d_136:hover,._accountRow_15f7d_137:hover{background:var(--color-surface-muted)}._hubRow_15f7d_135:focus-visible,._productRow_15f7d_136:focus-visible,._accountRow_15f7d_137:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}._products_15f7d_144{display:flex;flex-direction:column;gap:var(--spacing-0_5);margin:0;padding:0;list-style:none}._productRow_15f7d_136[data-current=true]{background:var(--color-surface-muted)}._productRow_15f7d_136[data-entitled=false] ._rowName_15f7d_193{color:var(--color-foreground-muted)}._accountRow_15f7d_137{padding-inline:var(--spacing-3)}._accountRow_15f7d_137 ._rowName_15f7d_193{font-size:var(--text-sm)}._accountRow_15f7d_137 ._rowSub_15f7d_213{font-size:var(--text-2xs)}._accountRow_15f7d_137[data-actionable=false]{cursor:default}._accountRow_15f7d_137[data-actionable=false]:hover{background:transparent}._rowText_15f7d_238{display:flex;min-width:0;flex-direction:column}._hubRow_15f7d_135 ._rowText_15f7d_238{gap:var(--spacing-0_5)}._rowName_15f7d_193{overflow:hidden;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-regular);text-overflow:ellipsis;white-space:nowrap}._productRow_15f7d_136 ._rowName_15f7d_193{flex:1}._rowSub_15f7d_213{overflow:hidden;color:var(--color-foreground-muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}._hubMark_15f7d_281{width:var(--spacing-5);height:var(--spacing-5);flex-shrink:0;color:var(--color-foreground)}._tag_15f7d_297{flex-shrink:0;margin-left:auto;padding:var(--spacing-0_5) var(--spacing-1_5);border-radius:var(--radius-full);background:var(--color-surface-muted);color:var(--color-foreground-muted);font-size:var(--text-2xs);font-weight:var(--font-weight-medium)}._check_15f7d_308{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;margin-left:auto;color:var(--color-foreground)}._avatar_15f7d_321{display:grid;width:var(--spacing-6);height:var(--spacing-6);flex-shrink:0;border-radius:var(--radius-lg);background:var(--color-surface-muted);color:var(--color-foreground-secondary);font-size:var(--text-3xs);font-weight:var(--font-weight-semibold);place-items:center}._chevronRight_15f7d_334{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;margin-left:auto;color:var(--color-foreground-muted)}._divider_15f7d_355{margin:var(--spacing-2_25) 0 var(--spacing-2);border:none;border-top:1px solid var(--color-border)}._products_15f7d_144+._divider_15f7d_355{margin:var(--spacing-1_5) 0 var(--spacing-1)}@media(prefers-reduced-motion:reduce){._chevron_15f7d_67{transition:none}}._panel_sl837_36{display:flex;width:var(--container-notification-panel);box-sizing:border-box;flex-direction:column;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay);font-family:var(--font-sans)}._header_sl837_54{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-3_5) var(--spacing-4) var(--spacing-2_5)}._title_sl837_62{margin:0;color:var(--color-foreground);font-size:var(--text-base);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}._markAll_sl837_73{padding:0;border:none;background:transparent;color:var(--color-primary);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-snug);cursor:pointer}._markAll_sl837_73:focus-visible,._tab_sl837_86:focus-visible,._viewAll_sl837_87:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._tabs_sl837_96{display:flex;align-items:center;gap:var(--spacing-4_5);padding-inline:var(--spacing-4);border-bottom:1px solid var(--color-border)}._tab_sl837_86{display:flex;align-items:center;gap:var(--spacing-1_25);padding:var(--spacing-2) 0 var(--spacing-2_5);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--color-foreground-muted);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-regular);line-height:var(--leading-tight);cursor:pointer}._tab_sl837_86[aria-pressed=true]{border-bottom-color:var(--color-foreground);color:var(--color-foreground);font-weight:var(--font-weight-semibold)}._count_sl837_131{padding:var(--spacing-0_25) var(--spacing-1_25);border-radius:var(--radius-full);background:var(--color-surface-muted);color:var(--color-foreground-muted);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}._list_sl837_141{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}._row_sl837_156{display:flex;box-sizing:border-box;width:100%;align-items:flex-start;gap:var(--spacing-2_5);padding:var(--spacing-2_5) var(--spacing-4);color:var(--color-foreground);font-family:var(--font-sans);text-align:left;text-decoration:none}._row_sl837_156[href]:hover{background:var(--color-surface-muted)}._row_sl837_156[href]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}._sourceMark_sl837_187{display:block;flex-shrink:0;margin-top:var(--spacing-0_25);color:var(--color-primary-foreground)}._sourceMarkGround_sl837_196{rx:var(--radius-product-tile);fill:var(--color-neutral-950)}._rowText_sl837_201{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--spacing-0_5)}._rowTitle_sl837_212{color:var(--color-foreground-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:var(--leading-snug)}._row_sl837_156[data-unread=true] ._rowTitle_sl837_212{color:var(--color-foreground)}._rowMeta_sl837_223{color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug)}._unreadSlot_sl837_234{display:flex;width:var(--spacing-4);flex-shrink:0;justify-content:center;padding-top:var(--spacing-1)}._dot_sl837_243{width:var(--spacing-1_5);height:var(--spacing-1_5);flex-shrink:0;border-radius:var(--radius-full);background:var(--color-primary)}._empty_sl837_258{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-2_5);padding:var(--spacing-10) var(--spacing-6) var(--spacing-11)}._emptyGlyph_sl837_267{display:block;width:var(--spacing-7);height:var(--spacing-7);flex-shrink:0;color:var(--color-foreground-disabled)}._emptyText_sl837_275{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-0_5)}._emptyTitle_sl837_282{margin:0;color:var(--color-foreground-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}._emptyBody_sl837_290{margin:0;color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug);text-align:center}._footer_sl837_299{display:flex;align-items:center;justify-content:center;padding:var(--spacing-2_5) var(--spacing-4);border-top:1px solid var(--color-border)}._viewAll_sl837_87{color:var(--color-foreground-secondary);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-snug);text-decoration:none}._viewAll_sl837_87:hover{text-decoration:underline}._srOnly_sl837_321{position:absolute;overflow:hidden;width:1px;height:1px;clip-path:inset(50%);white-space:nowrap}._panel_4usug_54{display:flex;box-sizing:border-box;width:var(--container-account-menu);flex-direction:column;padding:var(--spacing-1_5);border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay);font-family:var(--font-sans)}._person_4usug_72{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3_5) var(--spacing-3)}._personAvatar_4usug_85{display:block;width:var(--spacing-9_5);height:var(--spacing-9_5);flex-shrink:0;border-radius:var(--radius-full);background:var(--color-border-strong);object-fit:cover}._personText_4usug_98{display:flex;min-width:0;flex-direction:column;gap:var(--spacing-0_5)}._personName_4usug_106{overflow:hidden;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}._personEmail_4usug_122{overflow:hidden;color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}._org_4usug_147{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-1);margin-inline:var(--spacing-1_5);padding:var(--spacing-2_25) var(--spacing-3);border-radius:var(--radius-xl);background:var(--color-neutral-50)}._orgIdentity_4usug_161{display:flex;min-width:0;align-items:center;gap:var(--spacing-2_25)}._orgTile_4usug_178{display:grid;width:var(--spacing-5_5);height:var(--spacing-5_5);flex-shrink:0;border-radius:var(--radius-lg);background:var(--color-neutral-950);color:var(--color-primary-foreground);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);place-items:center}._orgName_4usug_194{overflow:hidden;color:var(--color-foreground);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight);text-overflow:ellipsis;white-space:nowrap}._orgRole_4usug_209{flex-shrink:0;padding:var(--spacing-0_5) var(--spacing-2);border-radius:var(--radius-full);background:var(--color-neutral-950);color:var(--color-primary-foreground);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight);white-space:nowrap}._divider_4usug_143{margin:var(--spacing-1_5);border:none;border-top:1px solid var(--color-border)}._rows_4usug_242{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}._row_4usug_48{display:flex;box-sizing:border-box;width:100%;align-items:flex-start;gap:var(--spacing-2_5);padding:var(--spacing-2_25) var(--spacing-3);border:none;border-radius:var(--radius-xl);background:transparent;color:var(--color-foreground);font-family:var(--font-sans);text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}._row_4usug_48:hover{background:var(--color-neutral-50)}._row_4usug_48:hover ._rowDescription_4usug_299{color:var(--color-foreground-secondary)}._row_4usug_48:hover ._lane_4usug_303{color:var(--color-foreground)}._row_4usug_48:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}._row_4usug_48[data-single-line=true]{align-items:center}._row_4usug_48[data-single-line=true] ._lane_4usug_303{margin-top:0}._lane_4usug_303{display:block;width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;margin-top:var(--spacing-0_5);color:var(--color-foreground-muted)}._lane_4usug_303 svg{display:block;width:100%;height:100%}._rowText_4usug_347{display:flex;min-width:0;flex-direction:column;gap:var(--spacing-0_5)}._rowLabel_4usug_365{overflow:hidden;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}._row_4usug_48[data-single-line=true] ._rowLabel_4usug_365{color:var(--color-foreground-secondary);font-weight:var(--font-weight-regular)}._rowDescription_4usug_299{color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug)}@media(prefers-reduced-motion:reduce){._row_4usug_48{transition:none}}:root{--shadow-overlay: 0px 16px 40px -10px var(--shadow-overlay-color);--shadow-lift: 0px 10px 24px -14px color-mix(in srgb, var(--color-neutral-950) 28%, transparent);--shadow-scrolled: 0px 6px 16px -12px color-mix(in srgb, var(--color-neutral-950) 35%, transparent)}._panel_1hdli_22{display:flex;overflow:clip;box-sizing:border-box;width:var(--container-command-palette);flex-direction:column;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay);font-family:var(--font-sans)}._searchRow_1hdli_38{display:flex;box-sizing:border-box;width:100%;align-items:center;flex-shrink:0;gap:var(--spacing-2_5);padding:var(--spacing-4);border-bottom:1px solid var(--color-border)}._searchGlyph_1hdli_49{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;color:var(--color-foreground-muted)}._input_1hdli_63{min-width:0;flex:1;border:none;background:transparent;color:var(--color-foreground);font-family:var(--font-sans);font-size:var(--text-md);font-weight:var(--font-weight-medium)}._input_1hdli_63::placeholder{color:var(--color-foreground-muted)}._input_1hdli_63:focus{outline:none}._dismissKey_1hdli_94{flex-shrink:0;padding:var(--spacing-1) var(--spacing-1_5);border-radius:var(--radius-md);background:var(--color-surface-muted);color:var(--color-foreground-muted);font-size:var(--text-2xs)}._results_1hdli_109,._group_1hdli_115{display:flex;flex-direction:column;padding-block:var(--spacing-1)}._groupHeading_1hdli_127{margin:0;padding:var(--spacing-3) var(--spacing-4) var(--spacing-1_5);color:var(--color-foreground-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase}._row_1hdli_146{display:flex;box-sizing:border-box;height:var(--spacing-10);align-items:center;gap:var(--spacing-2_5);margin-inline:var(--spacing-2);padding-inline:var(--spacing-2);border:none;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font-family:var(--font-sans);font-size:var(--text-nav-label);text-align:left;text-decoration:none;cursor:pointer}._row_1hdli_146:hover{background:var(--color-surface-muted)}._row_1hdli_146[aria-selected=true]{background:var(--color-surface-muted);font-weight:var(--font-weight-medium)}._icon_1hdli_184{display:flex;width:var(--spacing-5_5);height:var(--spacing-5_5);flex-shrink:0;align-items:center;justify-content:center;color:var(--color-foreground-muted)}._label_1hdli_197{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}._empty_1hdli_209{margin:0;padding:var(--spacing-5) var(--spacing-4);color:var(--color-foreground-muted);font-size:var(--text-xs)}._footer_1hdli_217{display:flex;box-sizing:border-box;width:100%;align-items:center;flex-shrink:0;padding:var(--spacing-2) var(--spacing-4);border-top:1px solid var(--color-border)}._hints_1hdli_227{color:var(--color-foreground-muted);font-size:var(--text-xs)}._root_g1823_11{--dots-size: var(--spacing-8);--dots-speed: var(--dur-dots);--dots-ease: var(--ease-in-out-quint);--dots-gap: calc(var(--dots-size) * .14);--dots-dot: calc((var(--dots-size) - var(--dots-gap) * 2) / 3);display:inline-flex;align-items:center;justify-content:center}._grid_g1823_25{display:grid;gap:var(--dots-gap);grid-template-columns:repeat(3,var(--dots-dot))}._dot_g1823_31{width:var(--dots-dot);height:var(--dots-dot);border-radius:var(--radius-full);background:currentColor;opacity:1;animation:_dots-pulse_g1823_1 var(--dots-speed) var(--dots-ease) infinite backwards;animation-delay:calc(var(--dots-step, 0) * var(--dots-speed) / 4)}._dot_g1823_31:nth-child(1){--dots-step: 0}._dot_g1823_31:nth-child(2),._dot_g1823_31:nth-child(4){--dots-step: 1}._dot_g1823_31:nth-child(3),._dot_g1823_31:nth-child(5),._dot_g1823_31:nth-child(7){--dots-step: 2}._dot_g1823_31:nth-child(6),._dot_g1823_31:nth-child(8){--dots-step: 3}._dot_g1823_31:nth-child(9){--dots-step: 4}@keyframes _dots-pulse_g1823_1{0%,to{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){._dot_g1823_31{animation:none}}:root{--dur-instant: 80ms;--dur-fast: .15s;--dur-base: .22s;--dur-slow: .32s;--dur-bold: .7s;--dur-hero: .9s;--dur-spin: .7s;--dur-pulse: 1.6s;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--lift-sm: -1px;--lift-md: -2px;--rise: 8px;--stagger: 40ms;--duration-fast: var(--dur-fast);--easing-standard: var(--ease-out);--dur-dots: 1s;--ease-in-out-quint: cubic-bezier(.83, 0, .17, 1)}._root_1pg11_6{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--spacing-4);overflow:hidden;background-color:var(--color-neutral-1000);color:var(--color-neutral-0);--launch-accent: var(--launch-accent-input, var(--color-neutral-0));isolation:isolate}._glow_1pg11_9{position:absolute;top:50%;left:50%;z-index:0;width:298.333%;height:238.222%;transform:translate(-50%);border-radius:50%;background-image:radial-gradient(circle farthest-corner at 50% 50% in oklab,var(--color-orange-500) 0%,var(--color-orange-600) 28%,var(--color-orange-700) 48%,oklab(from var(--color-orange-700) l a b / 0%) 72%);filter:blur(5.5vmax)}._backdrop_1pg11_103{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden}._content_1pg11_16{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-5);inline-size:min(280px,100%)}._dots_1pg11_139{--dots-size: var(--spacing-6);color:var(--launch-accent);mix-blend-mode:soft-light;opacity:1}._bar_1pg11_178{position:relative;inline-size:100%;block-size:var(--spacing-1);overflow:hidden;border-radius:var(--radius-full)}._track_1pg11_186{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--launch-accent) 35%,transparent);mix-blend-mode:soft-light;opacity:.75}._fill_1pg11_194{position:absolute;inset-block:0;inset-inline-start:0;inline-size:calc(var(--launch-progress, 0) * 1%);border-radius:inherit;background:var(--color-neutral-0);transition:inline-size var(--dur-fast) var(--ease-out)}._bar_1pg11_178[data-indeterminate=true] ._fill_1pg11_194{inline-size:33.333%;animation:_launch-indeterminate_1pg11_1 calc(var(--dur-dots) * 1.5) var(--ease-out) infinite}@keyframes _launch-indeterminate_1pg11_1{0%{inset-inline-start:-33.333%}to{inset-inline-start:100%}}._caption_1pg11_220{margin:0;opacity:.8;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:var(--leading-normal);text-align:center}@media(prefers-reduced-motion:reduce){._fill_1pg11_194{transition:none}._bar_1pg11_178[data-indeterminate=true] ._fill_1pg11_194{inset-inline-start:33.333%;animation:none}}@media(prefers-contrast){._root_1pg11_6{--launch-accent: var(--color-neutral-0)}._glow_1pg11_9,._backdrop_1pg11_103{display:none}._dots_1pg11_139,._track_1pg11_186{mix-blend-mode:normal;opacity:1}}:root{--color-neutral-0: #FFFFFF;--color-neutral-50: #F7F7F8;--color-neutral-100: #EFEFF1;--color-neutral-200: #E5E5EA;--color-neutral-300: #D9D9D9;--color-neutral-400: #C1C1C2;--color-neutral-500: #8E8E93;--color-neutral-600: #6B6B6B;--color-neutral-700: #525252;--color-neutral-800: #3A3A3C;--color-neutral-900: #292929;--color-neutral-950: #1D1D1B;--color-neutral-1000: #000000;--color-orange-50: #FDF3EE;--color-orange-100: #FBE2D5;--color-orange-200: #F7C3A8;--color-orange-300: #F0A173;--color-orange-400: #EB7147;--color-orange-500: #E9521E;--color-orange-600: #C2410C;--color-orange-700: #9A3412;--color-sand-100: #FBF3E4;--color-sand-300: #F3D6AC;--color-sand-600: #8A6510;--color-green-100: #DDF0E4;--color-green-600: #157F3D;--color-crimson-100: #F7DEE1;--color-crimson-600: #A3182B;--color-blue-100: #DEE6FA;--color-blue-600: #2A5BD7;--color-background: var(--color-neutral-50);--color-surface: var(--color-neutral-0);--color-surface-muted: var(--color-neutral-100);--color-border: var(--color-neutral-200);--color-border-strong: var(--color-neutral-300);--color-foreground: var(--color-neutral-950);--color-foreground-secondary: var(--color-neutral-700);--color-foreground-muted: var(--color-neutral-600);--color-foreground-disabled: var(--color-neutral-400);--color-primary: var(--color-orange-500);--color-primary-hover: var(--color-orange-600);--color-primary-foreground: var(--color-neutral-0);--color-primary-subtle: var(--color-orange-50);--color-primary-border: var(--color-orange-200);--color-success: var(--color-green-600);--color-success-subtle: var(--color-green-100);--color-warning: var(--color-sand-600);--color-warning-subtle: var(--color-sand-300);--color-danger: var(--color-crimson-600);--color-danger-subtle: var(--color-crimson-100);--color-info: var(--color-blue-600);--color-info-subtle: var(--color-blue-100);--color-grant: var(--color-sand-600);--color-purchased: var(--color-neutral-950);--shadow-overlay-color: rgb(29 29 27 / 20%);--font-display: var(--boost33-font-display, Outfit), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-sans: var(--boost33-font-sans, Inter), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: var(--boost33-font-mono, "Geist Mono"), ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-3xs: 9px;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-md: 16px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 30px;--text-4xl: 36px;--text-5xl: 46px;--text-6xl: 60px;--text-7xl: 78px;--text-nav-label: 14px;--text-settings-group-label: 10px;--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tighter: -.03em;--tracking-tight: -.02em;--tracking-normal: 0em;--tracking-wide: .04em;--tracking-wider: .09em;--tracking-caps: .05em;--tracking-settings-title: -.01em;--leading-none: 100%;--leading-tight: 120%;--leading-snug: 135%;--leading-normal: 150%;--leading-relaxed: 170%;--breakpoint-mobile: 390px;--breakpoint-desktop: 1440px;--container-sidebar: 264px;--container-sidebar-rail: 56px;--container-command-palette: 560px;--container-content: 1440px;--container-account-menu: 312px;--container-notification-panel: 360px;--spacing-1: 4px;--spacing-2: 8px;--spacing-3: 12px;--spacing-4: 16px;--spacing-4_5: 18px;--spacing-5: 20px;--spacing-6: 24px;--spacing-7: 28px;--spacing-8: 32px;--spacing-10: 40px;--spacing-11: 44px;--spacing-12: 48px;--spacing-16: 64px;--spacing-20: 80px;--spacing-2_5: 10px;--spacing-5_5: 22px;--spacing-1_5: 6px;--spacing-1_25: 5px;--spacing-0_5: 2px;--spacing-2_25: 9px;--spacing-3_5: 14px;--spacing-0_25: 1px;--spacing-settings-crumb: 7px;--spacing-topup-reserve: 68px;--spacing-wallet-segment-min: 3px;--spacing-9_5: 38px;--radius-none: 0px;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 4px;--radius-lg: 6px;--radius-xl: 8px;--radius-2xl: 12px;--radius-full: 9999px;--radius-product-tile: 25%}._root_1y1aa_41{container-type:inline-size}._frame_1y1aa_47{display:flex;min-height:100vh;background:var(--color-background);color:var(--color-foreground);font-family:var(--font-sans)}._sidebar_1y1aa_59{display:flex;box-sizing:border-box;width:var(--container-sidebar);flex-shrink:0;flex-direction:column;padding:0 var(--spacing-3);border-right:1px solid var(--color-border);background:var(--color-neutral-50)}._sidebar_1y1aa_59 a{text-decoration:none}._back_1y1aa_76{display:flex;align-items:center;gap:var(--spacing-2_5);padding:var(--spacing-4) var(--spacing-2_5) var(--spacing-3_5);color:var(--color-foreground)}._backLabel_1y1aa_84{font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);line-height:var(--spacing-4_5)}._glyph_1y1aa_91{display:block;width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0}._title_1y1aa_99{padding:var(--spacing-2_5) var(--spacing-2_5) var(--spacing-4)}._titleText_1y1aa_103{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-settings-title);line-height:var(--spacing-6)}._group_1y1aa_112{display:flex;flex-direction:column;gap:var(--spacing-0_25)}._group_1y1aa_112+._group_1y1aa_112{padding-top:var(--spacing-5)}._groupLabel_1y1aa_124{padding:0 var(--spacing-2_5) var(--spacing-2)}._groupLabelText_1y1aa_128{color:var(--color-foreground-muted);font-size:var(--text-settings-group-label);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);line-height:var(--spacing-3);text-transform:uppercase}._item_1y1aa_140{display:flex;align-items:center;gap:var(--spacing-2_5);padding:var(--spacing-2) var(--spacing-2_5);border-radius:var(--radius-lg);color:var(--color-foreground-muted)}._item_1y1aa_140[aria-current=page]{background:var(--color-surface);color:var(--color-foreground)}._icon_1y1aa_157{display:flex;width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;align-items:center;justify-content:center}._icon_1y1aa_157>svg{width:100%;height:100%}._label_1y1aa_171{flex-grow:1;color:var(--color-foreground-secondary);font-size:var(--text-nav-label);font-weight:var(--font-weight-regular);line-height:var(--spacing-4)}._item_1y1aa_140[aria-current=page] ._label_1y1aa_171{color:var(--color-foreground);font-weight:var(--font-weight-semibold)}._swatch_1y1aa_186{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;border-radius:var(--radius-md);background:var(--color-neutral-300)}._spacer_1y1aa_195{flex-grow:1}._signOut_1y1aa_201{margin-bottom:var(--spacing-4)}._column_1y1aa_207{display:flex;min-width:0;flex-basis:0;flex-direction:column;flex-grow:1}._header_1y1aa_216{display:flex;box-sizing:border-box;height:var(--spacing-12);flex-shrink:0;align-items:center;justify-content:space-between;padding:0 var(--spacing-5);border-bottom:1px solid var(--color-border)}._headerStart_1y1aa_227{display:flex;align-items:center;gap:var(--spacing-3)}._panelMark_1y1aa_237{display:flex;color:var(--color-foreground-muted)}._crumbs_1y1aa_244{display:flex;align-items:center;gap:var(--spacing-settings-crumb);margin:0;padding:0;font-size:var(--text-sm);line-height:var(--spacing-4);list-style:none}._crumbStep_1y1aa_255{display:flex;align-items:center;gap:var(--spacing-settings-crumb)}._crumb_1y1aa_244{color:var(--color-foreground-muted);text-decoration:none}._crumbSeparator_1y1aa_266{color:var(--color-foreground-disabled)}._crumbCurrent_1y1aa_270{color:var(--color-foreground);font-weight:var(--font-weight-semibold);text-decoration:none}._headerEnd_1y1aa_276,._helpLinks_1y1aa_282{display:flex;align-items:center;gap:var(--spacing-4_5)}._helpLink_1y1aa_282{color:var(--color-foreground-secondary);font-size:var(--text-sm);line-height:var(--leading-normal);text-decoration:none}._content_1y1aa_298{display:flex;flex-direction:column;flex-grow:1;background:var(--color-surface)}._pageHead_1y1aa_307{display:flex;flex-shrink:0;align-items:flex-start;justify-content:space-between;gap:var(--spacing-6);padding:var(--spacing-7) var(--spacing-8) var(--spacing-6);border-bottom:1px solid var(--color-border);background:var(--color-surface)}._pageHeadText_1y1aa_318{display:flex;flex-direction:column;gap:var(--spacing-1)}._pageTitle_1y1aa_325{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--spacing-6)}._pageDescription_1y1aa_335{margin:0;color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--spacing-4)}@container (max-width: 767px){._frame_1y1aa_47{flex-direction:column}._sidebar_1y1aa_59{width:auto;flex-direction:row;align-items:center;gap:var(--spacing-0_5);padding:var(--spacing-1_5) var(--spacing-2);overflow-x:auto;border-right:none;border-bottom:1px solid var(--color-border);white-space:nowrap}._sidebar_1y1aa_59 a{flex-shrink:0}._title_1y1aa_99,._groupLabel_1y1aa_124,._spacer_1y1aa_195,._helpLinks_1y1aa_282,._panelMark_1y1aa_237{display:none}._group_1y1aa_112{flex-direction:row;gap:var(--spacing-0_5)}._group_1y1aa_112+._group_1y1aa_112{padding-top:0}._back_1y1aa_76,._signOut_1y1aa_201{margin:0;padding:var(--spacing-2) var(--spacing-2_5)}._header_1y1aa_216{padding:0 var(--spacing-4)}._pageHead_1y1aa_307{flex-wrap:wrap;padding:var(--spacing-5) var(--spacing-4) var(--spacing-4_5)}}
1
+ .btn-primary,.btn-quiet,.btn-danger{cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),transform var(--dur-instant) var(--ease-out)}.btn-primary{border:none;background:var(--color-primary);color:var(--color-primary-foreground)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-quiet{background:transparent;color:var(--color-foreground-secondary)}.btn-quiet:hover:not(:disabled){background:var(--color-surface-muted)}.btn-danger{border:1px solid var(--color-danger);background:var(--color-danger);color:var(--color-neutral-0)}.btn-danger:hover:not(:disabled){border-color:color-mix(in srgb,var(--color-danger) 85%,var(--color-neutral-950));background:color-mix(in srgb,var(--color-danger) 85%,var(--color-neutral-950))}.btn-primary:disabled,.btn-quiet:disabled,.btn-danger:disabled{opacity:.55;cursor:not-allowed}.spinner{box-sizing:border-box;width:var(--spacing-4_5);height:var(--spacing-4_5);border:2px solid var(--color-neutral-0);border-right-color:transparent;border-radius:var(--radius-full);animation:boost33-spin var(--dur-spin) linear infinite}.spinner--sm{width:var(--spacing-3_5);height:var(--spacing-3_5)}.spinner--primary{border-color:var(--color-primary);border-right-color:transparent}@keyframes boost33-spin{to{transform:rotate(360deg)}}.sk{display:block;border-radius:var(--radius-md);background:var(--color-surface-muted);animation:boost33-pulse var(--dur-pulse) ease-in-out infinite}.sk-group{animation:boost33-appear var(--dur-base) var(--ease-out) var(--dur-fast) both}.reveal{animation:boost33-appear var(--dur-base) var(--ease-out) both}@keyframes boost33-pulse{50%{opacity:.55}}@keyframes boost33-appear{0%{opacity:0}}@media(prefers-reduced-motion:no-preference){.btn-primary:active:not(:disabled),.btn-quiet:active:not(:disabled),.btn-danger:active:not(:disabled){transform:scale(.98)}}@media(prefers-reduced-motion:reduce){.sk,.sk-group,.reveal,.spinner{animation:none}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:0s!important;scroll-behavior:auto!important}}._sidebar_17kel_7{display:flex;flex-direction:column;box-sizing:border-box;width:var(--container-sidebar);height:100%;padding-inline:var(--spacing-3);border-right:1px solid var(--color-border);background:var(--color-background);font-family:var(--font-sans)}._sidebar_17kel_7[data-collapsed=true]{width:var(--container-sidebar-rail)}._sidebar_17kel_7>nav{flex-shrink:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:calc(-1 * var(--spacing-1));padding:var(--spacing-1);scroll-padding:var(--spacing-1)}@media(prefers-reduced-motion:reduce){._sidebar_17kel_7>nav{scroll-behavior:auto}}._section_3sxsg_5{display:flex;flex-direction:column}._header_3sxsg_13{margin:0;padding:var(--spacing-2) var(--spacing-2_5);color:var(--color-foreground-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase}._wordmark_ccf4z_4{display:flex;align-items:center;gap:var(--spacing-2_5);font-family:var(--font-display)}a._wordmark_ccf4z_4{border-radius:var(--radius-lg);text-decoration:none}a._wordmark_ccf4z_4:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._mark_ccf4z_32{display:inline-flex;flex:0 0 var(--spacing-6);align-items:center;justify-content:center;width:var(--spacing-6);height:var(--spacing-6)}._mark_ccf4z_32 svg{width:100%;height:100%}._name_ccf4z_50{color:var(--color-foreground);font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight)}._wordmark_ccf4z_4[data-collapsed=true] ._name_ccf4z_50{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px;white-space:nowrap}._wordmark_ccf4z_4[data-collapsed=true]{justify-content:center}._tile_w89ja_12{fill:var(--color-neutral-950)}._ring_w89ja_16{fill:var(--color-primary)}._mark_w89ja_24{display:block}._link_w89ja_33{display:inline-flex;vertical-align:top;border-radius:var(--radius-lg);text-decoration:none}._link_w89ja_33:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._mark_1jt5g_6{display:block}._ground_1jt5g_17{rx:var(--radius-product-tile)}._row_w21mf_4{display:flex;align-items:center;width:100%;gap:var(--spacing-2_5);padding:var(--spacing-2) var(--spacing-2_5);border:none;border-radius:var(--radius-lg);background:transparent;font-family:var(--font-sans);text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}._row_w21mf_4:hover{background:var(--color-surface-muted)}._row_w21mf_4[data-active=true]{background:var(--color-surface)}._row_w21mf_4:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._icon_w21mf_41{display:inline-flex;flex:0 0 var(--spacing-4);align-items:center;justify-content:center;width:var(--spacing-4);height:var(--spacing-4);color:var(--color-foreground-secondary)}._icon_w21mf_41 svg{width:100%;height:100%}._row_w21mf_4[data-active=true] ._icon_w21mf_41{color:var(--color-foreground)}._row_w21mf_4[data-collapsed=true]{justify-content:center}._label_w21mf_66{flex:1 1 auto;min-width:0;overflow:hidden;color:var(--color-foreground-secondary);font-size:var(--text-nav-label);font-weight:var(--font-weight-regular);text-overflow:ellipsis;white-space:nowrap}._row_w21mf_4[data-active=true] ._label_w21mf_66{color:var(--color-foreground);font-weight:var(--font-weight-semibold)}._row_w21mf_4[data-collapsed=true] ._label_w21mf_66{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px;white-space:nowrap}._trailingSlot_w21mf_92{display:flex;flex:0 0 var(--spacing-5_5);align-items:center;justify-content:center;width:var(--spacing-5_5);font-family:var(--font-sans);font-size:var(--text-nav-label)}._row_w21mf_4[data-collapsed=true] ._trailingSlot_w21mf_92{display:none}._count_w21mf_106{color:var(--color-foreground-muted)}._countUrgent_w21mf_110{color:var(--color-primary)}@media(prefers-reduced-motion:reduce){._row_w21mf_4{transition:none}}._chip_xxga2_37{--chip-lift: 0px;position:relative;box-sizing:border-box;width:100%;padding:calc(var(--spacing-3) + var(--chip-lift));border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:transparent;font-family:var(--font-sans)}._chip_xxga2_37:not([data-unknown]):hover,._chip_xxga2_37:not([data-unknown]):focus-within,._chip_xxga2_37[data-threshold]{--chip-lift: var(--spacing-0_5);box-shadow:var(--shadow-overlay)}._chip_xxga2_37:not([data-threshold]):not([data-unknown]):hover,._chip_xxga2_37:not([data-threshold]):not([data-unknown]):focus-within{background:var(--color-surface)}._chip_xxga2_37:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._header_xxga2_74{display:flex;align-items:center;gap:var(--spacing-2)}._chip_xxga2_37:not([data-threshold]):not([data-unknown]) ._header_xxga2_74{padding-right:var(--spacing-topup-reserve)}._name_xxga2_83{min-width:0;overflow:hidden;color:var(--color-foreground-muted);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-tight);text-overflow:ellipsis;white-space:nowrap}._pill_xxga2_162{padding:var(--spacing-0_5) var(--spacing-2);border-radius:var(--radius-full);background:var(--color-warning-subtle);color:var(--color-warning);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold)}._figure_xxga2_171{display:flex;align-items:baseline;gap:var(--spacing-1_5);margin-top:calc(var(--spacing-2_5) + var(--chip-lift))}._amount_xxga2_186{color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-2xl);font-weight:var(--font-weight-bold);letter-spacing:var(--tracking-tight);line-height:var(--leading-none)}._unit_xxga2_195{color:var(--color-foreground-muted);font-size:var(--text-xs)}._retry_xxga2_200{width:var(--spacing-3);height:var(--spacing-3);color:var(--color-foreground-muted)}._bar_xxga2_209{display:flex;overflow:hidden;width:100%;height:calc(var(--spacing-1_25) + var(--chip-lift));margin-top:calc(var(--spacing-2_5) + var(--chip-lift));border-radius:var(--radius-full)}._bar_xxga2_209[data-tone=rest]{background:var(--color-surface-muted)}._bar_xxga2_209[data-tone=threshold]{background:var(--color-warning-subtle)}._bar_xxga2_209[data-tone=unknown]{background:var(--color-surface-muted)}._segmentGranted_xxga2_230,._segmentPurchased_xxga2_231{height:100%;transition:width var(--dur-fast) var(--ease-out)}._segmentGranted_xxga2_230{background:var(--color-grant)}._segmentPurchased_xxga2_231{background:var(--color-purchased)}._details_xxga2_275{display:none}._chip_xxga2_37:hover ._details_xxga2_275,._chip_xxga2_37:focus-within ._details_xxga2_275{display:block}._split_xxga2_284{display:flex;flex-direction:column;gap:var(--spacing-1);margin:var(--spacing-2_5) 0 0}._splitRow_xxga2_291{display:flex;align-items:center;justify-content:space-between}._splitLabel_xxga2_297{display:flex;align-items:center;gap:var(--spacing-1_5);color:var(--color-foreground);font-size:var(--text-xs)}._splitAmount_xxga2_305{margin:0;color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-xs);font-variant-numeric:tabular-nums}._dotGranted_xxga2_313,._dotPurchased_xxga2_314{width:var(--spacing-1_5);height:var(--spacing-1_5);border-radius:var(--radius-full)}._dotGranted_xxga2_313{background:var(--color-grant)}._dotPurchased_xxga2_314{background:var(--color-purchased)}._footer_xxga2_328{margin:var(--spacing-3) 0 0;padding-top:var(--spacing-1);border-top:1px solid var(--color-border);color:var(--color-foreground-muted);font-size:var(--text-2xs)}._burnNote_xxga2_336{margin:var(--spacing-2_5) 0 0;color:var(--color-foreground-secondary);font-size:var(--text-2xs);line-height:var(--leading-snug)}._topUp_xxga2_87{position:absolute;top:calc(var(--spacing-3) + var(--chip-lift));right:calc(var(--spacing-3) + var(--chip-lift));padding:0;border:none;background:transparent;color:var(--color-primary);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);opacity:0;cursor:pointer;transition:opacity var(--dur-fast) var(--ease-out)}._chip_xxga2_37:hover ._topUp_xxga2_87,._chip_xxga2_37:focus-within ._topUp_xxga2_87,._topUp_xxga2_87:focus-visible{opacity:1}._topUp_xxga2_87:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._topUp_xxga2_87[data-grown=true]{position:static;width:100%;margin-top:var(--spacing-2_5);padding:var(--spacing-2);border-radius:var(--radius-lg);background:var(--color-primary);color:var(--color-primary-foreground);font-size:var(--text-sm);opacity:1}._topUp_xxga2_87[data-grown=true]:hover{background:var(--color-primary-hover)}._rail_xxga2_402{--chip-lift: 0px;position:relative;display:flex;box-sizing:border-box;width:100%;flex-direction:column;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2);font-family:var(--font-sans)}._railIcon_xxga2_416{width:var(--spacing-6);height:var(--spacing-6);color:var(--color-foreground-secondary)}._railFigure_xxga2_422{color:var(--color-foreground);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);font-variant-numeric:tabular-nums}._rail_xxga2_402 ._bar_xxga2_209{height:var(--spacing-0_5);margin-top:0}._srOnly_xxga2_435{position:absolute;overflow:hidden;clip-path:inset(50%);width:1px;height:1px;white-space:nowrap}@media(prefers-reduced-motion:reduce){._segmentGranted_xxga2_230,._segmentPurchased_xxga2_231,._topUp_xxga2_87{transition:none}}._bar_194bx_7{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-4);box-sizing:border-box;height:var(--spacing-12);padding:0 var(--spacing-8);border-bottom:1px solid var(--color-border);background:var(--color-surface);font-family:var(--font-sans)}._breadcrumb_194bx_20{display:flex;min-width:0;align-items:center;gap:var(--spacing-2);overflow:hidden;color:var(--color-foreground);font-size:var(--text-sm);font-weight:var(--font-weight-medium);text-overflow:ellipsis;white-space:nowrap}._actions_194bx_33{display:flex;flex:0 0 auto;align-items:center;gap:var(--spacing-2)}@supports (animation-timeline: --a) and (timeline-scope: --a){@container style(--boost33-shell-timeline: on){._bar_194bx_7{position:relative;z-index:1;animation:_scrolled_194bx_1 linear both;animation-timeline:--boost33-shell-scroll;animation-range:0 var(--spacing-10)}}}@keyframes _scrolled_194bx_1{to{box-shadow:var(--shadow-scrolled)}}._header_i17td_42{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-8);padding:var(--spacing-4_5) var(--spacing-8) var(--spacing-4);background:var(--color-surface);font-family:var(--font-sans)}._headings_i17td_52{display:flex;min-width:0;flex-direction:column;gap:var(--spacing-1)}._title_i17td_33{margin:0;color:var(--color-foreground);font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight)}._subtitle_i17td_74{margin:0;color:var(--color-foreground-secondary);font-size:var(--text-base);font-weight:var(--font-weight-regular);line-height:var(--leading-snug)}._actions_i17td_82{display:flex;flex:0 0 auto;align-items:center;gap:var(--spacing-2)}._shell_10chf_10{display:flex;height:100%;background:var(--color-surface);font-family:var(--font-sans)}._wordmark_10chf_20{padding:var(--spacing-3) var(--spacing-2_5) var(--spacing-5)}._switcher_10chf_26{padding-bottom:var(--spacing-4)}._foot_10chf_33{display:flex;flex-direction:column;gap:var(--spacing-4);margin-block-start:auto;padding-block-start:var(--spacing-4)}._nav_10chf_45{display:flex;flex-direction:column;gap:var(--spacing-4)}._main_10chf_54{display:flex;min-width:0;flex:1;flex-direction:column}._content_10chf_75{flex:1;min-height:0;overflow-y:auto;background:var(--color-surface)}@supports (animation-timeline: --a) and (timeline-scope: --a){._main_10chf_54{timeline-scope:--boost33-shell-scroll;--boost33-shell-timeline: on}._content_10chf_75{scroll-timeline:--boost33-shell-scroll block}}._root_15f7d_8{position:relative;font-family:var(--font-sans)}._trigger_15f7d_17{display:flex;box-sizing:border-box;width:100%;align-items:center;gap:var(--spacing-2);padding:var(--spacing-2_25) var(--spacing-2);border:1px solid var(--color-border-strong);border-radius:var(--radius-lg);background:transparent;font-family:var(--font-sans);cursor:pointer}._trigger_15f7d_17[aria-expanded=true]{background:var(--color-surface-muted)}._trigger_15f7d_17:focus-visible,._railTrigger_15f7d_46:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._triggerName_15f7d_56{overflow:hidden;flex:1;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);text-align:left;text-overflow:ellipsis;white-space:nowrap}._chevron_15f7d_67{width:var(--spacing-3);height:var(--spacing-3);flex-shrink:0;color:var(--color-foreground-muted);transition:transform var(--dur-fast) var(--ease-out)}._trigger_15f7d_17[aria-expanded=true] ._chevron_15f7d_67{transform:rotate(180deg)}._railTrigger_15f7d_46{display:flex;box-sizing:border-box;width:100%;min-height:var(--spacing-6);align-items:flex-start;justify-content:center;padding:0;border:none;background:transparent;cursor:pointer}._panel_15f7d_109{position:absolute;z-index:1;top:100%;left:0;width:var(--container-sidebar);box-sizing:border-box;margin-top:var(--spacing-0_5);padding:var(--spacing-2);border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay)}._hubRow_15f7d_135,._productRow_15f7d_136,._accountRow_15f7d_137{display:flex;box-sizing:border-box;width:100%;align-items:center;gap:var(--spacing-2_5);padding:var(--spacing-2);border:none;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font-family:var(--font-sans);text-align:left;text-decoration:none;cursor:pointer}._hubRow_15f7d_135:hover,._productRow_15f7d_136:hover,._accountRow_15f7d_137:hover{background:var(--color-surface-muted)}._hubRow_15f7d_135:focus-visible,._productRow_15f7d_136:focus-visible,._accountRow_15f7d_137:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}._products_15f7d_144{display:flex;flex-direction:column;gap:var(--spacing-0_5);margin:0;padding:0;list-style:none}._productRow_15f7d_136[data-current=true]{background:var(--color-surface-muted)}._productRow_15f7d_136[data-entitled=false] ._rowName_15f7d_193{color:var(--color-foreground-muted)}._accountRow_15f7d_137{padding-inline:var(--spacing-3)}._accountRow_15f7d_137 ._rowName_15f7d_193{font-size:var(--text-sm)}._accountRow_15f7d_137 ._rowSub_15f7d_213{font-size:var(--text-2xs)}._accountRow_15f7d_137[data-actionable=false]{cursor:default}._accountRow_15f7d_137[data-actionable=false]:hover{background:transparent}._rowText_15f7d_238{display:flex;min-width:0;flex-direction:column}._hubRow_15f7d_135 ._rowText_15f7d_238{gap:var(--spacing-0_5)}._rowName_15f7d_193{overflow:hidden;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-regular);text-overflow:ellipsis;white-space:nowrap}._productRow_15f7d_136 ._rowName_15f7d_193{flex:1}._rowSub_15f7d_213{overflow:hidden;color:var(--color-foreground-muted);font-size:var(--text-xs);text-overflow:ellipsis;white-space:nowrap}._hubMark_15f7d_281{width:var(--spacing-5);height:var(--spacing-5);flex-shrink:0;color:var(--color-foreground)}._tag_15f7d_297{flex-shrink:0;margin-left:auto;padding:var(--spacing-0_5) var(--spacing-1_5);border-radius:var(--radius-full);background:var(--color-surface-muted);color:var(--color-foreground-muted);font-size:var(--text-2xs);font-weight:var(--font-weight-medium)}._check_15f7d_308{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;margin-left:auto;color:var(--color-foreground)}._avatar_15f7d_321{display:grid;width:var(--spacing-6);height:var(--spacing-6);flex-shrink:0;border-radius:var(--radius-lg);background:var(--color-surface-muted);color:var(--color-foreground-secondary);font-size:var(--text-3xs);font-weight:var(--font-weight-semibold);place-items:center}._chevronRight_15f7d_334{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;margin-left:auto;color:var(--color-foreground-muted)}._divider_15f7d_355{margin:var(--spacing-2_25) 0 var(--spacing-2);border:none;border-top:1px solid var(--color-border)}._products_15f7d_144+._divider_15f7d_355{margin:var(--spacing-1_5) 0 var(--spacing-1)}@media(prefers-reduced-motion:reduce){._chevron_15f7d_67{transition:none}}._panel_sl837_36{display:flex;width:var(--container-notification-panel);box-sizing:border-box;flex-direction:column;overflow:hidden;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay);font-family:var(--font-sans)}._header_sl837_54{display:flex;align-items:center;justify-content:space-between;padding:var(--spacing-3_5) var(--spacing-4) var(--spacing-2_5)}._title_sl837_62{margin:0;color:var(--color-foreground);font-size:var(--text-base);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}._markAll_sl837_73{padding:0;border:none;background:transparent;color:var(--color-primary);font-family:var(--font-sans);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-snug);cursor:pointer}._markAll_sl837_73:focus-visible,._tab_sl837_86:focus-visible,._viewAll_sl837_87:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}._tabs_sl837_96{display:flex;align-items:center;gap:var(--spacing-4_5);padding-inline:var(--spacing-4);border-bottom:1px solid var(--color-border)}._tab_sl837_86{display:flex;align-items:center;gap:var(--spacing-1_25);padding:var(--spacing-2) 0 var(--spacing-2_5);border:none;border-bottom:2px solid transparent;background:transparent;color:var(--color-foreground-muted);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-regular);line-height:var(--leading-tight);cursor:pointer}._tab_sl837_86[aria-pressed=true]{border-bottom-color:var(--color-foreground);color:var(--color-foreground);font-weight:var(--font-weight-semibold)}._count_sl837_131{padding:var(--spacing-0_25) var(--spacing-1_25);border-radius:var(--radius-full);background:var(--color-surface-muted);color:var(--color-foreground-muted);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}._list_sl837_141{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}._row_sl837_156{display:flex;box-sizing:border-box;width:100%;align-items:flex-start;gap:var(--spacing-2_5);padding:var(--spacing-2_5) var(--spacing-4);color:var(--color-foreground);font-family:var(--font-sans);text-align:left;text-decoration:none}._row_sl837_156[href]:hover{background:var(--color-surface-muted)}._row_sl837_156[href]:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}._sourceMark_sl837_187{display:block;flex-shrink:0;margin-top:var(--spacing-0_25);color:var(--color-primary-foreground)}._sourceMarkGround_sl837_196{rx:var(--radius-product-tile);fill:var(--color-neutral-950)}._rowText_sl837_201{display:flex;min-width:0;flex:1;flex-direction:column;gap:var(--spacing-0_5)}._rowTitle_sl837_212{color:var(--color-foreground-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:var(--leading-snug)}._row_sl837_156[data-unread=true] ._rowTitle_sl837_212{color:var(--color-foreground)}._rowMeta_sl837_223{color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug)}._unreadSlot_sl837_234{display:flex;width:var(--spacing-4);flex-shrink:0;justify-content:center;padding-top:var(--spacing-1)}._dot_sl837_243{width:var(--spacing-1_5);height:var(--spacing-1_5);flex-shrink:0;border-radius:var(--radius-full);background:var(--color-primary)}._empty_sl837_258{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-2_5);padding:var(--spacing-10) var(--spacing-6) var(--spacing-11)}._emptyGlyph_sl837_267{display:block;width:var(--spacing-7);height:var(--spacing-7);flex-shrink:0;color:var(--color-foreground-disabled)}._emptyText_sl837_275{display:flex;flex-direction:column;align-items:center;gap:var(--spacing-0_5)}._emptyTitle_sl837_282{margin:0;color:var(--color-foreground-secondary);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight)}._emptyBody_sl837_290{margin:0;color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug);text-align:center}._footer_sl837_299{display:flex;align-items:center;justify-content:center;padding:var(--spacing-2_5) var(--spacing-4);border-top:1px solid var(--color-border)}._viewAll_sl837_87{color:var(--color-foreground-secondary);font-size:var(--text-xs);font-weight:var(--font-weight-medium);line-height:var(--leading-snug);text-decoration:none}._viewAll_sl837_87:hover{text-decoration:underline}._srOnly_sl837_321{position:absolute;overflow:hidden;width:1px;height:1px;clip-path:inset(50%);white-space:nowrap}._panel_4usug_54{display:flex;box-sizing:border-box;width:var(--container-account-menu);flex-direction:column;padding:var(--spacing-1_5);border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay);font-family:var(--font-sans)}._person_4usug_72{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3_5) var(--spacing-3)}._personAvatar_4usug_85{display:block;width:var(--spacing-9_5);height:var(--spacing-9_5);flex-shrink:0;border-radius:var(--radius-full);background:var(--color-border-strong);object-fit:cover}._personText_4usug_98{display:flex;min-width:0;flex-direction:column;gap:var(--spacing-0_5)}._personName_4usug_106{overflow:hidden;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}._personEmail_4usug_122{overflow:hidden;color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}._org_4usug_147{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-1);margin-inline:var(--spacing-1_5);padding:var(--spacing-2_25) var(--spacing-3);border-radius:var(--radius-xl);background:var(--color-neutral-50)}._orgIdentity_4usug_161{display:flex;min-width:0;align-items:center;gap:var(--spacing-2_25)}._orgTile_4usug_178{display:grid;width:var(--spacing-5_5);height:var(--spacing-5_5);flex-shrink:0;border-radius:var(--radius-lg);background:var(--color-neutral-950);color:var(--color-primary-foreground);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);place-items:center}._orgName_4usug_194{overflow:hidden;color:var(--color-foreground);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight);text-overflow:ellipsis;white-space:nowrap}._orgRole_4usug_209{flex-shrink:0;padding:var(--spacing-0_5) var(--spacing-2);border-radius:var(--radius-full);background:var(--color-neutral-950);color:var(--color-primary-foreground);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);line-height:var(--leading-tight);white-space:nowrap}._divider_4usug_143{margin:var(--spacing-1_5);border:none;border-top:1px solid var(--color-border)}._rows_4usug_242{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}._row_4usug_48{display:flex;box-sizing:border-box;width:100%;align-items:flex-start;gap:var(--spacing-2_5);padding:var(--spacing-2_25) var(--spacing-3);border:none;border-radius:var(--radius-xl);background:transparent;color:var(--color-foreground);font-family:var(--font-sans);text-align:left;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}._row_4usug_48:hover{background:var(--color-neutral-50)}._row_4usug_48:hover ._rowDescription_4usug_299{color:var(--color-foreground-secondary)}._row_4usug_48:hover ._lane_4usug_303{color:var(--color-foreground)}._row_4usug_48:focus-visible{outline:2px solid var(--color-primary);outline-offset:-2px}._row_4usug_48[data-single-line=true]{align-items:center}._row_4usug_48[data-single-line=true] ._lane_4usug_303{margin-top:0}._lane_4usug_303{display:block;width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;margin-top:var(--spacing-0_5);color:var(--color-foreground-muted)}._lane_4usug_303 svg{display:block;width:100%;height:100%}._rowText_4usug_347{display:flex;min-width:0;flex-direction:column;gap:var(--spacing-0_5)}._rowLabel_4usug_365{overflow:hidden;color:var(--color-foreground);font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);line-height:var(--leading-snug);text-overflow:ellipsis;white-space:nowrap}._row_4usug_48[data-single-line=true] ._rowLabel_4usug_365{color:var(--color-foreground-secondary);font-weight:var(--font-weight-regular)}._rowDescription_4usug_299{color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--leading-snug)}@media(prefers-reduced-motion:reduce){._row_4usug_48{transition:none}}:root{--shadow-overlay: 0px 16px 40px -10px var(--shadow-overlay-color);--shadow-lift: 0px 10px 24px -14px color-mix(in srgb, var(--color-neutral-950) 28%, transparent);--shadow-scrolled: 0px 6px 16px -12px color-mix(in srgb, var(--color-neutral-950) 35%, transparent)}._panel_1hdli_22{display:flex;overflow:clip;box-sizing:border-box;width:var(--container-command-palette);flex-direction:column;border:1px solid var(--color-border);border-radius:var(--radius-2xl);background:var(--color-surface);box-shadow:var(--shadow-overlay);font-family:var(--font-sans)}._searchRow_1hdli_38{display:flex;box-sizing:border-box;width:100%;align-items:center;flex-shrink:0;gap:var(--spacing-2_5);padding:var(--spacing-4);border-bottom:1px solid var(--color-border)}._searchGlyph_1hdli_49{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;color:var(--color-foreground-muted)}._input_1hdli_63{min-width:0;flex:1;border:none;background:transparent;color:var(--color-foreground);font-family:var(--font-sans);font-size:var(--text-md);font-weight:var(--font-weight-medium)}._input_1hdli_63::placeholder{color:var(--color-foreground-muted)}._input_1hdli_63:focus{outline:none}._dismissKey_1hdli_94{flex-shrink:0;padding:var(--spacing-1) var(--spacing-1_5);border-radius:var(--radius-md);background:var(--color-surface-muted);color:var(--color-foreground-muted);font-size:var(--text-2xs)}._results_1hdli_109,._group_1hdli_115{display:flex;flex-direction:column;padding-block:var(--spacing-1)}._groupHeading_1hdli_127{margin:0;padding:var(--spacing-3) var(--spacing-4) var(--spacing-1_5);color:var(--color-foreground-muted);font-family:var(--font-sans);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);text-transform:uppercase}._row_1hdli_146{display:flex;box-sizing:border-box;height:var(--spacing-10);align-items:center;gap:var(--spacing-2_5);margin-inline:var(--spacing-2);padding-inline:var(--spacing-2);border:none;border-radius:var(--radius-lg);background:transparent;color:var(--color-foreground);font-family:var(--font-sans);font-size:var(--text-nav-label);text-align:left;text-decoration:none;cursor:pointer}._row_1hdli_146:hover{background:var(--color-surface-muted)}._row_1hdli_146[aria-selected=true]{background:var(--color-surface-muted);font-weight:var(--font-weight-medium)}._icon_1hdli_184{display:flex;width:var(--spacing-5_5);height:var(--spacing-5_5);flex-shrink:0;align-items:center;justify-content:center;color:var(--color-foreground-muted)}._label_1hdli_197{overflow:hidden;min-width:0;text-overflow:ellipsis;white-space:nowrap}._empty_1hdli_209{margin:0;padding:var(--spacing-5) var(--spacing-4);color:var(--color-foreground-muted);font-size:var(--text-xs)}._footer_1hdli_217{display:flex;box-sizing:border-box;width:100%;align-items:center;flex-shrink:0;padding:var(--spacing-2) var(--spacing-4);border-top:1px solid var(--color-border)}._hints_1hdli_227{color:var(--color-foreground-muted);font-size:var(--text-xs)}._root_g1823_11{--dots-size: var(--spacing-8);--dots-speed: var(--dur-dots);--dots-ease: var(--ease-in-out-quint);--dots-gap: calc(var(--dots-size) * .14);--dots-dot: calc((var(--dots-size) - var(--dots-gap) * 2) / 3);display:inline-flex;align-items:center;justify-content:center}._grid_g1823_25{display:grid;gap:var(--dots-gap);grid-template-columns:repeat(3,var(--dots-dot))}._dot_g1823_31{width:var(--dots-dot);height:var(--dots-dot);border-radius:var(--radius-full);background:currentColor;opacity:1;animation:_dots-pulse_g1823_1 var(--dots-speed) var(--dots-ease) infinite backwards;animation-delay:calc(var(--dots-step, 0) * var(--dots-speed) / 4)}._dot_g1823_31:nth-child(1){--dots-step: 0}._dot_g1823_31:nth-child(2),._dot_g1823_31:nth-child(4){--dots-step: 1}._dot_g1823_31:nth-child(3),._dot_g1823_31:nth-child(5),._dot_g1823_31:nth-child(7){--dots-step: 2}._dot_g1823_31:nth-child(6),._dot_g1823_31:nth-child(8){--dots-step: 3}._dot_g1823_31:nth-child(9){--dots-step: 4}@keyframes _dots-pulse_g1823_1{0%,to{opacity:.2;transform:scale(.7)}50%{opacity:1;transform:scale(1)}}@media(prefers-reduced-motion:reduce){._dot_g1823_31{animation:none}}:root{--dur-instant: 80ms;--dur-fast: .15s;--dur-base: .22s;--dur-slow: .32s;--dur-bold: .7s;--dur-hero: .9s;--dur-spin: .7s;--dur-pulse: 1.6s;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--lift-sm: -1px;--lift-md: -2px;--rise: 8px;--stagger: 40ms;--duration-fast: var(--dur-fast);--easing-standard: var(--ease-out);--dur-dots: 1s;--ease-in-out-quint: cubic-bezier(.83, 0, .17, 1)}._root_1pg11_6{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:var(--spacing-4);overflow:hidden;background-color:var(--color-neutral-1000);color:var(--color-neutral-0);--launch-accent: var(--launch-accent-input, var(--color-neutral-0));isolation:isolate}._glow_1pg11_9{position:absolute;top:50%;left:50%;z-index:0;width:298.333%;height:238.222%;transform:translate(-50%);border-radius:50%;background-image:radial-gradient(circle farthest-corner at 50% 50% in oklab,var(--color-orange-500) 0%,var(--color-orange-600) 28%,var(--color-orange-700) 48%,oklab(from var(--color-orange-700) l a b / 0%) 72%);filter:blur(5.5vmax)}._backdrop_1pg11_103{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;overflow:hidden}._content_1pg11_16{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--spacing-5);inline-size:min(280px,100%)}._dots_1pg11_139{--dots-size: var(--spacing-6);color:var(--launch-accent);mix-blend-mode:soft-light;opacity:1}._bar_1pg11_178{position:relative;inline-size:100%;block-size:var(--spacing-1);overflow:hidden;border-radius:var(--radius-full)}._track_1pg11_186{position:absolute;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--launch-accent) 35%,transparent);mix-blend-mode:soft-light;opacity:.75}._fill_1pg11_194{position:absolute;inset-block:0;inset-inline-start:0;inline-size:calc(var(--launch-progress, 0) * 1%);border-radius:inherit;background:var(--color-neutral-0);transition:inline-size var(--dur-fast) var(--ease-out)}._bar_1pg11_178[data-indeterminate=true] ._fill_1pg11_194{inline-size:33.333%;animation:_launch-indeterminate_1pg11_1 calc(var(--dur-dots) * 1.5) var(--ease-out) infinite}@keyframes _launch-indeterminate_1pg11_1{0%{inset-inline-start:-33.333%}to{inset-inline-start:100%}}._caption_1pg11_220{margin:0;opacity:.8;font-family:var(--font-sans);font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:var(--leading-normal);text-align:center}@media(prefers-reduced-motion:reduce){._fill_1pg11_194{transition:none}._bar_1pg11_178[data-indeterminate=true] ._fill_1pg11_194{inset-inline-start:33.333%;animation:none}}@media(prefers-contrast){._root_1pg11_6{--launch-accent: var(--color-neutral-0)}._glow_1pg11_9,._backdrop_1pg11_103{display:none}._dots_1pg11_139,._track_1pg11_186{mix-blend-mode:normal;opacity:1}}:root{--color-neutral-0: #FFFFFF;--color-neutral-50: #F7F7F8;--color-neutral-100: #EFEFF1;--color-neutral-200: #E5E5EA;--color-neutral-300: #D9D9D9;--color-neutral-400: #C1C1C2;--color-neutral-500: #8E8E93;--color-neutral-600: #6B6B6B;--color-neutral-700: #525252;--color-neutral-800: #3A3A3C;--color-neutral-900: #292929;--color-neutral-950: #1D1D1B;--color-neutral-1000: #000000;--color-orange-50: #FDF3EE;--color-orange-100: #FBE2D5;--color-orange-200: #F7C3A8;--color-orange-300: #F0A173;--color-orange-400: #EB7147;--color-orange-500: #E9521E;--color-orange-600: #C2410C;--color-orange-700: #9A3412;--color-sand-100: #FBF3E4;--color-sand-300: #F3D6AC;--color-sand-600: #8A6510;--color-green-100: #DDF0E4;--color-green-600: #157F3D;--color-crimson-100: #F7DEE1;--color-crimson-600: #A3182B;--color-blue-100: #DEE6FA;--color-blue-600: #2A5BD7;--color-background: var(--color-neutral-50);--color-surface: var(--color-neutral-0);--color-surface-muted: var(--color-neutral-100);--color-border: var(--color-neutral-200);--color-border-strong: var(--color-neutral-300);--color-foreground: var(--color-neutral-950);--color-foreground-secondary: var(--color-neutral-700);--color-foreground-muted: var(--color-neutral-600);--color-foreground-disabled: var(--color-neutral-400);--color-primary: var(--color-orange-500);--color-primary-hover: var(--color-orange-600);--color-primary-foreground: var(--color-neutral-0);--color-primary-subtle: var(--color-orange-50);--color-primary-border: var(--color-orange-200);--color-success: var(--color-green-600);--color-success-subtle: var(--color-green-100);--color-warning: var(--color-sand-600);--color-warning-subtle: var(--color-sand-300);--color-danger: var(--color-crimson-600);--color-danger-subtle: var(--color-crimson-100);--color-info: var(--color-blue-600);--color-info-subtle: var(--color-blue-100);--color-grant: var(--color-sand-600);--color-purchased: var(--color-neutral-950);--shadow-overlay-color: rgb(29 29 27 / 20%);--font-display: var(--boost33-font-display, Outfit), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-sans: var(--boost33-font-sans, Inter), ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: var(--boost33-font-mono, "Geist Mono"), ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-3xs: 9px;--text-2xs: 11px;--text-xs: 12px;--text-sm: 13px;--text-base: 15px;--text-md: 16px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 30px;--text-4xl: 36px;--text-5xl: 46px;--text-6xl: 60px;--text-7xl: 78px;--text-nav-label: 14px;--text-settings-group-label: 10px;--font-weight-light: 300;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--tracking-tighter: -.03em;--tracking-tight: -.02em;--tracking-normal: 0em;--tracking-wide: .04em;--tracking-wider: .09em;--tracking-caps: .05em;--tracking-settings-title: -.01em;--leading-none: 100%;--leading-tight: 120%;--leading-snug: 135%;--leading-normal: 150%;--leading-relaxed: 170%;--breakpoint-mobile: 390px;--breakpoint-desktop: 1440px;--container-sidebar: 264px;--container-sidebar-rail: 56px;--container-command-palette: 560px;--container-content: 1440px;--container-account-menu: 312px;--container-notification-panel: 360px;--spacing-1: 4px;--spacing-2: 8px;--spacing-3: 12px;--spacing-4: 16px;--spacing-4_5: 18px;--spacing-5: 20px;--spacing-6: 24px;--spacing-7: 28px;--spacing-8: 32px;--spacing-10: 40px;--spacing-11: 44px;--spacing-12: 48px;--spacing-16: 64px;--spacing-20: 80px;--spacing-2_5: 10px;--spacing-5_5: 22px;--spacing-1_5: 6px;--spacing-1_25: 5px;--spacing-0_5: 2px;--spacing-2_25: 9px;--spacing-3_5: 14px;--spacing-0_25: 1px;--spacing-settings-crumb: 7px;--spacing-topup-reserve: 68px;--spacing-wallet-segment-min: 3px;--spacing-9_5: 38px;--radius-none: 0px;--radius-xs: 2px;--radius-sm: 3px;--radius-md: 4px;--radius-lg: 6px;--radius-xl: 8px;--radius-2xl: 12px;--radius-full: 9999px;--radius-product-tile: 25%}._root_1y1aa_41{container-type:inline-size}._frame_1y1aa_47{display:flex;min-height:100vh;background:var(--color-background);color:var(--color-foreground);font-family:var(--font-sans)}._sidebar_1y1aa_59{display:flex;box-sizing:border-box;width:var(--container-sidebar);flex-shrink:0;flex-direction:column;padding:0 var(--spacing-3);border-right:1px solid var(--color-border);background:var(--color-neutral-50)}._sidebar_1y1aa_59 a{text-decoration:none}._back_1y1aa_76{display:flex;align-items:center;gap:var(--spacing-2_5);padding:var(--spacing-4) var(--spacing-2_5) var(--spacing-3_5);color:var(--color-foreground)}._backLabel_1y1aa_84{font-size:var(--text-nav-label);font-weight:var(--font-weight-semibold);line-height:var(--spacing-4_5)}._glyph_1y1aa_91{display:block;width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0}._title_1y1aa_99{padding:var(--spacing-2_5) var(--spacing-2_5) var(--spacing-4)}._titleText_1y1aa_103{font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-settings-title);line-height:var(--spacing-6)}._group_1y1aa_112{display:flex;flex-direction:column;gap:var(--spacing-0_25)}._group_1y1aa_112+._group_1y1aa_112{padding-top:var(--spacing-5)}._groupLabel_1y1aa_124{padding:0 var(--spacing-2_5) var(--spacing-2)}._groupLabelText_1y1aa_128{color:var(--color-foreground-muted);font-size:var(--text-settings-group-label);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-caps);line-height:var(--spacing-3);text-transform:uppercase}._item_1y1aa_140{display:flex;align-items:center;gap:var(--spacing-2_5);padding:var(--spacing-2) var(--spacing-2_5);border-radius:var(--radius-lg);color:var(--color-foreground-muted)}._item_1y1aa_140[aria-current=page]{background:var(--color-surface);color:var(--color-foreground)}._icon_1y1aa_157{display:flex;width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;align-items:center;justify-content:center}._icon_1y1aa_157>svg{width:100%;height:100%}._label_1y1aa_171{flex-grow:1;color:var(--color-foreground-secondary);font-size:var(--text-nav-label);font-weight:var(--font-weight-regular);line-height:var(--spacing-4)}._item_1y1aa_140[aria-current=page] ._label_1y1aa_171{color:var(--color-foreground);font-weight:var(--font-weight-semibold)}._swatch_1y1aa_186{width:var(--spacing-4);height:var(--spacing-4);flex-shrink:0;border-radius:var(--radius-md);background:var(--color-neutral-300)}._spacer_1y1aa_195{flex-grow:1}._signOut_1y1aa_201{margin-bottom:var(--spacing-4)}._column_1y1aa_207{display:flex;min-width:0;flex-basis:0;flex-direction:column;flex-grow:1}._header_1y1aa_216{display:flex;box-sizing:border-box;height:var(--spacing-12);flex-shrink:0;align-items:center;justify-content:space-between;padding:0 var(--spacing-5);border-bottom:1px solid var(--color-border)}._headerStart_1y1aa_227{display:flex;align-items:center;gap:var(--spacing-3)}._panelMark_1y1aa_237{display:flex;color:var(--color-foreground-muted)}._crumbs_1y1aa_244{display:flex;align-items:center;gap:var(--spacing-settings-crumb);margin:0;padding:0;font-size:var(--text-sm);line-height:var(--spacing-4);list-style:none}._crumbStep_1y1aa_255{display:flex;align-items:center;gap:var(--spacing-settings-crumb)}._crumb_1y1aa_244{color:var(--color-foreground-muted);text-decoration:none}._crumbSeparator_1y1aa_266{color:var(--color-foreground-disabled)}._crumbCurrent_1y1aa_270{color:var(--color-foreground);font-weight:var(--font-weight-semibold);text-decoration:none}._headerEnd_1y1aa_276,._helpLinks_1y1aa_282{display:flex;align-items:center;gap:var(--spacing-4_5)}._helpLink_1y1aa_282{color:var(--color-foreground-secondary);font-size:var(--text-sm);line-height:var(--leading-normal);text-decoration:none}._content_1y1aa_298{display:flex;flex-direction:column;flex-grow:1;background:var(--color-surface)}._pageHead_1y1aa_307{display:flex;flex-shrink:0;align-items:flex-start;justify-content:space-between;gap:var(--spacing-6);padding:var(--spacing-7) var(--spacing-8) var(--spacing-6);border-bottom:1px solid var(--color-border);background:var(--color-surface)}._pageHeadText_1y1aa_318{display:flex;flex-direction:column;gap:var(--spacing-1)}._pageTitle_1y1aa_325{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--spacing-6)}._pageDescription_1y1aa_335{margin:0;color:var(--color-foreground-muted);font-size:var(--text-xs);line-height:var(--spacing-4)}@container (max-width: 767px){._frame_1y1aa_47{flex-direction:column}._sidebar_1y1aa_59{width:auto;flex-direction:row;align-items:center;gap:var(--spacing-0_5);padding:var(--spacing-1_5) var(--spacing-2);overflow-x:auto;border-right:none;border-bottom:1px solid var(--color-border);white-space:nowrap}._sidebar_1y1aa_59 a{flex-shrink:0}._title_1y1aa_99,._groupLabel_1y1aa_124,._spacer_1y1aa_195,._helpLinks_1y1aa_282,._panelMark_1y1aa_237{display:none}._group_1y1aa_112{flex-direction:row;gap:var(--spacing-0_5)}._group_1y1aa_112+._group_1y1aa_112{padding-top:0}._back_1y1aa_76,._signOut_1y1aa_201{margin:0;padding:var(--spacing-2) var(--spacing-2_5)}._header_1y1aa_216{padding:0 var(--spacing-4)}._pageHead_1y1aa_307{flex-wrap:wrap;padding:var(--spacing-5) var(--spacing-4) var(--spacing-4_5)}}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boost33/ui",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "description": "The app shell every Boost33 product renders inside.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",