@echodial/deck 0.1.0
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.
- package/LICENSE +21 -0
- package/README.md +1327 -0
- package/bin/deck.mjs +219 -0
- package/build.mjs +338 -0
- package/dist/api-buckets.json +10486 -0
- package/dist/api.json +57896 -0
- package/dist/brand/deck-apple-touch-icon.png +0 -0
- package/dist/brand/deck-logo-dark.svg +1 -0
- package/dist/brand/deck-logo-light.svg +1 -0
- package/dist/brand/deck-logo-stacked.svg +1 -0
- package/dist/brand/deck-logo.svg +1 -0
- package/dist/brand/deck-mark.svg +7 -0
- package/dist/brand/deck-og.png +0 -0
- package/dist/collisions.json +223 -0
- package/dist/deck-adapters.js +482 -0
- package/dist/deck-adapters.min.js +23 -0
- package/dist/deck-extras.js +823 -0
- package/dist/deck-extras.min.js +5 -0
- package/dist/deck-icons.svg +184 -0
- package/dist/deck.bundle.js +2638 -0
- package/dist/deck.bundle.min.js +86 -0
- package/dist/deck.css +7904 -0
- package/dist/deck.esm.js +2644 -0
- package/dist/deck.js +1331 -0
- package/dist/deck.min.css +32 -0
- package/dist/deck.min.js +60 -0
- package/dist/layers/anchor.css +192 -0
- package/dist/layers/buttons.css +210 -0
- package/dist/layers/charts.css +337 -0
- package/dist/layers/combobox.css +248 -0
- package/dist/layers/components.css +868 -0
- package/dist/layers/container.css +199 -0
- package/dist/layers/datagrid.css +335 -0
- package/dist/layers/datepicker.css +305 -0
- package/dist/layers/forms.css +401 -0
- package/dist/layers/gradients.css +302 -0
- package/dist/layers/inputs.css +522 -0
- package/dist/layers/layers.css +87 -0
- package/dist/layers/layout.css +235 -0
- package/dist/layers/logical.css +226 -0
- package/dist/layers/media.css +400 -0
- package/dist/layers/mobile.css +245 -0
- package/dist/layers/motion.css +379 -0
- package/dist/layers/nav.css +771 -0
- package/dist/layers/perf.css +234 -0
- package/dist/layers/print.css +198 -0
- package/dist/layers/reset.css +103 -0
- package/dist/layers/space3d.css +280 -0
- package/dist/layers/toasts.css +201 -0
- package/dist/layers/tokens.css +229 -0
- package/dist/layers/type.css +114 -0
- package/dist/layers/utilities.css +241 -0
- package/dist/sizes.json +52 -0
- package/dist/usage.json +6340 -0
- package/package.json +94 -0
- package/src/00-layers.css +87 -0
- package/src/01-tokens.css +229 -0
- package/src/02-reset.css +103 -0
- package/src/03-type.css +114 -0
- package/src/04-layout.css +235 -0
- package/src/05-buttons.css +210 -0
- package/src/06-forms.css +401 -0
- package/src/07-components.css +868 -0
- package/src/08-mobile.css +245 -0
- package/src/09-utilities.css +241 -0
- package/src/10-datepicker.css +305 -0
- package/src/11-combobox.css +248 -0
- package/src/12-datagrid.css +335 -0
- package/src/13-toasts.css +201 -0
- package/src/14-charts.css +337 -0
- package/src/16-motion.css +379 -0
- package/src/18-container.css +199 -0
- package/src/19-logical.css +226 -0
- package/src/20-gradients.css +302 -0
- package/src/21-space3d.css +280 -0
- package/src/22-nav.css +771 -0
- package/src/23-inputs.css +522 -0
- package/src/24-media.css +400 -0
- package/src/25-anchor.css +192 -0
- package/src/26-perf.css +234 -0
- package/src/99-print.css +198 -0
- package/src/brand/deck-apple-touch-icon.png +0 -0
- package/src/brand/deck-logo-dark.svg +1 -0
- package/src/brand/deck-logo-light.svg +1 -0
- package/src/brand/deck-logo-stacked.svg +1 -0
- package/src/brand/deck-logo.svg +1 -0
- package/src/brand/deck-mark.svg +7 -0
- package/src/brand/deck-og.png +0 -0
- package/src/brand/sources.json +7 -0
- package/src/deck-icons.svg +184 -0
- package/src/js/deck-adapters.js +482 -0
- package/src/js/deck-extras.js +823 -0
- package/src/js/deck.js +1331 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/*! ==========================================================================
|
|
2
|
+
* Deck v0.1.0 — the CSS framework for Keel
|
|
3
|
+
* Mobile first. One file. No build step. No config. No dependencies.
|
|
4
|
+
*
|
|
5
|
+
* <link rel="stylesheet" href="/assets/deck.css">
|
|
6
|
+
*
|
|
7
|
+
* Retheme the entire app from one line:
|
|
8
|
+
* :root { --hue-brand: 265; }
|
|
9
|
+
*
|
|
10
|
+
* Layer order (so your app CSS always wins without !important):
|
|
11
|
+
* deck.reset, deck.tokens, deck.type, deck.layout, deck.components,
|
|
12
|
+
* deck.mobile, deck.motion, deck.effects, deck.utilities, deck.rtl,
|
|
13
|
+
* deck.print, then app.base, app.components, app.pages, app.overrides
|
|
14
|
+
*
|
|
15
|
+
* MIT licence. https://get-keel.dev/deck
|
|
16
|
+
* ======================================================================== */
|
|
17
|
+
/*! ==========================================================================
|
|
18
|
+
* Deck v0.1.0 — the CSS framework for Keel
|
|
19
|
+
* Mobile first. One file. No build step. No config. No dependencies.
|
|
20
|
+
*
|
|
21
|
+
* <link rel="stylesheet" href="/assets/deck.css">
|
|
22
|
+
*
|
|
23
|
+
* Retheme the entire app from one line:
|
|
24
|
+
* :root { --hue-brand: 265; }
|
|
25
|
+
*
|
|
26
|
+
* Layer order (so your app CSS always wins without !important):
|
|
27
|
+
* deck.reset, deck.tokens, deck.type, deck.layout, deck.components,
|
|
28
|
+
* deck.mobile, deck.motion, deck.effects, deck.utilities, deck.rtl,
|
|
29
|
+
* deck.print, then app.base, app.components, app.pages, app.overrides
|
|
30
|
+
*
|
|
31
|
+
* MIT licence. https://get-keel.dev/deck
|
|
32
|
+
* ======================================================================== */@layer deck.reset,deck.tokens,deck.type,deck.layout,deck.components,deck.mobile,deck.motion,deck.effects,deck.utilities,deck.rtl,deck.print,app.base,app.components,app.pages,app.overrides;@property --g-angle{syntax: "<angle>"; initial-value: 180deg; inherits: false;}@property --g-from{syntax: "<color>"; initial-value: transparent; inherits: false;}@property --g-to{syntax: "<color>"; initial-value: transparent; inherits: false;}@property --g-stop{syntax: "<percentage>"; initial-value: 50%; inherits: false;}@property --sheen{syntax: "<percentage>"; initial-value: -40%; inherits: false;}@property --tilt-x{syntax: "<angle>"; initial-value: 0deg; inherits: false;}@property --tilt-y{syntax: "<angle>"; initial-value: 0deg; inherits: false;}@property --depth{syntax: "<length>"; initial-value: 0px; inherits: false;}@layer deck.tokens{:root{color-scheme:light dark;--hue-brand: 196;--hue-accent: 42;--hue-good: 152;--hue-warn: 74;--hue-bad: 24;--hue-neutral: 232;--chroma-brand: .118;--chroma-accent: .142;--chroma-status: .132;--chroma-neutral: .012;--brand-50: oklch(97.4% calc(var(--chroma-brand) * .16) var(--hue-brand));--brand-100: oklch(94.2% calc(var(--chroma-brand) * .3) var(--hue-brand));--brand-200: oklch(88.6% calc(var(--chroma-brand) * .48) var(--hue-brand));--brand-300: oklch(80.4% calc(var(--chroma-brand) * .7) var(--hue-brand));--brand-400: oklch(70.2% calc(var(--chroma-brand) * .9) var(--hue-brand));--brand-500: oklch(60.8% var(--chroma-brand) var(--hue-brand));--brand-600: oklch(51.6% var(--chroma-brand) var(--hue-brand));--brand-700: oklch(43.4% calc(var(--chroma-brand) * .92) var(--hue-brand));--brand-800: oklch(35.6% calc(var(--chroma-brand) * .78) var(--hue-brand));--brand-900: oklch(28.2% calc(var(--chroma-brand) * .62) var(--hue-brand));--brand-950: oklch(20.4% calc(var(--chroma-brand) * .46) var(--hue-brand));--ink-0: oklch(100% 0 0);--ink-25: oklch(99.1% calc(var(--chroma-neutral) * .5) var(--hue-neutral));--ink-50: oklch(97.8% var(--chroma-neutral) var(--hue-neutral));--ink-100: oklch(95.4% calc(var(--chroma-neutral) * 1.4) var(--hue-neutral));--ink-200: oklch(91.2% calc(var(--chroma-neutral) * 1.8) var(--hue-neutral));--ink-300: oklch(84.6% calc(var(--chroma-neutral) * 2.2) var(--hue-neutral));--ink-400: oklch(70.8% calc(var(--chroma-neutral) * 2.6) var(--hue-neutral));--ink-500: oklch(58.4% calc(var(--chroma-neutral) * 2.8) var(--hue-neutral));--ink-600: oklch(47.6% calc(var(--chroma-neutral) * 2.8) var(--hue-neutral));--ink-700: oklch(38.2% calc(var(--chroma-neutral) * 2.6) var(--hue-neutral));--ink-800: oklch(29.4% calc(var(--chroma-neutral) * 2.4) var(--hue-neutral));--ink-900: oklch(22.6% calc(var(--chroma-neutral) * 2.2) var(--hue-neutral));--ink-950: oklch(16.2% calc(var(--chroma-neutral) * 2) var(--hue-neutral));--ink-1000: oklch(11.4% calc(var(--chroma-neutral) * 1.8) var(--hue-neutral));--good-100: oklch(94% calc(var(--chroma-status) * .3) var(--hue-good));--good-500: oklch(62% var(--chroma-status) var(--hue-good));--good-600: oklch(52% var(--chroma-status) var(--hue-good));--good-700: oklch(44% var(--chroma-status) var(--hue-good));--warn-100: oklch(95% calc(var(--chroma-status) * .32) var(--hue-warn));--warn-500: oklch(76% var(--chroma-status) var(--hue-warn));--warn-700: oklch(50% var(--chroma-status) var(--hue-warn));--bad-100: oklch(94.5% calc(var(--chroma-status) * .3) var(--hue-bad));--bad-500: oklch(58% calc(var(--chroma-status) * 1.25) var(--hue-bad));--bad-600: oklch(52% calc(var(--chroma-status) * 1.25) var(--hue-bad));--bad-700: oklch(44% calc(var(--chroma-status) * 1.1) var(--hue-bad));--accent-100: oklch(95% calc(var(--chroma-accent) * .3) var(--hue-accent));--accent-500: oklch(74% var(--chroma-accent) var(--hue-accent));--accent-700: oklch(52% calc(var(--chroma-accent) * .9) var(--hue-accent));--bg: light-dark(var(--ink-50), var(--ink-1000));--bg-sunken: light-dark(var(--ink-100), oklch(8.6% .012 var(--hue-neutral)));--surface: light-dark(var(--ink-0), var(--ink-950));--surface-2: light-dark(var(--ink-25), var(--ink-900));--surface-hover:light-dark(var(--ink-50), var(--ink-900));--line: light-dark(var(--ink-200), oklch(28% .016 var(--hue-neutral)));--line-strong: light-dark(var(--ink-300), oklch(36% .018 var(--hue-neutral)));--text: light-dark(var(--ink-900), var(--ink-100));--text-muted: light-dark(var(--ink-600), var(--ink-400));--text-faint: light-dark(var(--ink-500), var(--ink-500));--text-on-brand: oklch(99% .01 var(--hue-brand));--text-on-accent: oklch(24% .06 var(--hue-accent));--text-on-good: oklch(99% .01 var(--hue-good));--text-on-warn: oklch(24% .06 var(--hue-warn));--text-on-bad: oklch(99% .01 var(--hue-bad));--brand: light-dark(var(--brand-600), var(--brand-400));--brand-hover: light-dark(var(--brand-700), var(--brand-300));--brand-soft: light-dark(var(--brand-50), oklch(26% .05 var(--hue-brand)));--brand-soft-text: light-dark(var(--brand-800), var(--brand-200));--focus: light-dark(var(--brand-500), var(--brand-300));--space-0: 0;--space-px: 1px;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--space-24: 6rem;--space-section: clamp(2.5rem, 1.4rem + 5.5vw, 6rem);--space-gutter: clamp(1rem, .55rem + 2.2vw, 2rem);--r-xs: 4px;--r-sm: 7px;--r-md: 12px;--r-lg: 18px;--r-full: 999px;--shadow-color: var(--hue-neutral);--shadow-1: 0 1px 2px oklch(20% .03 var(--shadow-color) / .06), 0 1px 1px oklch(20% .03 var(--shadow-color) / .04);--shadow-2: 0 2px 4px oklch(20% .03 var(--shadow-color) / .05), 0 4px 12px oklch(20% .03 var(--shadow-color) / .07);--shadow-3: 0 4px 8px oklch(20% .03 var(--shadow-color) / .06), 0 12px 28px oklch(20% .03 var(--shadow-color) / .1);--shadow-4: 0 8px 16px oklch(20% .03 var(--shadow-color) / .08), 0 24px 56px oklch(20% .03 var(--shadow-color) / .14);--shadow-inset: inset 0 1px 0 oklch(100% 0 0 / .6);--scrim: linear-gradient(to top, oklch(12% .02 var(--hue-neutral) / .82) 0%, oklch(12% .02 var(--hue-neutral) / .62) 22%, oklch(12% .02 var(--hue-neutral) / .28) 48%, transparent 78%);--font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI Variable Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Mono", "Roboto Mono", Menlo, Consolas, monospace;--font-display: var(--font-sans);--text-2xs: .6875rem;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-md: 1.0625rem;--text-lg: clamp(1.125rem, 1.06rem + .32vw, 1.3125rem);--text-xl: clamp(1.3125rem, 1.19rem + .62vw, 1.625rem);--text-2xl: clamp(1.5625rem, 1.33rem + 1.16vw, 2.125rem);--text-3xl: clamp(1.875rem, 1.44rem + 2.16vw, 2.875rem);--text-4xl: clamp(2.25rem, 1.5rem + 3.75vw, 3.75rem);--leading-tight: 1.12;--leading-snug: 1.3;--leading-normal: 1.55;--leading-loose: 1.72;--measure: 68ch;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-spring: linear(0, .18 6%, .53 14%, .89 24%, 1.04 32%, 1.06 40%, 1);--dur-1: .11s;--dur-2: .19s;--dur-3: .3s;--tap: 44px;--control-h-sm: 34px;--control-h: 42px;--control-h-lg: 50px;--ring: 0 0 0 3px light-dark(oklch(from var(--focus) l c h / .32), oklch(from var(--focus) l c h / .42));--z-sticky: 100;--z-nav: 200;--z-sheet: 300;--z-modal: 400;--z-toast: 500}@supports (color: contrast-color(red)){:root{--text-on-brand: contrast-color(var(--brand-600));--text-on-accent: contrast-color(var(--accent-500));--text-on-good: contrast-color(var(--good-600));--text-on-warn: contrast-color(var(--warn-500));--text-on-bad: contrast-color(var(--bad-600))}}[data-theme=light]{color-scheme:light}[data-theme=dark]{color-scheme:dark}@media(prefers-color-scheme:dark){:root{--shadow-2: 0 2px 4px oklch(0% 0 0 / .3), 0 4px 12px oklch(0% 0 0 / .34);--shadow-3: 0 4px 10px oklch(0% 0 0 / .34), 0 14px 30px oklch(0% 0 0 / .4);--shadow-4: 0 10px 20px oklch(0% 0 0 / .4), 0 28px 60px oklch(0% 0 0 / .5);--shadow-inset: inset 0 1px 0 oklch(100% 0 0 / .06)}}}@layer deck.reset{*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;tab-size:2;scroll-behavior:smooth;scroll-padding-block-start:calc(var(--control-h-lg) + var(--space-4))}body{min-block-size:100dvh;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);font-synthesis-weight:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-wrap:break-word}img,svg,video,canvas,audio,iframe,embed,object{display:block;max-inline-size:100%}img,video{block-size:auto}input,button,textarea,select{font:inherit;color:inherit}button{background:none;border:0}p,li,figcaption{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}ul[class],ol[class]{list-style:none;padding:0}table{border-collapse:collapse;border-spacing:0}hr{border:0;block-size:1px;background:var(--line)}:target{scroll-margin-block-start:var(--space-16)}::selection{background:var(--brand-200);color:var(--ink-950)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-xs)}:focus:not(:focus-visible){outline:none}*{scrollbar-color:var(--ink-300) transparent;scrollbar-width:thin}::-webkit-scrollbar{inline-size:10px;block-size:10px}::-webkit-scrollbar-thumb{background:var(--ink-300);border-radius:var(--r-full);border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--ink-400);background-clip:content-box}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.spinner,.icon-spin,.skeleton,.marquee-track,.btn.is-loading:after,.dg-wrap.is-loading:after,.ping:after{animation-duration:2.4s!important;animation-iteration-count:infinite!important}}@supports (interpolate-size: allow-keywords){:root{interpolate-size:allow-keywords}}}@layer deck.type{h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:var(--font-display);font-weight:640;line-height:var(--leading-tight);letter-spacing:-.021em;color:var(--text)}h1,.h1{font-size:var(--text-3xl);letter-spacing:-.031em}h2,.h2{font-size:var(--text-2xl);letter-spacing:-.026em}h3,.h3{font-size:var(--text-xl)}h4,.h4{font-size:var(--text-lg);letter-spacing:-.014em}h5,.h5{font-size:var(--text-md);letter-spacing:-.008em;font-weight:620}h6,.h6{font-size:var(--text-base);letter-spacing:0;font-weight:640}.display{font-size:var(--text-4xl);font-weight:700;line-height:1.04;letter-spacing:-.036em}.lede{font-size:var(--text-md);line-height:var(--leading-loose);color:var(--text-muted);max-inline-size:var(--measure)}small{font-size:var(--text-sm)}strong,b{font-weight:640}a{color:var(--brand);text-decoration-thickness:1px;text-underline-offset:.18em;text-decoration-color:color-mix(in oklab,currentColor 40%,transparent);transition:color var(--dur-1) var(--ease-out),text-decoration-color var(--dur-1) var(--ease-out)}a:hover{color:var(--brand-hover);text-decoration-color:currentColor}.link-quiet{color:var(--text);text-decoration:none}.link-quiet:hover{color:var(--brand);text-decoration:underline}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.92em}:not(pre)>code{background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r-xs);padding:.12em .38em;color:light-dark(var(--brand-800),var(--brand-200))}pre{background:var(--ink-950);color:var(--ink-100);padding:var(--space-4);border-radius:var(--r-md);overflow-x:auto;line-height:1.6;font-size:var(--text-sm);-webkit-overflow-scrolling:touch}pre code{background:none;border:0;padding:0;color:inherit}kbd{display:inline-block;background:var(--surface);border:1px solid var(--line-strong);border-block-end-width:2px;border-radius:var(--r-xs);padding:.1em .42em;font-size:var(--text-xs);line-height:1.5;color:var(--text-muted)}blockquote{border-inline-start:3px solid var(--brand-300);padding-inline-start:var(--space-4);color:var(--text-muted);font-size:var(--text-md);line-height:var(--leading-loose)}mark{background:var(--accent-100);color:light-dark(var(--ink-900),var(--ink-900));padding:.05em .2em;border-radius:var(--r-xs)}abbr[title]{text-decoration:underline dotted;cursor:help}.prose{max-inline-size:var(--measure)}.prose>*+*{margin-block-start:var(--space-4)}.prose>*+:is(h2,h3,h4){margin-block-start:var(--space-8)}.prose :is(ul,ol){padding-inline-start:var(--space-6);display:grid;gap:var(--space-2)}.prose ul{list-style:disc}.prose ol{list-style:decimal}.prose li::marker{color:var(--text-faint)}.prose img{border-radius:var(--r-md)}.prose hr{margin-block:var(--space-8)}}@layer deck.layout{.container{inline-size:100%;max-inline-size:var(--container, 76rem);margin-inline:auto;padding-inline:var(--space-gutter)}.container-sm{--container: 40rem}.container-md{--container: 56rem}.container-lg{--container: 76rem}.container-xl{--container: 90rem}.container-full{--container: none}.stack{display:flex;flex-direction:column;gap:var(--gap, var(--space-4))}.stack-0{--gap: 0}.stack-1{--gap: var(--space-1)}.stack-2{--gap: var(--space-2)}.stack-3{--gap: var(--space-3)}.stack-4{--gap: var(--space-4)}.stack-6{--gap: var(--space-6)}.stack-8{--gap: var(--space-8)}.cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap, var(--space-3))}.cluster-tight{--gap: var(--space-2)}.cluster-end{justify-content:flex-end}.cluster-center{justify-content:center}.cluster-between{justify-content:space-between}.bar{display:flex;align-items:center;gap:var(--space-3)}.bar>.push{margin-inline-start:auto}.grid{display:grid;gap:var(--gap, var(--space-4));grid-template-columns:repeat(auto-fit,minmax(min(var(--min, 17rem),100%),1fr))}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(24rem,100%),1fr))}.grid-tight{--min: 12rem}.grid-wide{--min: 24rem}.grid-fixed-2{grid-template-columns:1fr 1fr}.grid-fixed-3{grid-template-columns:repeat(3,1fr)}.grid-fixed-4{grid-template-columns:repeat(4,1fr)}.split{display:grid;gap:var(--gap, var(--space-6));grid-template-columns:1fr}.split>*{min-inline-size:0}@media(min-width:64rem){.split{grid-template-columns:minmax(0,1fr) var(--rail, 20rem)}.split-rail-start{grid-template-columns:var(--rail, 20rem) minmax(0,1fr)}}.center{display:flex;flex-direction:column;align-items:center;text-align:center;gap:var(--gap, var(--space-4))}.section{padding-block:var(--space-section)}.scroller{display:flex;gap:var(--gap, var(--space-3));overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scrollbar-width:none;padding-block-end:var(--space-2);margin-inline:calc(var(--space-gutter) * -1);padding-inline:var(--space-gutter)}.scroller::-webkit-scrollbar{display:none}.scroller>*{scroll-snap-align:start;flex:0 0 auto}.sticky-top{position:sticky;inset-block-start:0;z-index:var(--z-sticky);background:color-mix(in oklab,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px)}@supports (container-type: scroll-state){.sticky-top{container-type:scroll-state;background:none;backdrop-filter:none;-webkit-backdrop-filter:none}.sticky-top:after{content:"";position:absolute;inset:0;z-index:-1;opacity:0;background:color-mix(in oklab,var(--bg) 82%,transparent);backdrop-filter:saturate(1.6) blur(12px);-webkit-backdrop-filter:saturate(1.6) blur(12px);transition:opacity var(--dur-2) var(--ease-out)}@container scroll-state(stuck: block-start){.sticky-top:after{opacity:1;box-shadow:var(--shadow-2)}}}.app-shell{display:grid;min-block-size:100dvh;grid-template-rows:auto 1fr auto}.ratio-16x9{aspect-ratio:16 / 9;object-fit:cover;inline-size:100%}.ratio-4x3{aspect-ratio:4 / 3;object-fit:cover;inline-size:100%}.ratio-1x1{aspect-ratio:1;object-fit:cover;inline-size:100%}.cq{container-type:inline-size}}@layer deck.components{.btn{--btn-bg: var(--surface);--btn-text: var(--text);--btn-border: var(--line-strong);--btn-shadow: var(--shadow-1);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);block-size:var(--control-h);min-inline-size:var(--control-h);padding-inline:var(--space-4);border:1px solid var(--btn-border);border-radius:var(--r-sm);background:var(--btn-bg);color:var(--btn-text);box-shadow:var(--btn-shadow);font-size:var(--text-base);font-weight:560;line-height:1;letter-spacing:-.008em;white-space:nowrap;text-decoration:none;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;transition:background-color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),translate var(--dur-1) var(--ease-out)}.btn{position:relative}.btn:before{content:"";position:absolute;inset-block-start:50%;inset-inline-start:50%;translate:-50% -50%;inline-size:100%;block-size:100%;min-inline-size:var(--tap);min-block-size:var(--tap)}.btn:hover{background:var(--surface-hover);border-color:var(--ink-400)}.btn:active{translate:0 1px;box-shadow:none}.btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.btn[disabled],.btn[aria-disabled=true],.btn.is-disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{--btn-bg: var(--brand-600);--btn-text: var(--text-on-brand);--btn-border: transparent;--btn-shadow: var(--shadow-2), var(--shadow-inset)}.btn-primary:hover{--btn-bg: var(--brand-700);border-color:transparent;background:var(--brand-700)}.btn-accent{--btn-bg: var(--accent-500);--btn-text: var(--text-on-accent);--btn-border: transparent;--btn-shadow: var(--shadow-2), var(--shadow-inset)}.btn-accent:hover{background:oklch(from var(--accent-500) calc(l - .05) c h);border-color:transparent}.btn-danger{--btn-bg: var(--bad-600);--btn-text: var(--text-on-bad);--btn-border: transparent;--btn-shadow: var(--shadow-2), var(--shadow-inset)}.btn-danger:hover{background:var(--bad-700);border-color:transparent}.btn-soft{--btn-bg: var(--brand-soft);--btn-text: var(--brand-soft-text);--btn-border: transparent;--btn-shadow: none}.btn-soft:hover{background:color-mix(in oklab,var(--brand-soft) 80%,var(--brand-300));border-color:transparent}.btn-ghost{--btn-bg: transparent;--btn-border: transparent;--btn-shadow: none}.btn-ghost:hover{background:var(--surface-hover);border-color:transparent}.btn-outline{--btn-bg: transparent;--btn-text: var(--brand);--btn-border: color-mix(in oklab, var(--brand) 45%, transparent);--btn-shadow: none}.btn-outline:hover{background:var(--brand-soft);border-color:var(--brand)}.btn-link{--btn-bg: transparent;--btn-border: transparent;--btn-shadow: none;--btn-text: var(--brand);padding-inline:var(--space-1);block-size:auto}.btn-link:hover{background:none;border-color:transparent;text-decoration:underline}.btn-sm{block-size:var(--control-h-sm);padding-inline:var(--space-3);font-size:var(--text-sm);border-radius:var(--r-xs);gap:var(--space-1)}.btn-lg{block-size:var(--control-h-lg);padding-inline:var(--space-6);font-size:var(--text-md);font-weight:600}.btn-block{inline-size:100%}.btn-icon{padding-inline:0;inline-size:var(--control-h)}.btn-icon.btn-sm{inline-size:var(--control-h-sm)}.btn-icon.btn-lg{inline-size:var(--control-h-lg)}.btn-round{border-radius:var(--r-full)}.btn-group{display:inline-flex}.btn-group>.btn{border-radius:0;box-shadow:none}.btn-group>.btn:first-child{border-start-start-radius:var(--r-sm);border-end-start-radius:var(--r-sm)}.btn-group>.btn:last-child{border-start-end-radius:var(--r-sm);border-end-end-radius:var(--r-sm)}.btn-group>.btn+.btn{margin-inline-start:-1px}.btn-group>.btn:hover,.btn-group>.btn:focus-visible{z-index:1}.btn.is-loading{color:transparent;pointer-events:none}.btn.is-loading:after{content:"";position:absolute;inline-size:1em;block-size:1em;border:2px solid color-mix(in oklab,var(--btn-text) 30%,transparent);border-block-start-color:var(--btn-text);border-radius:var(--r-full);animation:dk-spin .62s linear infinite}@keyframes dk-spin{to{rotate:360deg}}.fab{position:fixed;inset-block-end:calc(var(--space-5) + env(safe-area-inset-bottom));inset-inline-end:var(--space-5);z-index:var(--z-nav);inline-size:56px;block-size:56px;border-radius:var(--r-full);background:var(--brand-600);color:var(--text-on-brand);box-shadow:var(--shadow-4);display:grid;place-items:center;cursor:pointer;transition:scale var(--dur-2) var(--ease-spring),background-color var(--dur-1) var(--ease-out)}.fab:hover{background:var(--brand-700);scale:1.04}.fab:active{scale:.96}body:has(.tabbar) .fab{inset-block-end:calc(var(--space-4) + var(--tap) + var(--space-3) + env(safe-area-inset-bottom))}}@layer deck.components{.field{display:flex;flex-direction:column;gap:var(--space-2);min-inline-size:0}.label{font-size:var(--text-sm);font-weight:580;color:var(--text);display:flex;align-items:center;gap:var(--space-2)}.label .optional{color:var(--text-faint);font-weight:400}.label .required{color:var(--bad-500)}.help{font-size:var(--text-sm);color:var(--text-muted)}.error{font-size:var(--text-sm);color:light-dark(var(--bad-700),oklch(76% .13 var(--hue-bad)));display:flex;gap:var(--space-2);align-items:flex-start}.input,.textarea,.select{inline-size:100%;min-block-size:var(--control-h);padding:var(--space-2) var(--space-3);background:var(--surface);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-1);font-size:var(--text-base);line-height:1.45;transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out),background-color var(--dur-1) var(--ease-out)}@media(pointer:coarse){.input,.textarea,.select{font-size:16px}}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.input:hover,.textarea:hover,.select:hover{border-color:var(--ink-400)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--focus);box-shadow:var(--ring)}.input[disabled],.textarea[disabled],.select[disabled]{background:var(--bg-sunken);color:var(--text-faint);cursor:not-allowed;box-shadow:none}.input[readonly]{background:var(--surface-2)}.textarea{min-block-size:calc(var(--control-h) * 2);resize:vertical;field-sizing:content;max-block-size:22rem}.select{appearance:none;padding-inline-end:var(--space-10);background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 19px) calc(50% + 1px),calc(100% - 14px) calc(50% + 1px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;cursor:pointer}.input:user-invalid,.textarea:user-invalid,.select:user-invalid,.field.is-invalid :is(.input,.textarea,.select){border-color:var(--bad-500)}.input:user-invalid:focus,.field.is-invalid :is(.input,.textarea,.select):focus{box-shadow:0 0 0 3px color-mix(in oklab,var(--bad-500) 26%,transparent)}.input-group{display:flex;align-items:stretch;inline-size:100%;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden}.input-group:focus-within{border-color:var(--focus);box-shadow:var(--ring)}.input-group>.input{border:0;border-radius:0;box-shadow:none;background:transparent}.input-group>.input:focus{box-shadow:none}.input-group>.addon{display:inline-flex;align-items:center;gap:var(--space-2);padding-inline:var(--space-3);background:var(--surface-2);color:var(--text-muted);font-size:var(--text-sm);white-space:nowrap;border-inline-end:1px solid var(--line)}.input-group>.addon:last-child{border-inline-start:1px solid var(--line);border-inline-end:0}.input-group>.btn{border-radius:0;border-block:0;border-inline-end:0;box-shadow:none}.search{position:relative;display:flex;align-items:center}.search>.icon{position:absolute;inset-inline-start:var(--space-3);color:var(--text-faint);pointer-events:none}.search>.input{padding-inline-start:var(--space-10);border-radius:var(--r-full)}.check{display:flex;align-items:flex-start;gap:var(--space-3);min-block-size:var(--tap);padding-block:var(--space-2);cursor:pointer;line-height:1.4}.check input[type=checkbox],.check input[type=radio]{appearance:none;flex:0 0 auto;inline-size:20px;block-size:20px;margin-block-start:1px;border:1.5px solid var(--line-strong);background:var(--surface);border-radius:var(--r-xs);display:grid;place-content:center;cursor:pointer;transition:background-color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}.check input[type=radio]{border-radius:var(--r-full)}.check input:hover{border-color:var(--brand-400)}.check input:checked{background:var(--brand-600);border-color:var(--brand-600)}.check input[type=checkbox]:before{content:"";inline-size:11px;block-size:11px;scale:0;transition:scale var(--dur-2) var(--ease-spring);box-shadow:inset 1em 1em var(--text-on-brand);clip-path:polygon(14% 44%,0 65%,41% 100%,100% 16%,84% 0,39% 68%)}.check input[type=radio]:before{content:"";inline-size:9px;block-size:9px;border-radius:var(--r-full);background:var(--text-on-brand);scale:0;transition:scale var(--dur-2) var(--ease-spring)}.check input:checked:before{scale:1}.check input:indeterminate{background:var(--brand-600);border-color:var(--brand-600)}.check input:indeterminate:before{scale:1;clip-path:polygon(10% 42%,90% 42%,90% 58%,10% 58%)}.check input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.check .check-text{display:flex;flex-direction:column;gap:2px}.check .check-note{font-size:var(--text-sm);color:var(--text-muted)}.check-card{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--space-4);background:var(--surface);transition:border-color var(--dur-1) var(--ease-out),background-color var(--dur-1) var(--ease-out)}.check-card:has(input:checked){border-color:var(--brand-500);background:var(--brand-soft)}.switch{display:flex;align-items:center;gap:var(--space-3);min-block-size:var(--tap);cursor:pointer}.switch input{appearance:none;flex:0 0 auto;inline-size:46px;block-size:28px;border-radius:var(--r-full);background:var(--ink-300);position:relative;cursor:pointer;transition:background-color var(--dur-2) var(--ease-out)}.switch input:after{content:"";position:absolute;inset-block-start:3px;inset-inline-start:3px;inline-size:22px;block-size:22px;border-radius:var(--r-full);background:var(--ink-0);box-shadow:var(--shadow-2);transition:translate var(--dur-2) var(--ease-spring)}.switch input:checked{background:var(--brand-600)}.switch input:checked:after{translate:18px 0}.switch input:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.range{inline-size:100%;appearance:none;background:transparent;block-size:var(--tap)}.range::-webkit-slider-runnable-track{block-size:6px;border-radius:var(--r-full);background:var(--ink-200)}.range::-moz-range-track{block-size:6px;border-radius:var(--r-full);background:var(--ink-200)}.range::-webkit-slider-thumb{appearance:none;margin-block-start:-8px;inline-size:22px;block-size:22px;border-radius:var(--r-full);background:var(--brand-600);border:3px solid var(--ink-0);box-shadow:var(--shadow-2);cursor:grab}.range::-moz-range-thumb{inline-size:22px;block-size:22px;border-radius:var(--r-full);background:var(--brand-600);border:3px solid var(--ink-0);box-shadow:var(--shadow-2);cursor:grab}.range:active::-webkit-slider-thumb{cursor:grabbing;scale:1.08}.file{display:grid;place-items:center;gap:var(--space-2);padding:var(--space-6);border:1.5px dashed var(--line-strong);border-radius:var(--r-md);background:var(--surface-2);text-align:center;color:var(--text-muted);cursor:pointer;transition:border-color var(--dur-1) var(--ease-out),background-color var(--dur-1) var(--ease-out)}.file:hover,.file:focus-within{border-color:var(--brand-500);background:var(--brand-soft)}.file input[type=file]{position:absolute;opacity:0;inline-size:1px;block-size:1px}.fieldset{border:1px solid var(--line);border-radius:var(--r-md);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4);min-inline-size:0}.fieldset>legend{padding-inline:var(--space-2);font-size:var(--text-sm);font-weight:600;color:var(--text-muted)}.field-row{display:grid;gap:var(--space-4);grid-template-columns:1fr}@media(min-width:40rem){.field-row{grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr))}}.form-actions{display:flex;gap:var(--space-3);flex-wrap:wrap}.form-actions-sticky{position:sticky;inset-block-end:0;z-index:var(--z-sticky);background:color-mix(in oklab,var(--bg) 88%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-block-start:1px solid var(--line);padding-block:var(--space-3);padding-block-end:calc(var(--space-3) + env(safe-area-inset-bottom))}.form-actions-sticky>.btn{flex:1 1 auto}@media(min-width:48rem){.form-actions-sticky>.btn{flex:0 0 auto}}}@layer deck.components{.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-1);display:flex;flex-direction:column;min-inline-size:0;overflow:clip}.card-header,.card-footer{padding:var(--space-4) var(--space-5);display:flex;align-items:center;gap:var(--space-3)}.card-header{border-block-end:1px solid var(--line)}.card-footer{border-block-start:1px solid var(--line);background:var(--surface-2);margin-block-start:auto}.card-body{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.card-title{font-size:var(--text-md);font-weight:620;letter-spacing:-.012em}.card-media{margin:0}.card-media img{inline-size:100%;object-fit:cover}.card-link{position:relative;transition:box-shadow var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out)}.card-link:hover{box-shadow:var(--shadow-3);border-color:var(--line-strong)}.card-link .stretch:after{content:"";position:absolute;inset:0}.card-flush{border:0;box-shadow:none;background:none}.card-raised{box-shadow:var(--shadow-3);border-color:transparent}.card-brand{border-color:var(--brand-200);background:var(--brand-soft)}.panel{background:var(--surface);border-block:1px solid var(--line);padding:var(--space-5) var(--space-gutter);margin-inline:calc(var(--space-gutter) * -1)}@media(min-width:40rem){.panel{border:1px solid var(--line);border-radius:var(--r-md);margin-inline:0;padding-inline:var(--space-5)}}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:.18em .55em;border-radius:var(--r-xs);background:var(--surface-2);color:var(--text-muted);border:1px solid var(--line);font-size:var(--text-xs);font-weight:580;line-height:1.45;white-space:nowrap}.badge-brand{background:var(--brand-soft);color:var(--brand-soft-text);border-color:transparent}.badge-good{background:var(--good-100);color:var(--good-700);border-color:transparent}.badge-warn{background:var(--warn-100);color:var(--warn-700);border-color:transparent}.badge-bad{background:var(--bad-100);color:var(--bad-700);border-color:transparent}.badge-solid{background:var(--brand-600);color:var(--text-on-brand);border-color:transparent}.badge-dot:before{content:"";inline-size:6px;block-size:6px;border-radius:var(--r-full);background:currentColor}.chip{display:inline-flex;align-items:center;gap:var(--space-2);min-block-size:34px;padding-inline:var(--space-3);border-radius:var(--r-full);border:1px solid var(--line-strong);background:var(--surface);font-size:var(--text-sm);font-weight:520;cursor:pointer;white-space:nowrap;transition:background-color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}.chip:hover{background:var(--surface-hover)}.chip[aria-pressed=true],.chip.is-active{background:var(--brand-600);border-color:var(--brand-600);color:var(--text-on-brand)}.chip-remove{display:grid;place-items:center;opacity:.6}.chip-remove:hover{opacity:1}.alert{display:flex;gap:var(--space-3);padding:var(--space-4);border-radius:var(--r-md);border:1px solid var(--line);background:var(--surface-2);border-inline-start:3px solid var(--ink-400)}.alert-title{font-weight:620;margin-block-end:2px}.alert-body{font-size:var(--text-sm);color:var(--text-muted);min-inline-size:0}.alert>.icon{flex:0 0 auto;margin-block-start:1px}.alert-info{background:var(--brand-soft);border-color:transparent;border-inline-start-color:var(--brand-500);color:var(--brand-soft-text)}.alert-good{background:var(--good-100);border-color:transparent;border-inline-start-color:var(--good-500);color:var(--good-700)}.alert-warn{background:var(--warn-100);border-color:transparent;border-inline-start-color:var(--warn-500);color:var(--warn-700)}.alert-bad{background:var(--bad-100);border-color:transparent;border-inline-start-color:var(--bad-500);color:var(--bad-700)}.alert :is(.alert-body,p){color:inherit;opacity:.9}.avatar{--size: 40px;inline-size:var(--size);block-size:var(--size);border-radius:var(--r-full);background:var(--brand-soft);color:var(--brand-soft-text);display:grid;place-items:center;font-size:calc(var(--size) * .38);font-weight:620;overflow:hidden;flex:0 0 auto;-webkit-user-select:none;user-select:none}.avatar img{inline-size:100%;block-size:100%;object-fit:cover}.avatar-xs{--size: 24px}.avatar-sm{--size: 32px}.avatar-lg{--size: 56px}.avatar-xl{--size: 80px}.avatar-square{border-radius:var(--r-sm)}.avatar-stack{display:flex}.avatar-stack>.avatar+.avatar{margin-inline-start:calc(var(--size, 40px) * -.32)}.avatar-stack>.avatar{box-shadow:0 0 0 2px var(--surface)}.presence{position:relative}.presence:after{content:"";position:absolute;inset-block-end:0;inset-inline-end:0;inline-size:30%;block-size:30%;border-radius:var(--r-full);background:var(--good-500);box-shadow:0 0 0 2px var(--surface)}.presence-away:after{background:var(--warn-500)}.presence-off:after{background:var(--ink-400)}.table-wrap{inline-size:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.table{inline-size:100%;font-size:var(--text-sm)}.table :is(th,td){padding:var(--space-3) var(--space-4);text-align:start;vertical-align:middle}.table thead th{background:var(--surface-2);font-weight:600;color:var(--text-muted);font-size:var(--text-xs);letter-spacing:.01em;white-space:nowrap;position:sticky;inset-block-start:0;z-index:1}.table tbody tr+tr{border-block-start:1px solid var(--line)}.table tbody tr:hover{background:var(--surface-hover)}.table .num{text-align:end;font-variant-numeric:tabular-nums}.table-compact :is(th,td){padding:var(--space-2) var(--space-3)}@media(max-width:39.999rem){.table-stack thead{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip-path:inset(50%)}.table-stack,.table-stack tbody,.table-stack tr,.table-stack td{display:block;inline-size:100%}.table-stack tr{border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--space-2);margin-block-end:var(--space-3)}.table-stack tbody tr+tr{border-block-start:1px solid var(--line)}.table-stack td{display:flex;justify-content:space-between;gap:var(--space-4);padding:var(--space-2) var(--space-3);text-align:end}.table-stack td:before{content:attr(data-label);font-weight:580;color:var(--text-muted);text-align:start}}.list{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);overflow:clip}.list-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-block-size:var(--tap);color:inherit;text-decoration:none;transition:background-color var(--dur-1) var(--ease-out)}.list-row+.list-row{border-block-start:1px solid var(--line)}.list-row:hover{background:var(--surface-hover)}.list-row .list-main{flex:1 1 auto;min-inline-size:0;display:flex;flex-direction:column;gap:1px}.list-row .list-title{font-weight:560}.list-row .list-sub{font-size:var(--text-sm);color:var(--text-muted)}.list-row .list-trail{color:var(--text-faint);flex:0 0 auto;font-size:var(--text-sm)}.list-header{padding:var(--space-2) var(--space-4);background:var(--surface-2);font-size:var(--text-xs);font-weight:620;color:var(--text-muted);position:sticky;inset-block-start:0;z-index:1}.tabs{display:flex;gap:var(--space-1);border-block-end:1px solid var(--line);overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{padding:var(--space-3) var(--space-4);min-block-size:var(--tap);display:inline-flex;align-items:center;gap:var(--space-2);color:var(--text-muted);font-weight:560;font-size:var(--text-sm);white-space:nowrap;cursor:pointer;border-block-end:2px solid transparent;margin-block-end:-1px;text-decoration:none;transition:color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out)}.tab:hover{color:var(--text)}.tab[aria-selected=true],.tab.is-active{color:var(--brand);border-block-end-color:var(--brand)}.segmented{display:inline-flex;padding:3px;gap:2px;background:var(--bg-sunken);border-radius:var(--r-sm);border:1px solid var(--line);inline-size:100%}.segmented>*{flex:1 1 0;min-block-size:36px;padding-inline:var(--space-3);border-radius:calc(var(--r-sm) - 2px);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:560;color:var(--text-muted);cursor:pointer;white-space:nowrap;transition:background-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.segmented>[aria-selected=true],.segmented>.is-active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-1)}.accordion{border:1px solid var(--line);border-radius:var(--r-md);overflow:clip;background:var(--surface)}.accordion>details+details{border-block-start:1px solid var(--line)}.accordion summary,.disclosure summary{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4);min-block-size:var(--tap);font-weight:560;cursor:pointer;list-style:none;transition:background-color var(--dur-1) var(--ease-out)}.accordion summary::-webkit-details-marker,.disclosure summary::-webkit-details-marker{display:none}.accordion summary:hover,.disclosure summary:hover{background:var(--surface-hover)}.accordion summary:after,.disclosure summary:after{content:"";margin-inline-start:auto;inline-size:8px;block-size:8px;border-inline-end:2px solid var(--text-faint);border-block-end:2px solid var(--text-faint);rotate:45deg;translate:0 -2px;transition:rotate var(--dur-2) var(--ease-out)}.accordion details[open] summary:after,.disclosure[open] summary:after{rotate:225deg;translate:0 2px}.accordion .accordion-body,.disclosure .disclosure-body{padding:0 var(--space-4) var(--space-4);color:var(--text-muted);font-size:var(--text-sm)}.accordion details::details-content,.disclosure::details-content{block-size:0;overflow:hidden;transition:block-size var(--dur-3) var(--ease-out),content-visibility var(--dur-3) allow-discrete}.accordion details[open]::details-content,.disclosure[open]::details-content{block-size:auto}.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.breadcrumb a{color:var(--text-muted);text-decoration:none}.breadcrumb a:hover{color:var(--brand)}.breadcrumb li+li:before{content:"/";color:var(--text-faint);margin-inline-end:var(--space-2)}.breadcrumb li{display:flex;align-items:center}.breadcrumb [aria-current]{color:var(--text);font-weight:560}.pagination{display:flex;gap:var(--space-1);align-items:center;flex-wrap:wrap}.pagination>*{min-inline-size:var(--control-h-sm);min-block-size:var(--control-h-sm);padding-inline:var(--space-2);display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-xs);color:var(--text-muted);font-size:var(--text-sm);font-variant-numeric:tabular-nums;text-decoration:none}.pagination>a:hover{background:var(--surface-hover);color:var(--text)}.pagination>[aria-current=page]{background:var(--brand-600);color:var(--text-on-brand);font-weight:600}.progress{inline-size:100%;block-size:8px;border-radius:var(--r-full);background:var(--ink-200);overflow:hidden;appearance:none;border:0}.progress::-webkit-progress-bar{background:var(--ink-200)}.progress::-webkit-progress-value{background:var(--brand-600);border-radius:var(--r-full);transition:inline-size var(--dur-3) var(--ease-out)}.progress::-moz-progress-bar{background:var(--brand-600);border-radius:var(--r-full)}.ring{--value: 0;--thickness: 6px;--size: 56px;inline-size:var(--size);block-size:var(--size);display:grid;place-items:center;border-radius:var(--r-full);font-size:var(--text-xs);font-weight:620;font-variant-numeric:tabular-nums;background:conic-gradient(var(--brand-600) calc(var(--value) * 1%),var(--ink-200) 0);mask:radial-gradient(farthest-side,transparent calc(100% - var(--thickness)),#000 calc(100% - var(--thickness) + 1px));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - var(--thickness)),#000 calc(100% - var(--thickness) + 1px))}.ring-wrap{position:relative;display:inline-grid;place-items:center}.ring-wrap>.ring-label{position:absolute;font-size:var(--text-xs);font-weight:620;font-variant-numeric:tabular-nums}.spinner{inline-size:20px;block-size:20px;border:2px solid var(--ink-200);border-block-start-color:var(--brand-600);border-radius:var(--r-full);animation:dk-spin .62s linear infinite}.spinner-lg{inline-size:34px;block-size:34px;border-width:3px}.skeleton{background:linear-gradient(100deg,var(--ink-100) 30%,var(--ink-200) 48%,var(--ink-100) 66%);background-size:300% 100%;animation:dk-shimmer 1.4s var(--ease-in-out) infinite;border-radius:var(--r-xs);block-size:1em;color:transparent;-webkit-user-select:none;user-select:none}.skeleton-text{block-size:.8em;margin-block:.35em}.skeleton-circle{border-radius:var(--r-full)}@keyframes dk-shimmer{to{background-position:-300% 0}}.tooltip{position:relative}.tooltip:after{content:attr(data-tip);position:absolute;inset-block-end:calc(100% + 8px);inset-inline-start:50%;translate:-50% 4px;background:var(--ink-900);color:var(--ink-50);font-size:var(--text-xs);font-weight:500;line-height:1.4;padding:var(--space-2) var(--space-3);border-radius:var(--r-xs);inline-size:max-content;max-inline-size:16rem;box-shadow:var(--shadow-3);opacity:0;pointer-events:none;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out);z-index:var(--z-toast)}.tooltip:is(:hover,:focus-visible):after{opacity:1;translate:-50% 0}@media(pointer:coarse){.tooltip:after{display:none}}.menu{position:absolute;margin:0;padding:var(--space-1);inline-size:max-content;min-inline-size:12rem;max-inline-size:min(20rem,calc(100vw - var(--space-8)));background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);inset:auto;opacity:0;translate:0 -6px;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.menu:popover-open{opacity:1;translate:0}@starting-style{.menu:popover-open{opacity:0;translate:0 -6px}}.menu::backdrop{background:transparent}.menu-item{display:flex;align-items:center;gap:var(--space-3);inline-size:100%;min-block-size:40px;padding:var(--space-2) var(--space-3);border-radius:var(--r-xs);color:var(--text);font-size:var(--text-sm);text-align:start;text-decoration:none;cursor:pointer;transition:background-color var(--dur-1) var(--ease-out)}.menu-item:hover,.menu-item:focus-visible{background:var(--surface-hover)}.menu-item-danger{color:var(--bad-700)}.menu-item-danger:hover{background:var(--bad-100)}.menu-item .push{margin-inline-start:auto;color:var(--text-faint)}.menu-sep{block-size:1px;background:var(--line);margin:var(--space-1) 0}.menu-label{padding:var(--space-2) var(--space-3) var(--space-1);font-size:var(--text-xs);font-weight:620;color:var(--text-faint)}.modal{inline-size:min(34rem,calc(100vw - var(--space-8)));max-block-size:min(85dvh,48rem);padding:0;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow-4);overflow:clip;opacity:0;scale:.97;translate:0 8px;transition:opacity var(--dur-2) var(--ease-out),scale var(--dur-2) var(--ease-spring),translate var(--dur-2) var(--ease-spring),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.modal[open]{opacity:1;scale:1;translate:0}@starting-style{.modal[open]{opacity:0;scale:.97;translate:0 8px}}.modal::backdrop{background:oklch(18% .02 var(--hue-neutral) / .48);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);opacity:0;transition:opacity var(--dur-2) var(--ease-out),display var(--dur-2) allow-discrete,overlay var(--dur-2) allow-discrete}.modal[open]::backdrop{opacity:1}@starting-style{.modal[open]::backdrop{opacity:0}}.modal-header{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-5);border-block-end:1px solid var(--line)}.modal-title{font-size:var(--text-lg);font-weight:640;letter-spacing:-.018em}.modal-body{padding:var(--space-5);overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-4)}.modal-footer{display:flex;gap:var(--space-3);justify-content:flex-end;padding:var(--space-4) var(--space-5);border-block-start:1px solid var(--line);background:var(--surface-2);flex-wrap:wrap}@media(max-width:32rem){.modal-footer{flex-direction:column-reverse}.modal-footer>.btn{inline-size:100%}}.empty{display:grid;place-items:center;gap:var(--space-3);padding:var(--space-12) var(--space-5);text-align:center;color:var(--text-muted)}.empty-art{inline-size:56px;block-size:56px;display:grid;place-items:center;border-radius:var(--r-full);background:var(--brand-soft);color:var(--brand);font-size:26px}.empty-title{font-size:var(--text-md);font-weight:620;color:var(--text)}.empty p{max-inline-size:34ch}.stat{display:flex;flex-direction:column;gap:var(--space-1)}.stat-value{font-size:var(--text-2xl);font-weight:660;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1.05}.stat-label{font-size:var(--text-sm);color:var(--text-muted)}.stat-delta{display:inline-flex;align-items:center;gap:var(--space-1);font-size:var(--text-sm);font-weight:560}.stat-delta-up{color:var(--good-700)}.stat-delta-down{color:var(--bad-700)}.timeline{display:flex;flex-direction:column}.timeline-item{display:grid;grid-template-columns:22px 1fr;gap:var(--space-3);padding-block-end:var(--space-5);position:relative}.timeline-item:not(:last-child):before{content:"";position:absolute;inset-block:22px 0;inset-inline-start:10px;inline-size:2px;background:var(--line)}.timeline-dot{inline-size:22px;block-size:22px;border-radius:var(--r-full);background:var(--surface);border:2px solid var(--line-strong);display:grid;place-items:center;z-index:1}.timeline-item.is-done .timeline-dot{background:var(--brand-600);border-color:var(--brand-600);color:var(--text-on-brand)}.navbar{display:flex;align-items:center;gap:var(--space-4);min-block-size:var(--control-h-lg);padding-block:var(--space-2);border-block-end:1px solid var(--line)}.navbar-brand{display:inline-flex;align-items:center;gap:var(--space-2);font-weight:680;font-size:var(--text-md);letter-spacing:-.024em;color:var(--text);text-decoration:none}.navbar-links{display:none;gap:var(--space-1);align-items:center}@media(min-width:48rem){.navbar-links{display:flex}}.nav-link{padding:var(--space-2) var(--space-3);border-radius:var(--r-sm);color:var(--text-muted);font-size:var(--text-sm);font-weight:540;text-decoration:none;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.nav-link:hover{background:var(--surface-hover);color:var(--text)}.nav-link[aria-current]{color:var(--brand);background:var(--brand-soft)}.sidebar{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3)}.sidebar-group{font-size:var(--text-xs);font-weight:620;color:var(--text-faint);padding:var(--space-3) var(--space-3) var(--space-1)}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);min-block-size:40px;padding:var(--space-2) var(--space-3);border-radius:var(--r-sm);color:var(--text-muted);font-size:var(--text-sm);font-weight:540;text-decoration:none;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.sidebar-link:hover{background:var(--surface-hover);color:var(--text)}.sidebar-link[aria-current]{background:var(--brand-soft);color:var(--brand-soft-text);font-weight:600}.sidebar-link .push{margin-inline-start:auto}}@layer deck.mobile{.sheet{inline-size:100%;max-inline-size:100%;max-block-size:88dvh;margin:0;margin-block-start:auto;padding:0;border:0;border-start-start-radius:var(--r-lg);border-start-end-radius:var(--r-lg);background:var(--surface);color:var(--text);box-shadow:var(--shadow-4);overflow:clip;translate:0 100%;transition:translate var(--dur-3) var(--ease-out),display var(--dur-3) allow-discrete,overlay var(--dur-3) allow-discrete}.sheet[open]{translate:0}@starting-style{.sheet[open]{translate:0 100%}}.sheet::backdrop{background:oklch(18% .02 var(--hue-neutral) / .5);opacity:0;transition:opacity var(--dur-3) var(--ease-out),display var(--dur-3) allow-discrete,overlay var(--dur-3) allow-discrete}.sheet[open]::backdrop{opacity:1}@starting-style{.sheet[open]::backdrop{opacity:0}}.sheet-grip{inline-size:38px;block-size:4px;border-radius:var(--r-full);background:var(--ink-300);margin:var(--space-3) auto var(--space-1)}.sheet-header{padding:var(--space-3) var(--space-5);display:flex;align-items:center;gap:var(--space-3)}.sheet-title{font-size:var(--text-md);font-weight:640}.sheet-body{padding:var(--space-2) var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom));overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:var(--space-4)}@media(min-width:40rem){.sheet{inline-size:min(30rem,calc(100vw - var(--space-8)));margin:auto;border-radius:var(--r-lg);translate:0;opacity:0;scale:.97;transition:opacity var(--dur-2) var(--ease-out),scale var(--dur-2) var(--ease-spring),display var(--dur-2) allow-discrete,overlay var(--dur-2) allow-discrete}.sheet[open]{opacity:1;scale:1}@starting-style{.sheet[open]{opacity:0;scale:.97}}}.tabbar{position:fixed;inset-inline:0;inset-block-end:0;z-index:var(--z-nav);display:flex;background:color-mix(in oklab,var(--surface) 88%,transparent);backdrop-filter:saturate(1.8) blur(16px);-webkit-backdrop-filter:saturate(1.8) blur(16px);border-block-start:1px solid var(--line);padding-block-end:env(safe-area-inset-bottom)}@media(min-width:48rem){.tabbar{display:none}}.tabbar-item{flex:1 1 0;min-block-size:var(--tap);padding-block:var(--space-2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--text-faint);font-size:var(--text-2xs);font-weight:560;text-decoration:none;-webkit-tap-highlight-color:transparent;transition:color var(--dur-1) var(--ease-out)}.tabbar-item[aria-current]{color:var(--brand)}.tabbar-item[aria-current] .icon{scale:1.06}.tabbar-item .icon{transition:scale var(--dur-2) var(--ease-spring)}body:has(.tabbar){padding-block-end:calc(var(--tap) + var(--space-4) + env(safe-area-inset-bottom))}@media(min-width:48rem){body:has(.tabbar){padding-block-end:0}}.safe-top{padding-block-start:env(safe-area-inset-top)}.safe-bottom{padding-block-end:env(safe-area-inset-bottom)}.safe-x{padding-inline:max(var(--space-gutter),env(safe-area-inset-left)) max(var(--space-gutter),env(safe-area-inset-right))}.icon{inline-size:1.25em;block-size:1.25em;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.22em}.icon-sm{inline-size:1em;block-size:1em}.icon-lg{inline-size:1.6em;block-size:1.6em;stroke-width:1.6}.icon-xl{inline-size:2.25em;block-size:2.25em;stroke-width:1.4}.icon-fill{fill:currentColor;stroke:none}.icon-muted{color:var(--text-faint)}.icon-spin{animation:dk-spin 1.1s linear infinite}.icon-tile{inline-size:40px;block-size:40px;border-radius:var(--r-sm);display:grid;place-items:center;background:var(--brand-soft);color:var(--brand);flex:0 0 auto}.icon-tile-good{background:var(--good-100);color:var(--good-700)}.icon-tile-warn{background:var(--warn-100);color:var(--warn-700)}.icon-tile-bad{background:var(--bad-100);color:var(--bad-700)}.icon-tile-lg{inline-size:52px;block-size:52px;border-radius:var(--r-md)}.emoji{font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",Twemoji Mozilla,"Android Emoji",sans-serif;font-size:1.05em;line-height:1;font-style:normal;font-weight:400;vertical-align:-.12em;display:inline-block;text-rendering:auto;-webkit-font-smoothing:auto}.emoji-lg{font-size:1.6em;vertical-align:-.2em}.emoji-xl{font-size:2.5em;vertical-align:-.24em}.emoji-hero{font-size:3.5rem;line-height:1}.emoji-tile{inline-size:40px;block-size:40px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);display:grid;place-items:center;font-size:20px;flex:0 0 auto}.emoji-tile-round{border-radius:var(--r-full)}.emoji-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:2px}.emoji-grid>button{aspect-ratio:1;border-radius:var(--r-xs);font-size:21px;line-height:1;cursor:pointer;transition:background-color var(--dur-1) var(--ease-out),scale var(--dur-1) var(--ease-spring)}.emoji-grid>button:hover{background:var(--surface-hover);scale:1.16}.reaction{display:inline-flex;align-items:center;gap:var(--space-1);min-block-size:28px;padding-inline:var(--space-2);border-radius:var(--r-full);border:1px solid var(--line);background:var(--surface);font-size:var(--text-xs);font-variant-numeric:tabular-nums;color:var(--text-muted);cursor:pointer}.reaction[aria-pressed=true]{background:var(--brand-soft);border-color:var(--brand-300);color:var(--brand-soft-text)}}@layer deck.utilities{.hidden{display:none}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.contents{display:contents}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.wrap{flex-wrap:wrap}.nowrap{flex-wrap:nowrap;white-space:nowrap}.items-start{align-items:flex-start}.items-center{align-items:center}.items-end{align-items:flex-end}.items-stretch{align-items:stretch}.items-baseline{align-items:baseline}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-between{justify-content:space-between}.place-center{place-items:center}.grow{flex:1 1 auto;min-inline-size:0}.shrink-0{flex:0 0 auto}.push{margin-inline-start:auto}.gap-0{gap:0}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.p-0{padding:0}.p-1{padding:var(--space-1)}.p-2{padding:var(--space-2)}.p-3{padding:var(--space-3)}.p-4{padding:var(--space-4)}.p-6{padding:var(--space-6)}.p-8{padding:var(--space-8)}.px-0{padding-inline:0}.px-1{padding-inline:var(--space-1)}.px-2{padding-inline:var(--space-2)}.px-3{padding-inline:var(--space-3)}.px-4{padding-inline:var(--space-4)}.px-6{padding-inline:var(--space-6)}.px-8{padding-inline:var(--space-8)}.py-0{padding-block:0}.py-1{padding-block:var(--space-1)}.py-2{padding-block:var(--space-2)}.py-3{padding-block:var(--space-3)}.py-4{padding-block:var(--space-4)}.py-6{padding-block:var(--space-6)}.py-8{padding-block:var(--space-8)}.m-0{margin:0}.mt-0{margin-block-start:0}.mt-1{margin-block-start:var(--space-1)}.mt-2{margin-block-start:var(--space-2)}.mt-3{margin-block-start:var(--space-3)}.mt-4{margin-block-start:var(--space-4)}.mt-6{margin-block-start:var(--space-6)}.mt-8{margin-block-start:var(--space-8)}.mb-0{margin-block-end:0}.mb-1{margin-block-end:var(--space-1)}.mb-2{margin-block-end:var(--space-2)}.mb-3{margin-block-end:var(--space-3)}.mb-4{margin-block-end:var(--space-4)}.mb-6{margin-block-end:var(--space-6)}.mb-8{margin-block-end:var(--space-8)}.mx-auto{margin-inline:auto}.w-full{inline-size:100%}.w-auto{inline-size:auto}.h-full{block-size:100%}.min-h-screen{min-block-size:100dvh}.max-w-prose{max-inline-size:var(--measure)}.max-w-sm{max-inline-size:24rem}.max-w-md{max-inline-size:34rem}.max-w-lg{max-inline-size:48rem}.square{aspect-ratio:1}.text-2xs{font-size:var(--text-2xs)}.text-xs{font-size:var(--text-xs)}.text-sm{font-size:var(--text-sm)}.text-base{font-size:var(--text-base)}.text-md{font-size:var(--text-md)}.text-lg{font-size:var(--text-lg)}.text-xl{font-size:var(--text-xl)}.text-2xl{font-size:var(--text-2xl)}.fw-normal{font-weight:400}.fw-medium{font-weight:540}.fw-semi{font-weight:620}.fw-bold{font-weight:700}.text-start{text-align:start}.text-center{text-align:center}.text-end{text-align:end}.text-muted{color:var(--text-muted)}.text-faint{color:var(--text-faint)}.text-brand{color:var(--brand)}.text-good{color:var(--good-700)}.text-warn{color:var(--warn-700)}.text-bad{color:var(--bad-700)}.text-inherit{color:inherit}.nums{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.uppercase{text-transform:uppercase;letter-spacing:.04em}.capitalize{text-transform:capitalize}.no-underline{text-decoration:none}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-inline-size:0}.clamp-2,.clamp-3{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}.clamp-2{-webkit-line-clamp:2;line-clamp:2}.clamp-3{-webkit-line-clamp:3;line-clamp:3}.bg-surface{background:var(--surface)}.bg-sunken{background:var(--bg-sunken)}.bg-brand{background:var(--brand-600);color:var(--text-on-brand)}.bg-soft{background:var(--brand-soft);color:var(--brand-soft-text)}.bg-none{background:none}.border{border:1px solid var(--line)}.border-t{border-block-start:1px solid var(--line)}.border-b{border-block-end:1px solid var(--line)}.border-brand{border-color:var(--brand-400)}.border-0{border:0}.r-xs{border-radius:var(--r-xs)}.r-sm{border-radius:var(--r-sm)}.r-md{border-radius:var(--r-md)}.r-lg{border-radius:var(--r-lg)}.r-full{border-radius:var(--r-full)}.shadow-0{box-shadow:none}.shadow-1{box-shadow:var(--shadow-1)}.shadow-2{box-shadow:var(--shadow-2)}.shadow-3{box-shadow:var(--shadow-3)}.shadow-4{box-shadow:var(--shadow-4)}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.sticky{position:sticky}.inset-0{inset:0}.z-1{z-index:1}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-clip{overflow:clip}.opacity-60{opacity:.6}.pointer-none{pointer-events:none}.no-select{-webkit-user-select:none;user-select:none}.cursor-pointer{cursor:pointer}.sr-only{position:absolute;inline-size:1px;block-size:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;inset-block-start:-100%;inset-inline-start:var(--space-4);z-index:var(--z-toast);background:var(--brand-600);color:var(--text-on-brand);padding:var(--space-3) var(--space-4);border-radius:var(--r-sm)}.skip-link:focus{inset-block-start:var(--space-4)}@media(min-width:40rem){.sm\:hidden{display:none}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:row{flex-direction:row}.sm\:w-auto{inline-size:auto}.sm\:text-start{text-align:start}}@media(min-width:48rem){.md\:hidden{display:none}.md\:block{display:block}.md\:flex{display:flex}.md\:grid-d{display:grid}.md\:row{flex-direction:row}.md\:col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:w-auto{inline-size:auto}.md\:text-center{text-align:center}.md\:p-8{padding:var(--space-8)}.md\:gap-6{gap:var(--space-6)}}@media(min-width:64rem){.lg\:hidden{display:none}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid-d{display:grid}.lg\:row{flex-direction:row}.lg\:gap-8{gap:var(--space-8)}}@media(pointer:fine){.touch-only{display:none}}@media(pointer:coarse){.mouse-only{display:none}}@media print{.no-print{display:none!important}}}@layer deck.components{.datefield{position:relative;display:flex;align-items:center}.datefield>.icon{position:absolute;inset-inline-start:var(--space-3);color:var(--text-faint);pointer-events:none}.datefield>.input{padding-inline-start:var(--space-10);cursor:pointer}.datefield>.datefield-clear{position:absolute;inset-inline-end:var(--space-2);inline-size:28px;block-size:28px;display:grid;place-items:center;border-radius:var(--r-full);color:var(--text-faint);cursor:pointer}.datefield>.datefield-clear:hover{background:var(--surface-hover);color:var(--text)}.datefield:not(.has-value) .datefield-clear{display:none}.datepicker{position:absolute;margin:0;inset:auto;padding:0;inline-size:max-content;max-inline-size:calc(100vw - var(--space-6));background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);color:var(--text);opacity:0;translate:0 -6px;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.datepicker:popover-open{opacity:1;translate:0}@starting-style{.datepicker:popover-open{opacity:0;translate:0 -6px}}.datepicker::backdrop{background:transparent}.datepicker-layout{display:flex;flex-direction:column}@media(min-width:40rem){.datepicker-layout:has(.datepicker-presets){flex-direction:row}}.datepicker-presets{display:flex;gap:var(--space-1);padding:var(--space-2);overflow-x:auto;scrollbar-width:none;border-block-end:1px solid var(--line)}.datepicker-presets::-webkit-scrollbar{display:none}@media(min-width:40rem){.datepicker-presets{flex-direction:column;inline-size:10.5rem;overflow-x:visible;border-block-end:0;border-inline-end:1px solid var(--line);background:var(--surface-2)}}.datepicker-preset{padding:var(--space-2) var(--space-3);min-block-size:36px;border-radius:var(--r-xs);font-size:var(--text-sm);font-weight:520;color:var(--text-muted);text-align:start;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.datepicker-preset:hover{background:var(--surface-hover);color:var(--text)}.datepicker-preset[aria-pressed=true]{background:var(--brand-soft);color:var(--brand-soft-text);font-weight:600}.datepicker-main{padding:var(--space-3)}.datepicker-head{display:flex;align-items:center;gap:var(--space-1);padding-block-end:var(--space-2)}.datepicker-title{flex:1 1 auto;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-block-size:36px;padding-inline:var(--space-3);border-radius:var(--r-sm);font-weight:620;font-size:var(--text-sm);cursor:pointer;letter-spacing:-.01em}.datepicker-title:hover{background:var(--surface-hover)}.datepicker-nav{inline-size:36px;block-size:36px;display:grid;place-items:center;border-radius:var(--r-sm);color:var(--text-muted);cursor:pointer}.datepicker-nav:hover{background:var(--surface-hover);color:var(--text)}.datepicker-nav[disabled]{opacity:.35;pointer-events:none}.datepicker-months{display:flex;gap:var(--space-5)}.datepicker-month{display:flex;flex-direction:column}.datepicker-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.datepicker-dow{text-align:center;font-size:var(--text-2xs);font-weight:620;color:var(--text-faint);padding-block:var(--space-2)}.datepicker-day{position:relative;inline-size:38px;block-size:38px;display:grid;place-items:center;border-radius:var(--r-sm);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}@media(pointer:coarse){.datepicker-day{inline-size:42px;block-size:42px}}.datepicker-day:hover{background:var(--surface-hover)}.datepicker-day.is-outside{color:var(--text-faint);opacity:.55}.datepicker-day[disabled],.datepicker-day.is-blocked{color:var(--text-faint);opacity:.4;pointer-events:none;text-decoration:line-through}.datepicker-day.is-today:after{content:"";position:absolute;inset-block-end:5px;inline-size:4px;block-size:4px;border-radius:var(--r-full);background:var(--brand)}.datepicker-day.is-selected{background:var(--brand-600);color:var(--text-on-brand);font-weight:620}.datepicker-day.is-selected:after{background:var(--text-on-brand)}.datepicker-day.is-in-range{background:var(--brand-soft);color:var(--brand-soft-text);border-radius:0}.datepicker-day.is-range-start{border-start-end-radius:0;border-end-end-radius:0}.datepicker-day.is-range-end{border-start-start-radius:0;border-end-start-radius:0}.datepicker-day.is-range-start.is-range-end{border-radius:var(--r-sm)}.datepicker-grid:has(.is-in-range) .datepicker-day.is-in-range:first-child{border-start-start-radius:var(--r-sm);border-end-start-radius:var(--r-sm)}.datepicker-grid:has(.is-in-range) .datepicker-day.is-in-range:nth-child(7n){border-start-end-radius:var(--r-sm);border-end-end-radius:var(--r-sm)}.datepicker-day.is-preview{background:color-mix(in oklab,var(--brand-soft) 60%,transparent)}.datepicker-day:focus-visible{outline:2px solid var(--focus);outline-offset:-2px;z-index:1}.datepicker-jump{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-1);padding-block:var(--space-2)}.datepicker-jump>button{min-block-size:40px;padding-inline:var(--space-2);border-radius:var(--r-sm);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text-muted);cursor:pointer}.datepicker-jump>button:hover{background:var(--surface-hover);color:var(--text)}.datepicker-jump>button[aria-selected=true]{background:var(--brand-600);color:var(--text-on-brand);font-weight:620}.datepicker-time{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);border-block-start:1px solid var(--line)}.datepicker-time .input{inline-size:auto;min-inline-size:7.5rem}.datepicker-foot{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);border-block-start:1px solid var(--line);background:var(--surface-2)}.datepicker-readout{flex:1 1 auto;font-size:var(--text-sm);color:var(--text-muted);font-variant-numeric:tabular-nums;min-inline-size:0}@media(max-width:30rem){.datepicker{position:fixed;inset:auto 0 0;inline-size:100%;max-inline-size:100%;border-radius:var(--r-lg) var(--r-lg) 0 0;border-inline:0;border-block-end:0;translate:0 100%;padding-block-end:env(safe-area-inset-bottom);transition:translate var(--dur-3) var(--ease-out),overlay var(--dur-3) allow-discrete,display var(--dur-3) allow-discrete;opacity:1}.datepicker:popover-open{translate:0}@starting-style{.datepicker:popover-open{translate:0 100%}}.datepicker::backdrop{background:oklch(18% .02 var(--hue-neutral) / .45)}.datepicker-months{flex-direction:column}.datepicker-day{inline-size:100%}.datepicker-main{padding-inline:var(--space-4)}}}@layer deck.components{.combo{position:relative;display:flex;flex-direction:column}.combo-control{display:flex;align-items:center;gap:var(--space-2);inline-size:100%;min-block-size:var(--control-h);padding:var(--space-1) var(--space-2) var(--space-1) var(--space-3);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r-sm);box-shadow:var(--shadow-1);cursor:text;transition:border-color var(--dur-1) var(--ease-out),box-shadow var(--dur-1) var(--ease-out)}.combo-control:hover{border-color:var(--ink-400)}.combo:has(.combo-input:focus) .combo-control,.combo-control:focus-within{border-color:var(--focus);box-shadow:var(--ring)}.combo.is-invalid .combo-control{border-color:var(--bad-500)}.combo.is-disabled .combo-control{background:var(--bg-sunken);color:var(--text-faint);pointer-events:none}.combo-input{flex:1 1 6rem;min-inline-size:4rem;border:0;outline:none;background:none;padding:var(--space-2) 0;font-size:var(--text-base);color:inherit}@media(pointer:coarse){.combo-input{font-size:16px}}.combo-input::placeholder{color:var(--text-faint)}.combo-toggle{inline-size:30px;block-size:30px;display:grid;place-items:center;border-radius:var(--r-xs);color:var(--text-faint);cursor:pointer;flex:0 0 auto}.combo-toggle:hover{background:var(--surface-hover);color:var(--text)}.combo-toggle .icon{transition:rotate var(--dur-2) var(--ease-out)}.combo.is-open .combo-toggle .icon{rotate:180deg}.combo-clear{color:var(--text-faint)}.combo-tokens{display:contents}.combo-token{display:inline-flex;align-items:center;gap:var(--space-1);min-block-size:26px;padding-inline:var(--space-1) var(--space-2);padding-inline-start:var(--space-2);border-radius:var(--r-xs);background:var(--brand-soft);color:var(--brand-soft-text);font-size:var(--text-sm);font-weight:540;max-inline-size:14rem;flex:0 0 auto}.combo-token>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combo-token>button{display:grid;place-items:center;inline-size:18px;block-size:18px;border-radius:var(--r-full);opacity:.65;cursor:pointer;flex:0 0 auto}.combo-token>button:hover{opacity:1;background:color-mix(in oklab,currentColor 16%,transparent)}.combo-count{font-size:var(--text-xs);font-weight:620;color:var(--text-muted);flex:0 0 auto}.combo-list{position:absolute;inset-block-start:calc(100% + 4px);inset-inline:0;z-index:var(--z-modal);margin:0;padding:var(--space-1);max-block-size:min(20rem,50dvh);overflow-y:auto;overscroll-behavior:contain;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);display:none}.combo.is-open .combo-list{display:block;animation:dk-combo-in var(--dur-2) var(--ease-out)}@keyframes dk-combo-in{0%{opacity:0;translate:0 -4px}}.combo-list.is-above{inset-block:auto calc(100% + 4px)}.combo-option{display:flex;align-items:center;gap:var(--space-3);inline-size:100%;min-block-size:40px;padding:var(--space-2) var(--space-3);border-radius:var(--r-xs);font-size:var(--text-sm);color:var(--text);text-align:start;cursor:pointer;scroll-margin-block:var(--space-1)}.combo-option .combo-option-main{flex:1 1 auto;min-inline-size:0;display:flex;flex-direction:column;gap:1px}.combo-option .combo-option-sub{font-size:var(--text-xs);color:var(--text-muted)}.combo-option .combo-option-trail{color:var(--text-faint);font-size:var(--text-xs);flex:0 0 auto}.combo-option.is-active{background:var(--surface-hover)}.combo-option[aria-selected=true]{background:var(--brand-soft);color:var(--brand-soft-text);font-weight:560}.combo-option[aria-selected=true].is-active{background:color-mix(in oklab,var(--brand-soft) 78%,var(--brand-300))}.combo-option[aria-disabled=true]{opacity:.45;pointer-events:none}.combo-option .combo-check{margin-inline-start:auto;opacity:0;flex:0 0 auto}.combo-option[aria-selected=true] .combo-check{opacity:1}.combo-option mark{background:none;color:inherit;font-weight:700;padding:0;text-decoration:underline;text-decoration-color:color-mix(in oklab,var(--brand) 55%,transparent);text-underline-offset:.16em}.combo-group{padding:var(--space-3) var(--space-3) var(--space-1);font-size:var(--text-2xs);font-weight:700;color:var(--text-faint);position:sticky;inset-block-start:calc(var(--space-1) * -1);background:var(--surface)}.combo-sep{block-size:1px;background:var(--line);margin:var(--space-1) 0}.combo-empty,.combo-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-6) var(--space-4);font-size:var(--text-sm);color:var(--text-muted);text-align:center}.combo-create{position:sticky;inset-block-end:calc(var(--space-1) * -1);background:var(--surface);border-block-start:1px solid var(--line);margin:var(--space-1) calc(var(--space-1) * -1) calc(var(--space-1) * -1);padding:var(--space-1)}.combo-create .combo-option{color:var(--brand);font-weight:560}.combo-hint{display:none;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-block-start:1px solid var(--line);font-size:var(--text-2xs);color:var(--text-faint)}@media(pointer:fine){.combo.is-open .combo-hint{display:flex}}@media(max-width:30rem){.combo.is-open .combo-list{position:fixed;inset:auto 0 0;max-block-size:70dvh;border-radius:var(--r-lg) var(--r-lg) 0 0;border-inline:0;border-block-end:0;padding-block-end:calc(var(--space-2) + env(safe-area-inset-bottom));animation:dk-combo-up var(--dur-3) var(--ease-out)}.combo-option{min-block-size:var(--tap)}@keyframes dk-combo-up{0%{translate:0 100%}}}}@layer deck.components{.dg-wrap{--dg-pin-start: 0px;--dg-pin-end: 0px;--dg-row-h: 44px;position:relative;inline-size:100%;max-block-size:var(--dg-height, 70dvh);overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md)}.dg{inline-size:100%;border-collapse:separate;border-spacing:0;font-size:var(--text-sm);font-variant-numeric:tabular-nums}.dg :is(th,td){padding:0 var(--space-4);block-size:var(--dg-row-h);text-align:start;white-space:nowrap;background:var(--surface);border-block-end:1px solid var(--line)}.dg thead th{position:sticky;inset-block-start:0;z-index:3;background:var(--surface-2);font-size:var(--text-xs);font-weight:620;color:var(--text-muted);border-block-end:1px solid var(--line-strong)}.dg :is(th,td).dg-pin-start{position:sticky;inset-inline-start:0;z-index:2}.dg thead th.dg-pin-start{z-index:4}.dg :is(th,td).dg-pin-start-2{position:sticky;inset-inline-start:var(--dg-pin-start);z-index:2}.dg thead th.dg-pin-start-2{z-index:4}.dg :is(th,td).dg-pin-end{position:sticky;inset-inline-end:0;z-index:2}.dg thead th.dg-pin-end{z-index:4}.dg-wrap{--dg-pin-shadow-start: 6px 0 8px -6px oklch(20% .03 var(--hue-neutral) / .28);--dg-pin-shadow-end: -6px 0 8px -6px oklch(20% .03 var(--hue-neutral) / .28);--dg-pin-clip-start: inset(0 -12px 0 0);--dg-pin-clip-end: inset(0 0 0 -12px)}@supports (container-type: scroll-state){.dg-wrap{container-type:scroll-state}@container scroll-state(scrollable: inline-start){.dg :is(th,td).dg-pin-start:last-of-type,.dg :is(th,td).dg-pin-start-2,.dg :is(th,td).dg-pin-start:not(:has(~.dg-pin-start-2)){box-shadow:var(--dg-pin-shadow-start);clip-path:var(--dg-pin-clip-start)}}@container scroll-state(scrollable: inline-end){.dg :is(th,td).dg-pin-end{box-shadow:var(--dg-pin-shadow-end);clip-path:var(--dg-pin-clip-end)}}}@supports not (container-type: scroll-state){.dg-wrap.is-scrolled-x .dg :is(th,td).dg-pin-start:last-of-type,.dg-wrap.is-scrolled-x .dg :is(th,td).dg-pin-start-2,.dg-wrap.is-scrolled-x .dg :is(th,td).dg-pin-start:not(:has(~.dg-pin-start-2)){box-shadow:var(--dg-pin-shadow-start);clip-path:var(--dg-pin-clip-start)}.dg-wrap.is-scrolled-end .dg :is(th,td).dg-pin-end{box-shadow:var(--dg-pin-shadow-end);clip-path:var(--dg-pin-clip-end)}}.dg tbody tr:hover :is(td){background:var(--surface-hover)}.dg tbody tr:last-child td{border-block-end:0}.dg tbody tr[aria-selected=true] td{background:var(--brand-soft);color:var(--brand-soft-text)}.dg tbody tr[aria-selected=true]:hover td{background:color-mix(in oklab,var(--brand-soft) 80%,var(--brand-200))}.dg-zebra tbody tr:nth-child(2n) td{background:var(--surface-2)}.dg-zebra tbody tr:nth-child(2n):hover td{background:var(--surface-hover)}.dg tbody tr.is-new td{animation:dg-flash 1.4s var(--ease-out)}@keyframes dg-flash{0%{background:var(--good-100)}}.dg .dg-num{text-align:end}.dg .dg-center{text-align:center}.dg .dg-wrap-text{white-space:normal;min-inline-size:16rem}.dg .dg-tight{padding-inline:var(--space-2)}.dg .dg-check{inline-size:44px;padding-inline:0;text-align:center}.dg .dg-check .check{justify-content:center;min-block-size:auto;padding:0}.dg .dg-actions{inline-size:1%;padding-inline:var(--space-2)}.dg-compact{--dg-row-h: 34px;font-size:var(--text-xs)}.dg-compact :is(th,td){padding-inline:var(--space-3)}.dg-comfy{--dg-row-h: 56px}.dg-sort{display:inline-flex;align-items:center;gap:var(--space-2);inline-size:100%;block-size:100%;color:inherit;font:inherit;cursor:pointer;-webkit-user-select:none;user-select:none}.dg-num .dg-sort{justify-content:flex-end}.dg-sort:hover{color:var(--text)}.dg-sort .dg-sort-icon{inline-size:14px;block-size:14px;opacity:0;flex:0 0 auto;transition:opacity var(--dur-1) var(--ease-out),rotate var(--dur-2) var(--ease-out)}.dg-sort:hover .dg-sort-icon{opacity:.4}th[aria-sort] .dg-sort{color:var(--brand)}th[aria-sort] .dg-sort-icon{opacity:1}th[aria-sort=descending] .dg-sort-icon{rotate:180deg}.dg-resize{position:absolute;inset-block:0;inset-inline-end:-3px;inline-size:7px;cursor:col-resize;z-index:1;touch-action:none}.dg-resize:after{content:"";position:absolute;inset-block:8px;inset-inline-start:3px;inline-size:1px;background:var(--line-strong);opacity:0;transition:opacity var(--dur-1) var(--ease-out)}.dg-resize:hover:after,.dg-wrap.is-resizing .dg-resize:after{opacity:1;background:var(--brand)}.dg thead th{position:sticky}.dg thead th:has(.dg-resize){position:sticky}.dg tfoot td{position:sticky;inset-block-end:0;z-index:3;background:var(--surface-2);border-block-start:1px solid var(--line-strong);border-block-end:0;font-weight:640;color:var(--text)}.dg tfoot td.dg-pin-start{z-index:4}.dg-toolbar{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;padding-block-end:var(--space-3)}.dg-toolbar .search{flex:1 1 14rem}.dg-statusbar{display:flex;align-items:center;gap:var(--space-3);flex-wrap:wrap;padding-block-start:var(--space-3);font-size:var(--text-sm);color:var(--text-muted)}.dg-selection{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--r-sm);background:var(--brand-soft);color:var(--brand-soft-text);font-size:var(--text-sm);font-weight:560;animation:dk-combo-in var(--dur-2) var(--ease-out)}.dg-wrap.is-loading{pointer-events:none}.dg-wrap.is-loading .dg tbody{opacity:.45}.dg-wrap.is-loading:after{content:"";position:absolute;inset-block-start:0;inset-inline:0;block-size:2px;background:linear-gradient(90deg,transparent,var(--brand-500),transparent);background-size:40% 100%;background-repeat:no-repeat;animation:dg-bar 1.1s var(--ease-in-out) infinite;z-index:5}@keyframes dg-bar{0%{background-position:-40% 0}to{background-position:140% 0}}.dg-empty td{block-size:auto;padding:0}@media(max-width:44rem){.dg-cards-wrap{max-block-size:none;overflow:visible;border:0;background:none}.dg-cards thead,.dg-cards tfoot{display:none}.dg-cards,.dg-cards tbody,.dg-cards tr,.dg-cards td{display:block;inline-size:100%}.dg-cards tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);margin-block-end:var(--space-3);overflow:hidden}.dg-cards td{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);block-size:auto;min-block-size:var(--tap);padding:var(--space-2) var(--space-4);white-space:normal;text-align:end;position:static!important;box-shadow:none!important;clip-path:none!important}.dg-cards td:before{content:attr(data-label);font-size:var(--text-xs);font-weight:620;color:var(--text-muted);text-align:start;flex:0 0 auto}.dg-cards td:empty{display:none}.dg-cards td.dg-num{text-align:end}}}@layer deck.components{.toast-region{position:fixed;z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-2);inline-size:min(23rem,calc(100vw - var(--space-6)));pointer-events:none;inset-block-end:calc(var(--space-4) + env(safe-area-inset-bottom));inset-inline-end:var(--space-4)}body:has(.tabbar) .toast-region{inset-block-end:calc(var(--space-4) + var(--tap) + env(safe-area-inset-bottom))}@media(min-width:48rem){body:has(.tabbar) .toast-region{inset-block-end:calc(var(--space-4) + env(safe-area-inset-bottom))}}.toast-region-start{inset-inline:var(--space-4) auto}.toast-region-center{inset-inline:0;margin-inline:auto}.toast-region-top{inset-block:calc(var(--space-4) + env(safe-area-inset-top)) auto;flex-direction:column-reverse}@media(max-width:30rem){.toast-region{inset-inline:var(--space-3);inline-size:auto}}.toast{--toast-accent: var(--ink-400);position:relative;display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);font-size:var(--text-sm);pointer-events:auto;overflow:hidden;touch-action:pan-y;transform-origin:bottom center;transition:translate var(--dur-3) var(--ease-out),scale var(--dur-3) var(--ease-out),opacity var(--dur-2) var(--ease-out),margin var(--dur-3) var(--ease-out)}.toast:before{content:"";position:absolute;inset-block:0;inset-inline-start:0;inline-size:3px;background:var(--toast-accent)}.toast-icon{color:var(--toast-accent);margin-block-start:1px;flex:0 0 auto}.toast-main{flex:1 1 auto;min-inline-size:0;display:flex;flex-direction:column;gap:2px}.toast-title{font-weight:620}.toast-text{color:var(--text-muted)}.toast-close{flex:0 0 auto;inline-size:26px;block-size:26px;display:grid;place-items:center;border-radius:var(--r-full);color:var(--text-faint);cursor:pointer;margin-block-start:-2px;margin-inline-end:-4px}.toast-close:hover{background:var(--surface-hover);color:var(--text)}.toast-actions{display:flex;gap:var(--space-2);margin-block-start:var(--space-2)}.toast-action{font-size:var(--text-sm);font-weight:620;color:var(--brand);cursor:pointer;padding:var(--space-1) 0}.toast-action:hover{text-decoration:underline}.toast-good{--toast-accent: var(--good-500)}.toast-warn{--toast-accent: var(--warn-500)}.toast-bad{--toast-accent: var(--bad-500)}.toast-info,.toast-loading{--toast-accent: var(--brand-500)}.toast-timer{position:absolute;inset-block-end:0;inset-inline-start:0;block-size:2px;inline-size:100%;background:var(--toast-accent);opacity:.5;transform-origin:left center;animation:dk-toast-timer linear forwards;animation-duration:var(--toast-duration, 5s)}@keyframes dk-toast-timer{to{scale:0 1}}.toast-region:is(:hover,:focus-within) .toast-timer{animation-play-state:paused}.toast{animation:dk-toast-in var(--dur-3) var(--ease-spring)}@keyframes dk-toast-in{0%{opacity:0;translate:0 16px;scale:.94}}.toast-region-top .toast{animation-name:dk-toast-in-top}@keyframes dk-toast-in-top{0%{opacity:0;translate:0 -16px;scale:.94}}.toast.is-leaving{opacity:0;scale:.94;translate:var(--toast-exit-x, 0) 8px;margin-block-end:calc((var(--toast-h, 60px) + var(--space-2)) * -1);pointer-events:none}@supports (animation-delay: calc(sibling-index()*1ms)){.toast-region-stacked .toast{--i: calc(sibling-index() - 1) }}@supports not (animation-delay: calc(sibling-index()*1ms)){.toast-region-stacked .toast:nth-child(1){--i: 0}.toast-region-stacked .toast:nth-child(2){--i: 1}.toast-region-stacked .toast:nth-child(3){--i: 2}.toast-region-stacked .toast:nth-child(4){--i: 3}.toast-region-stacked .toast:nth-child(5){--i: 4}.toast-region-stacked .toast:nth-child(6){--i: 5}.toast-region-stacked .toast:nth-child(7){--i: 6}.toast-region-stacked .toast:nth-child(8){--i: 7}}.toast-region-stacked .toast{position:absolute;inset-inline:0;inset-block-end:0;translate:0 calc(var(--i) * -8px);scale:calc(1 - var(--i) * .04);opacity:calc(1 - var(--i) * .18);z-index:calc(100 - var(--i))}.toast-region-stacked .toast:nth-child(n+4){opacity:0;pointer-events:none}.toast-region-stacked:is(:hover,:focus-within) .toast{translate:0 calc(var(--i) * (var(--toast-h, 68px) + var(--space-2)) * -1);scale:1;opacity:1}.toast.is-dragging{transition:none;cursor:grabbing;-webkit-user-select:none;user-select:none}.toast-undo{--toast-accent: var(--ink-500)}.toast-undo .toast-action{color:var(--text)}@media(prefers-reduced-motion:reduce){.toast,.toast-region-stacked .toast{animation:none;transition:opacity var(--dur-1) linear}.toast-timer{animation:none;display:none}}}@layer deck.components{.chart{--c1: var(--brand-500);--c2: oklch(64% .13 calc(var(--hue-brand) + 48));--c3: oklch(70% .14 calc(var(--hue-brand) + 96));--c4: oklch(62% .13 calc(var(--hue-brand) - 52));--c5: oklch(74% .12 calc(var(--hue-brand) + 148));--c6: oklch(56% .1 calc(var(--hue-brand) + 200));--chart-h: 240px;--chart-grid: color-mix(in oklab, var(--line) 90%, transparent);display:flex;flex-direction:column;gap:var(--space-3);min-inline-size:0}.chart-sm{--chart-h: 150px}.chart-lg{--chart-h: 340px}.chart-head{display:flex;align-items:baseline;gap:var(--space-3);flex-wrap:wrap}.chart-title{font-size:var(--text-sm);font-weight:620}.chart-note{font-size:var(--text-xs);color:var(--text-muted)}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-3);font-size:var(--text-xs);color:var(--text-muted)}.chart-legend>*{display:inline-flex;align-items:center;gap:var(--space-2)}.chart-legend>*:before{content:"";inline-size:10px;block-size:10px;border-radius:3px;background:var(--series, var(--c1));flex:0 0 auto}.chart-legend [aria-pressed=false]{opacity:.4}.chart-legend button{cursor:pointer}.chart-columns{display:flex;align-items:flex-end;gap:var(--gap, 6px);block-size:var(--chart-h);padding-block-end:22px;position:relative;background:repeating-linear-gradient(to top,var(--chart-grid) 0 1px,transparent 1px calc((100% - 22px)/4));background-position:0 -22px;background-size:100% calc(100% - 22px);background-repeat:no-repeat}.chart-col{flex:1 1 0;min-inline-size:6px;block-size:calc(var(--value) * 1%);background:var(--series, var(--c1));border-radius:var(--r-xs) var(--r-xs) 2px 2px;position:relative;transform-origin:bottom;animation:chart-rise var(--dur-3) var(--ease-out);transition:filter var(--dur-1) var(--ease-out)}.chart-col:hover{filter:brightness(1.08) saturate(1.1)}@supports (color: contrast-color(red)){.chart-col,.chart-col-stack>span,.chart-bar-fill,.chart-meter>span{color:contrast-color(var(--series, var(--c1)))}}.chart-col[data-label]:after{content:attr(data-label);position:absolute;inset-block-start:100%;inset-inline:0;padding-block-start:6px;text-align:center;font-size:var(--text-2xs);color:var(--text-faint);white-space:nowrap}.chart-col[data-value]:before{content:attr(data-value);position:absolute;inset-block-end:calc(100% + 6px);inset-inline-start:50%;translate:-50% 0;padding:3px 7px;background:var(--ink-900);color:var(--ink-50);border-radius:var(--r-xs);font-size:var(--text-2xs);font-weight:620;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity var(--dur-1) var(--ease-out);z-index:2}.chart-col:hover:before{opacity:1}@keyframes chart-rise{0%{scale:1 0}}.chart-col-stack{flex:1 1 0;display:flex;flex-direction:column-reverse;block-size:calc(var(--value) * 1%);border-radius:var(--r-xs) var(--r-xs) 2px 2px;overflow:hidden;position:relative;animation:chart-rise var(--dur-3) var(--ease-out)}.chart-col-stack>span{block-size:calc(var(--part) * 1%);background:var(--series, var(--c1))}.chart-group{flex:1 1 0;display:flex;align-items:flex-end;gap:2px;block-size:100%;position:relative}.chart-group>.chart-col{border-radius:2px 2px 1px 1px}.chart-bars{display:flex;flex-direction:column;gap:var(--space-3)}.chart-bar{display:grid;grid-template-columns:minmax(4.5rem,auto) 1fr auto;align-items:center;gap:var(--space-3);font-size:var(--text-sm)}.chart-bar-label{color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chart-bar-track{block-size:10px;border-radius:var(--r-full);background:var(--bg-sunken);overflow:hidden}.chart-bar-fill{display:block;block-size:100%;inline-size:calc(var(--value) * 1%);border-radius:var(--r-full);background:var(--series, var(--c1));transform-origin:left;animation:chart-grow var(--dur-3) var(--ease-out)}.chart-bar-value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}@keyframes chart-grow{0%{scale:0 1}}.chart-svg{inline-size:100%;block-size:var(--chart-h);overflow:visible}.chart-line{fill:none;stroke:var(--series, var(--c1));stroke-width:var(--stroke, 2);stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;stroke-dasharray:1200;stroke-dashoffset:1200;animation:chart-draw 1s var(--ease-out) forwards}@keyframes chart-draw{to{stroke-dashoffset:0}}.chart-line-dashed{stroke-dasharray:5 4;animation:none;stroke-dashoffset:0;opacity:.6}.chart-area{fill:var(--series, var(--c1));opacity:.14;stroke:none;animation:chart-fade var(--dur-3) var(--ease-out)}@keyframes chart-fade{0%{opacity:0}}.chart-dot{fill:var(--surface);stroke:var(--series, var(--c1));stroke-width:2;vector-effect:non-scaling-stroke}.chart-dot-active{fill:var(--series, var(--c1))}.chart-gridline{stroke:var(--chart-grid);stroke-width:1;vector-effect:non-scaling-stroke}.chart-baseline{stroke:var(--line-strong);stroke-width:1;vector-effect:non-scaling-stroke}.chart-x{display:flex;justify-content:space-between;font-size:var(--text-2xs);color:var(--text-faint);padding-block-start:var(--space-2)}.chart-y{display:flex;flex-direction:column-reverse;justify-content:space-between;font-size:var(--text-2xs);color:var(--text-faint);font-variant-numeric:tabular-nums;text-align:end;padding-inline-end:var(--space-2);min-inline-size:2.5rem}.chart-plot{display:grid;grid-template-columns:auto 1fr}.sparkline{inline-size:var(--spark-w, 88px);block-size:var(--spark-h, 28px);overflow:visible;vertical-align:middle}.sparkline .chart-line{stroke-width:1.75;animation:none;stroke-dashoffset:0}.sparkline-good .chart-line{stroke:var(--good-500)}.sparkline-bad .chart-line{stroke:var(--bad-500)}.donut{--size: 128px;--thickness: 18px;inline-size:var(--size);block-size:var(--size);border-radius:var(--r-full);background:conic-gradient(var(--stops, var(--c1) 0 100%));mask:radial-gradient(farthest-side,transparent calc(100% - var(--thickness)),#000 calc(100% - var(--thickness) + 1px));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - var(--thickness)),#000 calc(100% - var(--thickness) + 1px));animation:dk-spin-in var(--dur-3) var(--ease-out)}@keyframes dk-spin-in{0%{rotate:-40deg;opacity:0}}.donut-wrap{position:relative;display:inline-grid;place-items:center}.donut-center{position:absolute;display:grid;place-items:center;text-align:center;line-height:1.15}.donut-center .donut-value{font-size:var(--text-xl);font-weight:660;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.donut-center .donut-label{font-size:var(--text-2xs);color:var(--text-muted)}.chart-meter{display:flex;block-size:12px;border-radius:var(--r-full);overflow:hidden;background:var(--bg-sunken)}.chart-meter>span{inline-size:calc(var(--value) * 1%);background:var(--series, var(--c1));transition:inline-size var(--dur-3) var(--ease-out)}.chart-meter>span+span{border-inline-start:1px solid var(--surface)}.chart-heat{display:grid;grid-template-columns:repeat(var(--cols, 7),1fr);gap:3px}.chart-heat>*{aspect-ratio:1;border-radius:3px;background:color-mix(in oklab,var(--c1) calc(var(--value) * 1%),var(--bg-sunken))}.chart-heat>*:hover{outline:2px solid var(--brand);outline-offset:1px}.s1{--series: var(--c1)}.s2{--series: var(--c2)}.s3{--series: var(--c3)}.s4{--series: var(--c4)}.s5{--series: var(--c5)}.s6{--series: var(--c6)}.s-good{--series: var(--good-500)}.s-warn{--series: var(--warn-500)}.s-bad{--series: var(--bad-500)}.s-muted{--series: var(--ink-300)}@media(prefers-reduced-motion:reduce){.chart-col,.chart-col-stack,.chart-bar-fill,.chart-line,.chart-area,.donut{animation:none}.chart-line{stroke-dashoffset:0}}}@layer deck.motion{:root{--ease-in: cubic-bezier(.55, 0, 1, .45);--ease-emphasized: cubic-bezier(.2, 0, 0, 1);--ease-decelerate: cubic-bezier(0, 0, .2, 1);--ease-accelerate: cubic-bezier(.4, 0, 1, 1);--ease-bounce: linear(0, .004 2%, .016 4%, .062 8%, .137 12%, .5 24%, .68 28%, .824 32%, .93 36%, .995 40%, 1.02 44%, 1.01 52%, 1 60%);--ease-overshoot: linear(0, .22 8%, .58 16%, .87 24%, 1.06 32%, 1.11 38%, 1.08 46%, 1.02 58%, 1);--ease-snap: linear(0, .48 12%, .82 22%, .97 32%, 1.02 42%, 1);--dur-0: 0ms;--dur-4: .42s;--dur-5: .62s;--dur-slow: .9s;--stagger-step: 45ms;--travel: 12px}.transition{transition:all var(--dur-2) var(--ease-out)}.transition-colors{transition:background-color var(--dur-1) var(--ease-out),border-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out),fill var(--dur-1) var(--ease-out),stroke var(--dur-1) var(--ease-out)}.transition-move{transition:translate var(--dur-2) var(--ease-out),scale var(--dur-2) var(--ease-out),rotate var(--dur-2) var(--ease-out)}.transition-size{transition:inline-size var(--dur-3) var(--ease-out),block-size var(--dur-3) var(--ease-out)}.transition-opacity{transition:opacity var(--dur-2) var(--ease-out)}.dur-1{transition-duration:var(--dur-1);animation-duration:var(--dur-1)}.dur-2{transition-duration:var(--dur-2);animation-duration:var(--dur-2)}.dur-3{transition-duration:var(--dur-3);animation-duration:var(--dur-3)}.dur-4{transition-duration:var(--dur-4);animation-duration:var(--dur-4)}.dur-5{transition-duration:var(--dur-5);animation-duration:var(--dur-5)}.ease-out{transition-timing-function:var(--ease-out);animation-timing-function:var(--ease-out)}.ease-in{transition-timing-function:var(--ease-in);animation-timing-function:var(--ease-in)}.ease-spring{transition-timing-function:var(--ease-spring);animation-timing-function:var(--ease-spring)}.ease-bounce{transition-timing-function:var(--ease-bounce);animation-timing-function:var(--ease-bounce)}.ease-overshoot{transition-timing-function:var(--ease-overshoot);animation-timing-function:var(--ease-overshoot)}.ease-linear{transition-timing-function:linear;animation-timing-function:linear}.delay-1{transition-delay:60ms;animation-delay:60ms}.delay-2{transition-delay:.14s;animation-delay:.14s}.delay-3{transition-delay:.26s;animation-delay:.26s}.no-motion{transition:none!important;animation:none!important}.will-move:is(:hover,:focus-within,.is-animating){will-change:translate,scale,opacity}@media(prefers-reduced-motion:no-preference){.enter{animation:dk-fade var(--dur-3) var(--ease-out) both}.enter-rise{animation:dk-rise var(--dur-3) var(--ease-out) both}.enter-drop{animation:dk-drop var(--dur-3) var(--ease-out) both}.enter-start{animation:dk-in-start var(--dur-3) var(--ease-out) both}.enter-end{animation:dk-in-end var(--dur-3) var(--ease-out) both}.enter-pop{animation:dk-pop var(--dur-3) var(--ease-spring) both}.enter-blur{animation:dk-blur var(--dur-4) var(--ease-out) both}@keyframes dk-fade{0%{opacity:0}}@keyframes dk-rise{0%{opacity:0;translate:0 var(--travel)}}@keyframes dk-drop{0%{opacity:0;translate:0 calc(var(--travel) * -1)}}@keyframes dk-in-start{0%{opacity:0;translate:calc(var(--travel) * -1.6) 0}}@keyframes dk-in-end{0%{opacity:0;translate:calc(var(--travel) * 1.6) 0}}@keyframes dk-pop{0%{opacity:0;scale:.92}}@keyframes dk-blur{0%{opacity:0;filter:blur(8px);scale:1.01}}@supports (animation-delay: calc(sibling-index()*1ms)){.stagger>*{animation-delay:calc((sibling-index() - 1) * var(--stagger-step))}}@supports not (animation-delay: calc(sibling-index()*1ms)){.stagger>*{animation-delay:calc(var(--n, 0) * var(--stagger-step))}.stagger>:nth-child(1){--n: 0}.stagger>:nth-child(2){--n: 1}.stagger>:nth-child(3){--n: 2}.stagger>:nth-child(4){--n: 3}.stagger>:nth-child(5){--n: 4}.stagger>:nth-child(6){--n: 5}.stagger>:nth-child(7){--n: 6}.stagger>:nth-child(8){--n: 7}.stagger>:nth-child(9){--n: 8}.stagger>:nth-child(10){--n: 9}.stagger>:nth-child(11){--n: 10}.stagger>:nth-child(12){--n: 11}.stagger>:nth-child(n+13){--n: 11}}.stagger-fast{--stagger-step: 28ms}.stagger-slow{--stagger-step: 80ms}@supports (animation-timeline: view()){.reveal{animation:dk-rise linear both;animation-timeline:view();animation-range:entry 8% cover 26%}.reveal-fade{animation-name:dk-fade}.reveal-pop{animation-name:dk-pop}.reveal-late{animation-range:entry 20% cover 42%}.scroll-progress{position:fixed;inset-block-start:0;inset-inline:0;block-size:3px;background:var(--brand-500);transform-origin:left center;z-index:var(--z-toast);animation:dk-scale-x linear both;animation-timeline:scroll(root block)}@keyframes dk-scale-x{0%{scale:0 1}to{scale:1 1}}.shrink-on-scroll{animation:dk-shrink linear both;animation-timeline:scroll(root block);animation-range:0 120px}@keyframes dk-shrink{to{--control-h-lg: 42px;box-shadow:var(--shadow-2)}}}@supports not (animation-timeline: view()){.reveal,.reveal-fade,.reveal-pop{opacity:0}.reveal.is-revealed{animation:dk-rise var(--dur-4) var(--ease-out) both}.reveal-fade.is-revealed{animation:dk-fade var(--dur-4) var(--ease-out) both}.reveal-pop.is-revealed{animation:dk-pop var(--dur-4) var(--ease-spring) both}}.shake{animation:dk-shake .42s var(--ease-in-out)}@keyframes dk-shake{10%,90%{translate:-2px 0}20%,80%{translate:4px 0}30%,50%,70%{translate:-6px 0}40%,60%{translate:6px 0}}.field.is-invalid:not(.was-shaken) :is(.input,.textarea,.select,.combo-control){animation:dk-shake .42s var(--ease-in-out)}.flash{animation:dk-flash 1.2s var(--ease-out)}@keyframes dk-flash{0%{background-color:var(--brand-soft)}to{background-color:transparent}}.flash-good{animation:dk-flash-good 1.4s var(--ease-out)}@keyframes dk-flash-good{0%{background-color:var(--good-100)}to{background-color:transparent}}.pulse{animation:dk-pulse 2s var(--ease-in-out) infinite}@keyframes dk-pulse{50%{opacity:.55}}.ping{position:relative}.ping:after{content:"";position:absolute;inset:0;border-radius:inherit;background:currentColor;animation:dk-ping 1.8s var(--ease-out) infinite;pointer-events:none}@keyframes dk-ping{0%{opacity:.6;scale:1}to{opacity:0;scale:2.2}}.nudge{animation:dk-nudge 1.6s var(--ease-in-out) infinite}@keyframes dk-nudge{50%{translate:4px 0}}.lift{transition:translate var(--dur-2) var(--ease-out),box-shadow var(--dur-2) var(--ease-out)}.lift:hover{translate:0 -2px;box-shadow:var(--shadow-3)}.lift:active{translate:0 0;box-shadow:var(--shadow-1)}.press{transition:scale var(--dur-1) var(--ease-out)}.press:active{scale:.97}.sweep{position:relative;text-decoration:none;background-image:linear-gradient(currentColor,currentColor);background-size:0 1.5px;background-position:0 100%;background-repeat:no-repeat;transition:background-size var(--dur-2) var(--ease-out);padding-block-end:1px}.sweep:hover,.sweep:focus-visible{background-size:100% 1.5px}.btn:hover .icon-follow,.list-row:hover .icon-follow,.card-link:hover .icon-follow{translate:3px 0}.icon-follow{transition:translate var(--dur-2) var(--ease-spring)}.ripple{position:relative;overflow:hidden}.ripple>.ripple-ink{position:absolute;inset-block-start:var(--ry, 50%);inset-inline-start:var(--rx, 50%);inline-size:8px;block-size:8px;margin:-4px 0 0 -4px;border-radius:var(--r-full);background:currentColor;opacity:.28;pointer-events:none;animation:dk-ripple .52s var(--ease-out) forwards}@keyframes dk-ripple{to{scale:26;opacity:0}}.expand{block-size:0;overflow:hidden;transition:block-size var(--dur-3) var(--ease-out),opacity var(--dur-2) var(--ease-out);opacity:0}.expand.is-open{block-size:auto;opacity:1}.fade-swap{transition:opacity var(--dur-2) var(--ease-out),display var(--dur-2) allow-discrete}.fade-swap[hidden]{opacity:0}@starting-style{.fade-swap:not([hidden]){opacity:0}}.marquee{display:flex;overflow:hidden;gap:var(--space-8);mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)}.marquee-track{display:flex;gap:var(--space-8);flex:0 0 auto;padding-inline-end:var(--space-8);animation:dk-marquee var(--marquee-dur, 26s) linear infinite;white-space:nowrap}.marquee:hover .marquee-track{animation-play-state:paused}@keyframes dk-marquee{to{translate:-100% 0}}.tick{transition:translate var(--dur-2) var(--ease-spring)}.tick.is-up{animation:dk-tick-up var(--dur-3) var(--ease-out)}.tick.is-down{animation:dk-tick-down var(--dur-3) var(--ease-out)}@keyframes dk-tick-up{0%{translate:0 6px;opacity:0;color:var(--good-500)}}@keyframes dk-tick-down{0%{translate:0 -6px;opacity:0;color:var(--bad-500)}}}::view-transition-group(root){animation-duration:var(--dur-3)}::view-transition-old(root){animation:dk-vt-out var(--dur-2) var(--ease-in) both}::view-transition-new(root){animation:dk-vt-in var(--dur-3) var(--ease-out) both}@keyframes dk-vt-out{to{opacity:0;translate:0 -6px}}@keyframes dk-vt-in{0%{opacity:0;translate:0 8px}}html[data-vt=back]::view-transition-old(root){animation-name:dk-vt-out-back}html[data-vt=back]::view-transition-new(root){animation-name:dk-vt-in-back}@keyframes dk-vt-out-back{to{opacity:0;translate:6% 0}}@keyframes dk-vt-in-back{0%{opacity:0;translate:-6% 0}}.vt-hold{view-transition-name:var(--vt)}.vt-header{view-transition-name:dk-header}.vt-main{view-transition-name:dk-main}.vt-tabbar{view-transition-name:dk-tabbar}::view-transition-group(dk-header),::view-transition-group(dk-tabbar){animation-duration:var(--dur-1)}::view-transition-old(dk-header),::view-transition-new(dk-header),::view-transition-old(dk-tabbar),::view-transition-new(dk-tabbar){animation:none;mix-blend-mode:normal}@media(prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation-duration:1ms!important}}}@layer deck.layout{.cq{container-type:inline-size}.cq-size{container-type:size}.cq-normal{container-type:normal}.cq-panel{container:panel / inline-size}.cq-pane{container:pane / inline-size}.cq-row{container:row / inline-size}.cq-shell{container:shell / inline-size}.card.cq,.panel.cq,.list.cq,.split>.cq,.grid>.cq{container-type:inline-size}.cq :is(.text-cq){font-size:clamp(var(--text-sm),3.4cqi,var(--text-lg))}.cq :is(.display-cq){font-size:clamp(1.5rem,8cqi,3.25rem);line-height:1.05;letter-spacing:-.03em}.cq :is(.pad-cq){padding:clamp(var(--space-3),4cqi,var(--space-8))}.cq :is(.gap-cq){gap:clamp(var(--space-2),2.5cqi,var(--space-6))}.card-flex{display:flex;flex-direction:column}.card-flex .card-media{flex:0 0 auto}.card-flex .card-media img{inline-size:100%;aspect-ratio:16 / 9;object-fit:cover}@container (min-width: 30rem){.card-flex{flex-direction:row}.card-flex .card-media{inline-size:40%;max-inline-size:15rem}.card-flex .card-media img{block-size:100%;aspect-ratio:auto}}.stat-cq{display:flex;flex-direction:column;gap:var(--space-1)}@container (min-width: 18rem){.stat-cq .stat-value{font-size:var(--text-2xl)}}@container (min-width: 28rem){.stat-cq{flex-direction:row;align-items:baseline;gap:var(--space-3);flex-wrap:wrap}.stat-cq .stat-label{order:-1;min-inline-size:100%}}.metarow{display:flex;align-items:center;gap:var(--space-3)}.metarow .row-meta{display:none}@container (min-width: 26rem){.metarow .row-meta{display:block;color:var(--text-muted);font-size:var(--text-sm)}}@container (min-width: 38rem){.metarow .row-meta-wide{display:block}}.metarow .row-meta-wide{display:none}.field-row-cq{display:grid;gap:var(--space-4);grid-template-columns:1fr}@container (min-width: 32rem){.field-row-cq{grid-template-columns:repeat(auto-fit,minmax(min(13rem,100%),1fr))}}.actions-cq{display:flex;flex-direction:column;gap:var(--space-2)}.actions-cq>.btn{inline-size:100%}@container (min-width: 24rem){.actions-cq{flex-direction:row}.actions-cq>.btn{inline-size:auto}}@container (max-width: 44rem){.dg-cq thead,.dg-cq tfoot{display:none}.dg-cq,.dg-cq tbody,.dg-cq tr,.dg-cq td{display:block;inline-size:100%}.dg-cq tr{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);margin-block-end:var(--space-3);overflow:hidden}.dg-cq td{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);block-size:auto;min-block-size:var(--tap);text-align:end;white-space:normal;position:static!important;box-shadow:none!important;clip-path:none!important}.dg-cq td:before{content:attr(data-label);font-size:var(--text-xs);font-weight:620;color:var(--text-muted);text-align:start}}@container shell (max-width: 15rem){.sidebar-link span{display:none}.sidebar-link{justify-content:center}.sidebar-group{text-align:center;font-size:0}}@container (min-width: 24rem){.cq-sm\:row{flex-direction:row}.cq-sm\:flex{display:flex}.cq-sm\:hidden{display:none}.cq-sm\:block{display:block}.cq-sm\:w-auto{inline-size:auto}}@container (min-width: 32rem){.cq-md\:row{flex-direction:row}.cq-md\:col{flex-direction:column}.cq-md\:flex{display:flex}.cq-md\:grid{display:grid}.cq-md\:hidden{display:none}.cq-md\:block{display:block}.cq-md\:items-center{align-items:center}.cq-md\:justify-between{justify-content:space-between}}@container (min-width: 44rem){.cq-lg\:row{flex-direction:row}.cq-lg\:flex{display:flex}.cq-lg\:hidden{display:none}.cq-lg\:block{display:block}.cq-lg\:grid-2{display:grid;grid-template-columns:1fr 1fr}}.cq-tone{container-type:inline-size}@container style(--tone: critical){.tone-surface{background:var(--bad-100);border-color:color-mix(in oklab,var(--bad-500) 35%,transparent)}.tone-text{color:var(--bad-700)}.tone-icon{color:var(--bad-500)}}@container style(--tone: caution){.tone-surface{background:var(--warn-100);border-color:color-mix(in oklab,var(--warn-500) 35%,transparent)}.tone-text{color:var(--warn-700)}.tone-icon{color:var(--warn-500)}}@container style(--tone: clear){.tone-surface{background:var(--good-100);border-color:color-mix(in oklab,var(--good-500) 35%,transparent)}.tone-text{color:var(--good-700)}.tone-icon{color:var(--good-500)}}}@layer deck.utilities{.mis-auto{margin-inline-start:auto}.mie-auto{margin-inline-end:auto}.mis-0{margin-inline-start:0}.mis-1{margin-inline-start:var(--space-1)}.mis-2{margin-inline-start:var(--space-2)}.mis-3{margin-inline-start:var(--space-3)}.mis-4{margin-inline-start:var(--space-4)}.mis-6{margin-inline-start:var(--space-6)}.mis-8{margin-inline-start:var(--space-8)}.mie-0{margin-inline-end:0}.mie-1{margin-inline-end:var(--space-1)}.mie-2{margin-inline-end:var(--space-2)}.mie-3{margin-inline-end:var(--space-3)}.mie-4{margin-inline-end:var(--space-4)}.mie-6{margin-inline-end:var(--space-6)}.mie-8{margin-inline-end:var(--space-8)}.pis-0{padding-inline-start:0}.pis-1{padding-inline-start:var(--space-1)}.pis-2{padding-inline-start:var(--space-2)}.pis-3{padding-inline-start:var(--space-3)}.pis-4{padding-inline-start:var(--space-4)}.pis-6{padding-inline-start:var(--space-6)}.pis-8{padding-inline-start:var(--space-8)}.pie-0{padding-inline-end:0}.pie-1{padding-inline-end:var(--space-1)}.pie-2{padding-inline-end:var(--space-2)}.pie-3{padding-inline-end:var(--space-3)}.pie-4{padding-inline-end:var(--space-4)}.pie-6{padding-inline-end:var(--space-6)}.pie-8{padding-inline-end:var(--space-8)}.pbs-0{padding-block-start:0}.pbs-1{padding-block-start:var(--space-1)}.pbs-2{padding-block-start:var(--space-2)}.pbs-3{padding-block-start:var(--space-3)}.pbs-4{padding-block-start:var(--space-4)}.pbs-6{padding-block-start:var(--space-6)}.pbs-8{padding-block-start:var(--space-8)}.pbe-0{padding-block-end:0}.pbe-1{padding-block-end:var(--space-1)}.pbe-2{padding-block-end:var(--space-2)}.pbe-3{padding-block-end:var(--space-3)}.pbe-4{padding-block-end:var(--space-4)}.pbe-6{padding-block-end:var(--space-6)}.pbe-8{padding-block-end:var(--space-8)}.bis{border-inline-start:1px solid var(--line)}.bie{border-inline-end:1px solid var(--line)}.min-is-0{min-inline-size:0}.inset-is-0{inset-inline-start:0}.inset-ie-0{inset-inline-end:0}.inset-bs-0{inset-block-start:0}.inset-be-0{inset-block-end:0}.r-start{border-start-start-radius:var(--r-md);border-end-start-radius:var(--r-md)}.r-end{border-start-end-radius:var(--r-md);border-end-end-radius:var(--r-md)}.writing-vertical{writing-mode:vertical-rl;text-orientation:mixed}.writing-vertical-lr{writing-mode:vertical-lr}.writing-upright{text-orientation:upright;letter-spacing:.1em}.writing-sideways{writing-mode:sideways-lr}.writing-normal{writing-mode:horizontal-tb}.th-vertical{writing-mode:vertical-rl;rotate:180deg;white-space:nowrap;block-size:8rem;padding-block:var(--space-3);text-align:start}.dir-ltr{direction:ltr;unicode-bidi:isolate}.dir-rtl{direction:rtl;unicode-bidi:isolate}.bidi-isolate{unicode-bidi:isolate}.bidi-plaintext{unicode-bidi:plaintext}.mono,code,kbd,samp,.nums{unicode-bidi:isolate}.code-ltr{direction:ltr;unicode-bidi:isolate;text-align:start}}@layer deck.rtl{[dir=rtl] .mirror-rtl{scale:-1 1}[dir=rtl] :is(.icon:has(use[href$="#chevron-left"]),.icon:has(use[href$="#chevron-right"]),.icon:has(use[href$="#arrow-left"]),.icon:has(use[href$="#arrow-right"]),.icon:has(use[href$="#arrow-up-right"]),.icon:has(use[href$="#external"]),.icon:has(use[href$="#log-out"]),.icon:has(use[href$="#send"]),.icon:has(use[href$="#trend-up"]),.icon:has(use[href$="#trend-down"])){scale:-1 1}[dir=rtl] .no-flip{scale:1 1}@media(prefers-reduced-motion:no-preference){[dir=rtl] .enter-start{animation-name:dk-in-start-rtl}[dir=rtl] .enter-end{animation-name:dk-in-end-rtl}@keyframes dk-in-start-rtl{0%{opacity:0;translate:calc(var(--travel) * 1.6) 0}}@keyframes dk-in-end-rtl{0%{opacity:0;translate:calc(var(--travel) * -1.6) 0}}[dir=rtl] .icon-follow{transition:translate var(--dur-2) var(--ease-spring)}[dir=rtl] .btn:hover .icon-follow,[dir=rtl] .list-row:hover .icon-follow,[dir=rtl] .card-link:hover .icon-follow{translate:-3px 0}[dir=rtl] .sweep{background-position:100% 100%}[dir=rtl] .marquee-track{animation-name:dk-marquee-rtl}@keyframes dk-marquee-rtl{to{translate:100% 0}}}[dir=rtl] .select{background-position:19px calc(50% + 1px),14px calc(50% + 1px);background-image:linear-gradient(135deg,transparent 50%,currentColor 50%),linear-gradient(45deg,currentColor 50%,transparent 50%);padding-inline:var(--space-10) var(--space-3)}[dir=rtl] .search>.icon{inset-inline-start:var(--space-3)}[dir=rtl] .dg-wrap{--dg-pin-shadow-start: -6px 0 8px -6px oklch(20% .03 var(--hue-neutral) / .28);--dg-pin-shadow-end: 6px 0 8px -6px oklch(20% .03 var(--hue-neutral) / .28);--dg-pin-clip-start: inset(0 0 0 -12px);--dg-pin-clip-end: inset(0 -12px 0 0)}[dir=rtl] .switch input:after{translate:0 0}[dir=rtl] .switch input:checked:after{translate:-18px 0}[dir=rtl] :is(.chart-bar-fill,.progress::-webkit-progress-value,.toast-timer){transform-origin:right center}[dir=rtl] .scroll-progress{transform-origin:right center}[dir=rtl] .breadcrumb li+li:before{content:"\\\\"}[dir=rtl] .timeline-item:not(:last-child):before{inset-inline-start:10px}[dir=ltr] [dir=rtl],[dir=rtl] [dir=ltr]{unicode-bidi:isolate}}@layer deck.effects{.g-surface{background-image:linear-gradient(in oklab 180deg,color-mix(in oklab,var(--brand-500) 7%,transparent),transparent 60%)}.g-sunken{background-image:linear-gradient(in oklab 180deg,transparent,color-mix(in oklab,var(--ink-900) 5%,transparent))}.g-brand{background-image:linear-gradient(in oklab 135deg,var(--brand-600),oklch(from var(--brand-600) l c calc(h + 34)));color:var(--text-on-brand)}.g-brand-soft{background-image:linear-gradient(in oklab 135deg,var(--brand-soft),color-mix(in oklab,var(--brand-soft) 40%,var(--surface)))}.g-dark{background-image:linear-gradient(in oklab 160deg,var(--ink-900),var(--ink-1000));color:var(--ink-100)}.g-mesh{background-color:var(--bg);background-image:radial-gradient(closest-side at 18% 22%,oklch(72% .14 var(--hue-brand) / .3),transparent),radial-gradient(closest-side at 82% 12%,oklch(76% .13 calc(var(--hue-brand) + 62) / .24),transparent),radial-gradient(closest-side at 62% 88%,oklch(70% .12 calc(var(--hue-brand) - 48) / .22),transparent);background-size:70% 70%,60% 60%,78% 78%;background-repeat:no-repeat}.g-mesh-warm{--hue-brand: 34}.g-mesh-subtle{background-image:radial-gradient(closest-side at 20% 0%,oklch(74% .1 var(--hue-brand) / .18),transparent),radial-gradient(closest-side at 90% 30%,oklch(78% .09 calc(var(--hue-brand) + 70) / .14),transparent);background-size:80% 80%,70% 70%;background-repeat:no-repeat}@media(prefers-reduced-motion:no-preference){.g-mesh-drift{animation:g-drift 22s var(--ease-in-out) infinite alternate}@keyframes g-drift{to{background-position:8% 6%,-6% 10%,4% -8%}}}.g-text{color:var(--brand-700);background-image:linear-gradient(in oklab 92deg,var(--brand-600),oklch(from var(--brand-500) l c calc(h + 52)));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;padding-block-end:.06em}.g-text-shine{color:var(--text);background-image:linear-gradient(in oklab 92deg,var(--text) 0 40%,var(--brand-400) 50%,var(--text) 60% 100%);background-size:260% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}@media(prefers-reduced-motion:no-preference){.g-text-shine{animation:g-shine 4.5s var(--ease-in-out) infinite}@keyframes g-shine{to{background-position:-160% 0}}}.g-border{--g-width: 1.5px;border:var(--g-width) solid transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,linear-gradient(in oklab var(--g-angle, 135deg),var(--brand-500),oklch(from var(--brand-400) l c calc(h + 70))) border-box}.g-border-soft{background:linear-gradient(var(--surface),var(--surface)) padding-box,linear-gradient(in oklab 160deg,color-mix(in oklab,var(--brand-400) 60%,transparent),transparent 70%) border-box}@media(prefers-reduced-motion:no-preference){.g-border-spin{animation:g-spin 6s linear infinite}@keyframes g-spin{to{--g-angle: 495deg}}}.g-hairline{position:relative}.g-hairline:before{content:"";position:absolute;inset-block-start:0;inset-inline:0;block-size:1px;background:linear-gradient(90deg,transparent,color-mix(in oklab,var(--brand-400) 70%,transparent) 30% 70%,transparent)}.g-scrim{position:relative;isolation:isolate}.g-scrim:after{content:"";position:absolute;inset:0;z-index:-1;background:var(--scrim);pointer-events:none}.g-scrim-top:after{background:linear-gradient(to bottom,oklch(12% .02 var(--hue-neutral) / .72),transparent 62%)}.g-scrim>*{position:relative}.g-fade-inline{mask-image:linear-gradient(90deg,transparent,#000 var(--fade, 4%),#000 calc(100% - var(--fade, 4%)),transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 var(--fade, 4%),#000 calc(100% - var(--fade, 4%)),transparent)}.g-fade-end{mask-image:linear-gradient(90deg,#000 70%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 70%,transparent)}.g-fade-block{mask-image:linear-gradient(180deg,#000 60%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 60%,transparent)}.g-fade-more{max-block-size:var(--collapsed, 9rem);overflow:hidden;mask-image:linear-gradient(180deg,#000 65%,transparent);-webkit-mask-image:linear-gradient(180deg,#000 65%,transparent)}.g-fade-more.is-open{max-block-size:none;mask-image:none;-webkit-mask-image:none}.scroller{mask-image:linear-gradient(90deg,#000 92%,transparent);-webkit-mask-image:linear-gradient(90deg,#000 92%,transparent)}.g-sheen{position:relative;overflow:hidden;isolation:isolate}.g-sheen:after{content:"";position:absolute;inset-block:0;inset-inline-start:var(--sheen);inline-size:40%;background:linear-gradient(105deg,transparent,oklch(100% 0 0 / .32) 45%,oklch(100% 0 0 / .32) 55%,transparent);pointer-events:none;transition:--sheen var(--dur-5) var(--ease-out)}@media(prefers-reduced-motion:no-preference){.g-sheen:hover:after{--sheen: 110%}}.g-good{background-image:linear-gradient(in oklab 135deg,var(--good-600),oklch(from var(--good-600) l c calc(h - 26)));color:var(--text-on-good)}.g-warn{background-image:linear-gradient(in oklab 135deg,var(--warn-500),oklch(from var(--warn-500) l c calc(h + 22)));color:var(--text-on-warn)}.g-bad{background-image:linear-gradient(in oklab 135deg,var(--bad-600),oklch(from var(--bad-600) l c calc(h - 18)));color:var(--text-on-bad)}.g-conic{background-image:conic-gradient(from var(--g-angle, 0deg) in oklch longer hue,oklch(70% .16 0),oklch(70% .16 360))}.g-ring{--thickness: 3px;border-radius:var(--r-full);background:conic-gradient(from var(--g-angle, 0deg),transparent,var(--brand-500),transparent 62%);mask:radial-gradient(farthest-side,transparent calc(100% - var(--thickness)),#000 calc(100% - var(--thickness) + 1px));-webkit-mask:radial-gradient(farthest-side,transparent calc(100% - var(--thickness)),#000 calc(100% - var(--thickness) + 1px))}@media(prefers-reduced-motion:no-preference){.g-ring-spin{animation:g-spin-360 1.6s linear infinite}@keyframes g-spin-360{to{--g-angle: 360deg}}}.g-grid-lines{background-image:linear-gradient(to right,var(--line) 1px,transparent 1px),linear-gradient(to bottom,var(--line) 1px,transparent 1px);background-size:var(--cell, 24px) var(--cell, 24px)}.g-dots{background-image:radial-gradient(var(--line-strong) 1px,transparent 1px);background-size:var(--cell, 18px) var(--cell, 18px)}.g-stripes{background-image:repeating-linear-gradient(45deg,color-mix(in oklab,var(--ink-500) 8%,transparent) 0 6px,transparent 6px 12px)}.g-hatch{background-image:repeating-linear-gradient(-45deg,color-mix(in oklab,var(--warn-500) 22%,transparent) 0 5px,transparent 5px 10px)}.g-shimmer{background-image:linear-gradient(100deg,transparent 20%,color-mix(in oklab,var(--brand-200) 55%,transparent) 45%,transparent 70%);background-size:250% 100%;background-repeat:no-repeat}@media(prefers-reduced-motion:no-preference){.g-shimmer{animation:dk-shimmer 1.6s var(--ease-in-out) infinite}}.chart-area-g{fill:url(#deck-area-gradient);stroke:none}.g-bar-fill{background-image:linear-gradient(in oklab 180deg,var(--series, var(--c1)),color-mix(in oklab,var(--series, var(--c1)) 70%,var(--ink-900)))}@supports not (color: oklch(50% .1 200)){.g-brand,.g-good,.g-warn,.g-bad{background-image:none;background-color:var(--brand-600)}.g-text{-webkit-text-fill-color:currentColor;background-image:none}.g-mesh{background-image:none}}}@layer deck.effects{.scene{perspective:var(--perspective, 1000px);perspective-origin:var(--vanish, 50% 50%)}.scene-near{--perspective: 560px}.scene-far{--perspective: 2000px}.space{transform-style:preserve-3d}.flat{transform-style:flat}.backface-hidden{backface-visibility:hidden}.flip{display:grid;transform-style:preserve-3d;transition:rotate var(--dur-4) var(--ease-spring)}.flip>.flip-front,.flip>.flip-back{grid-area:1 / 1;backface-visibility:hidden;-webkit-backface-visibility:hidden}.flip>.flip-back{rotate:y 180deg}.flip.is-flipped{rotate:y 180deg}.flip-x{transition:rotate var(--dur-4) var(--ease-spring)}.flip-x>.flip-back{rotate:x 180deg}.flip-x.is-flipped{rotate:x 180deg}@media(hover:hover)and (prefers-reduced-motion:no-preference){.flip-hover:hover{rotate:y 180deg}}.tilt{transform-style:preserve-3d;rotate:var(--tilt-axis, 1 1 0) var(--tilt-amount, 0deg);transition:rotate var(--dur-3) var(--ease-out),scale var(--dur-2) var(--ease-out);will-change:auto}@media(hover:hover)and (prefers-reduced-motion:no-preference){.tilt.is-tilting{transition:rotate 80ms linear}.tilt:hover{scale:1.015}.tilt .tilt-lift{transform:translateZ(var(--depth, 28px))}.tilt .tilt-lift-sm{transform:translateZ(12px)}}@supports (animation-delay: calc(sibling-index()*1ms)){.pile>*{--i: calc(sibling-index() - 1) }}@supports not (animation-delay: calc(sibling-index()*1ms)){.pile>:nth-child(1){--i: 0}.pile>:nth-child(2){--i: 1}.pile>:nth-child(3){--i: 2}.pile>:nth-child(4){--i: 3}.pile>:nth-child(5){--i: 4}.pile>:nth-child(6){--i: 5}.pile>:nth-child(7){--i: 6}.pile>:nth-child(8){--i: 7}}.pile{display:grid;transform-style:preserve-3d;perspective:1200px}.pile>*{grid-area:1 / 1;translate:0 calc(var(--i, 0) * 10px);scale:calc(1 - var(--i, 0) * .045);z-index:calc(10 - var(--i, 0));filter:brightness(calc(1 - var(--i, 0) * .04));transition:translate var(--dur-3) var(--ease-out),scale var(--dur-3) var(--ease-out),rotate var(--dur-3) var(--ease-out),opacity var(--dur-2) var(--ease-out)}.pile>:nth-child(n+4){opacity:0;pointer-events:none}.pile.is-fanned>*{translate:calc(var(--i, 0) * 14px) calc(var(--i, 0) * 22px);rotate:calc(var(--i, 0) * 2.5deg);scale:1;filter:none}.pile.is-fanned>:nth-child(n+4):not(.is-dismissed){opacity:1;pointer-events:auto}.pile>.is-dismissed{translate:120% -20px;rotate:14deg;opacity:0}.coverflow{display:flex;gap:var(--space-4);overflow-x:auto;scroll-snap-type:x mandatory;perspective:1200px;padding-block:var(--space-6);padding-inline:max(var(--space-gutter),20%);scrollbar-width:none;overscroll-behavior-inline:contain}.coverflow::-webkit-scrollbar{display:none}.coverflow>*{flex:0 0 auto;scroll-snap-align:center;transform-style:preserve-3d;transition:rotate var(--dur-3) var(--ease-out),scale var(--dur-3) var(--ease-out)}.coverflow>.is-behind-start{rotate:y 32deg;scale:.88}.coverflow>.is-behind-end{rotate:y -32deg;scale:.88}.coverflow>.is-front{rotate:y 0deg;scale:1}.cube{--size: 120px;position:relative;inline-size:var(--size);block-size:var(--size);transform-style:preserve-3d;transition:rotate var(--dur-5) var(--ease-spring)}.cube>*{position:absolute;inset:0;display:grid;place-items:center;border:1px solid var(--line);background:color-mix(in oklab,var(--surface) 88%,transparent);backface-visibility:visible}.cube>.face-front{transform:translateZ(calc(var(--size) / 2))}.cube>.face-back{transform:rotateY(180deg) translateZ(calc(var(--size) / 2))}.cube>.face-end{transform:rotateY(90deg) translateZ(calc(var(--size) / 2))}.cube>.face-start{transform:rotateY(-90deg) translateZ(calc(var(--size) / 2))}.cube>.face-top{transform:rotateX(90deg) translateZ(calc(var(--size) / 2))}.cube>.face-bottom{transform:rotateX(-90deg) translateZ(calc(var(--size) / 2))}.cube[data-face=front]{rotate:0deg}.cube[data-face=end]{rotate:y -90deg}.cube[data-face=back]{rotate:y 180deg}.cube[data-face=start]{rotate:y 90deg}.cube[data-face=top]{rotate:x -90deg}.cube[data-face=bottom]{rotate:x 90deg}@media(prefers-reduced-motion:no-preference){.cube-spin{animation:dk-cube 14s linear infinite}@keyframes dk-cube{0%{transform:rotateX(-18deg) rotateY(0)}to{transform:rotateX(-18deg) rotateY(360deg)}}}.btn-3d{--lift: 3px;position:relative;border:0;box-shadow:0 var(--lift) 0 0 color-mix(in oklab,var(--brand-600) 62%,var(--ink-900)),0 calc(var(--lift) + 3px) 8px oklch(20% .03 var(--hue-neutral) / .22);translate:0 0;transition:translate 70ms var(--ease-out),box-shadow 70ms var(--ease-out)}.btn-3d:active{translate:0 var(--lift);box-shadow:0 0 color-mix(in oklab,var(--brand-600) 62%,var(--ink-900))}.parallax{block-size:100%;overflow-y:auto;overflow-x:hidden;perspective:8px;perspective-origin:0 0}.parallax-layer{position:absolute;inset:0;transform-origin:0 0}.parallax-back{transform:translateZ(-6px) scale(1.75)}.parallax-mid{transform:translateZ(-3px) scale(1.375)}.parallax-front{transform:translateZ(0)}@media(prefers-reduced-motion:reduce){.parallax{perspective:none}.parallax-layer{transform:none;position:relative}}@media(prefers-reduced-motion:no-preference){.turn-out{animation:dk-turn-out var(--dur-3) var(--ease-in) both;transform-origin:left center}.turn-in{animation:dk-turn-in var(--dur-4) var(--ease-out) both;transform-origin:left center}@keyframes dk-turn-out{to{transform:perspective(1400px) rotateY(-22deg);opacity:0}}@keyframes dk-turn-in{0%{transform:perspective(1400px) rotateY(24deg);opacity:0}}[dir=rtl] :is(.turn-out,.turn-in){transform-origin:right center}}.z-lift-1{transform:translateZ(8px)}.z-lift-2{transform:translateZ(20px)}.z-lift-3{transform:translateZ(40px)}.z-sink{transform:translateZ(-16px)}.tilt.is-tilting,.flip.is-flipped,.pile.is-fanned>*,.coverflow>*,.cube{will-change:transform,rotate,scale}.tilt:not(.is-tilting),.flip:not(.is-flipped){will-change:auto}@media(prefers-reduced-motion:reduce){.flip,.flip-x,.tilt,.cube,.pile>*,.coverflow>*{transition-duration:1ms;rotate:none}.flip.is-flipped,.flip-x.is-flipped{rotate:y 180deg}.coverflow>*{rotate:none;scale:1}}}@layer deck.components{.carousel{position:relative}.carousel-track{display:flex;gap:var(--gap, var(--space-4));overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-inline:contain;scroll-behavior:smooth;scrollbar-width:none;border-radius:var(--r-md)}.carousel-track::-webkit-scrollbar{display:none}.carousel-slide{flex:0 0 100%;scroll-snap-align:center;scroll-snap-stop:always;min-inline-size:0;position:relative}.carousel-peek .carousel-slide{flex-basis:86%}.carousel-multi .carousel-slide{flex-basis:calc((100% - var(--space-4) * 2) / 3)}@media(max-width:48rem){.carousel-multi .carousel-slide{flex-basis:78%}}.carousel-slide img{inline-size:100%;block-size:100%;object-fit:cover}.carousel-arrow{position:absolute;inset-block-start:50%;translate:0 -50%;z-index:2;inline-size:40px;block-size:40px;display:grid;place-items:center;border-radius:var(--r-full);background:color-mix(in oklab,var(--surface) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--line);box-shadow:var(--shadow-2);color:var(--text);cursor:pointer;transition:opacity var(--dur-2) var(--ease-out),scale var(--dur-1) var(--ease-out)}.carousel-arrow:hover{scale:1.06}.carousel-arrow[disabled]{opacity:0;pointer-events:none}.carousel-prev{inset-inline-start:var(--space-3)}.carousel-next{inset-inline-end:var(--space-3)}@media(pointer:coarse){.carousel-arrow{display:none}}.carousel-dots{display:flex;justify-content:center;gap:var(--space-2);padding-block-start:var(--space-3)}.carousel-dot{inline-size:7px;block-size:7px;border-radius:var(--r-full);background:var(--ink-300);cursor:pointer;padding:0;transition:inline-size var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out)}.carousel-dot[aria-current=true]{inline-size:22px;background:var(--brand-600)}.carousel-dot:before{content:"";position:absolute;inline-size:32px;block-size:32px;translate:-50% -50%;inset:50% auto auto 50%}.carousel-dots>*{position:relative}@supports selector(::scroll-marker){.carousel-dots,.carousel-arrow{display:none}.carousel-track{scroll-marker-group:after}.carousel-track::scroll-marker-group{display:flex;justify-content:center;gap:var(--space-2);padding-block-start:var(--space-3)}.carousel-slide::scroll-marker{content:"";inline-size:7px;block-size:7px;border-radius:var(--r-full);background:var(--ink-300);cursor:pointer;transition:inline-size var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out)}.carousel-slide::scroll-marker:target-current{inline-size:22px;background:var(--brand-600)}.carousel-track::scroll-button(*){position:absolute;inset-block-start:50%;translate:0 -50%;z-index:2;inline-size:40px;block-size:40px;display:grid;place-items:center;border-radius:var(--r-full);background:color-mix(in oklab,var(--surface) 88%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--line);box-shadow:var(--shadow-2);color:var(--text);font-size:var(--text-xl);line-height:1;cursor:pointer;transition:opacity var(--dur-2) var(--ease-out),scale var(--dur-1) var(--ease-out)}.carousel-track::scroll-button(*):hover{scale:1.06}.carousel-track::scroll-button(*):disabled{opacity:0;pointer-events:none}.carousel-track::scroll-button(inline-start){content:"\2039" / "Previous slide";inset-inline-start:var(--space-3)}.carousel-track::scroll-button(inline-end){content:"\203a" / "Next slide";inset-inline-end:var(--space-3)}@media(pointer:coarse){.carousel-track::scroll-button(*){display:none}}}.carousel-caption{position:absolute;inset-inline:0;inset-block-end:0;padding:var(--space-8) var(--space-5) var(--space-5);color:#f8f8f8;background:var(--scrim);pointer-events:none}.carousel-caption :is(a,button){pointer-events:auto}.drawer{--drawer-size: min(22rem, 88vw);position:fixed;inset-block:0;inset-inline-start:0;inset-inline-end:auto;margin:0;max-block-size:none;block-size:100dvh;inline-size:var(--drawer-size);max-inline-size:var(--drawer-size);padding:0;border:0;border-inline-end:1px solid var(--line);background:var(--surface);color:var(--text);box-shadow:var(--shadow-4);display:flex;flex-direction:column;translate:-100% 0;transition:translate var(--dur-3) var(--ease-emphasized),display var(--dur-3) allow-discrete,overlay var(--dur-3) allow-discrete}.drawer[open]{translate:0}@starting-style{.drawer[open]{translate:-100% 0}}.drawer-end{inset-inline:auto 0;border-inline:1px solid var(--line) 0;border-inline-start:1px solid var(--line);border-inline-end:0;translate:100% 0}@starting-style{.drawer-end[open]{translate:100% 0}}.drawer::backdrop{background:oklch(18% .02 var(--hue-neutral) / .5);opacity:0;transition:opacity var(--dur-3) var(--ease-out),display var(--dur-3) allow-discrete,overlay var(--dur-3) allow-discrete}.drawer[open]::backdrop{opacity:1}@starting-style{.drawer[open]::backdrop{opacity:0}}.drawer-header{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);padding-block-start:max(var(--space-4),env(safe-area-inset-top));border-block-end:1px solid var(--line);flex:0 0 auto}.drawer-title{font-size:var(--text-md);font-weight:640}.drawer-body{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.drawer-footer{flex:0 0 auto;display:flex;gap:var(--space-3);padding:var(--space-4) var(--space-5);padding-block-end:max(var(--space-4),env(safe-area-inset-bottom));border-block-start:1px solid var(--line);background:var(--surface-2)}.drawer-footer>.btn{flex:1 1 auto}.mega{position:absolute;inset:auto;margin:0;inline-size:min(64rem,calc(100vw - var(--space-8)));padding:var(--space-5);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);opacity:0;translate:0 -8px;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.mega:popover-open{opacity:1;translate:0}@starting-style{.mega:popover-open{opacity:0;translate:0 -8px}}.mega::backdrop{background:transparent}.mega-grid{display:grid;gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(min(14rem,100%),1fr))}.mega-col{display:flex;flex-direction:column;gap:var(--space-1)}.mega-heading{font-size:var(--text-xs);font-weight:700;color:var(--text-faint);padding:var(--space-2) var(--space-2) var(--space-1)}.mega-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-2);border-radius:var(--r-sm);color:var(--text);text-decoration:none;transition:background-color var(--dur-1) var(--ease-out)}.mega-item:hover{background:var(--surface-hover)}.mega-item-title{font-weight:560;font-size:var(--text-sm)}.mega-item-note{font-size:var(--text-xs);color:var(--text-muted)}.mega-feature{grid-column:span 1;padding:var(--space-4);border-radius:var(--r-sm);background:var(--brand-soft);color:var(--brand-soft-text)}.mega-footer{display:flex;gap:var(--space-4);flex-wrap:wrap;margin-block-start:var(--space-5);padding-block-start:var(--space-4);border-block-start:1px solid var(--line);font-size:var(--text-sm)}.speed-dial{position:fixed;inset-block-end:calc(var(--space-5) + env(safe-area-inset-bottom));inset-inline-end:var(--space-5);z-index:var(--z-nav);display:flex;flex-direction:column-reverse;align-items:flex-end;gap:var(--space-3)}body:has(.tabbar) .speed-dial{inset-block-end:calc(var(--space-4) + var(--tap) + var(--space-3) + env(safe-area-inset-bottom))}@media(min-width:48rem){body:has(.tabbar) .speed-dial{inset-block-end:calc(var(--space-5) + env(safe-area-inset-bottom))}}.speed-dial-actions{display:flex;flex-direction:column-reverse;align-items:flex-end;gap:var(--space-3)}@supports (animation-delay: calc(sibling-index()*1ms)){.speed-dial-action{--i: calc(sibling-index() - 1) }}@supports not (animation-delay: calc(sibling-index()*1ms)){.speed-dial-action:nth-child(1){--i: 0}.speed-dial-action:nth-child(2){--i: 1}.speed-dial-action:nth-child(3){--i: 2}.speed-dial-action:nth-child(4){--i: 3}.speed-dial-action:nth-child(5){--i: 4}.speed-dial-action:nth-child(6){--i: 5}.speed-dial-action:nth-child(7){--i: 6}.speed-dial-action:nth-child(8){--i: 7}}.speed-dial-action{display:flex;align-items:center;gap:var(--space-3);opacity:0;translate:0 12px;scale:.85;pointer-events:none;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-spring),scale var(--dur-2) var(--ease-spring);transition-delay:calc(var(--i, 0) * 35ms)}.speed-dial.is-open .speed-dial-action{opacity:1;translate:0;scale:1;pointer-events:auto}.speed-dial-label{padding:var(--space-1) var(--space-3);border-radius:var(--r-sm);background:var(--ink-900);color:var(--ink-50);font-size:var(--text-xs);font-weight:560;white-space:nowrap;box-shadow:var(--shadow-2)}.speed-dial-button{inline-size:42px;block-size:42px;border-radius:var(--r-full);display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);color:var(--text);box-shadow:var(--shadow-3);cursor:pointer}.speed-dial-button:hover{background:var(--surface-hover)}.speed-dial>.fab{position:static}.speed-dial>.fab .icon{transition:rotate var(--dur-3) var(--ease-spring)}.speed-dial.is-open>.fab .icon{rotate:135deg}.back-to-top{position:fixed;inset-block-end:calc(var(--space-5) + env(safe-area-inset-bottom));inset-inline-end:var(--space-5);z-index:calc(var(--z-nav) + 1);inline-size:var(--tap);block-size:var(--tap);border-radius:var(--r-full);display:grid;place-items:center;background:var(--surface);color:var(--text);border:1px solid var(--line);box-shadow:var(--shadow-3);text-decoration:none;transition:opacity var(--dur-2) var(--ease-out),visibility var(--dur-2) var(--ease-out),background-color var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),scale var(--dur-2) var(--ease-spring)}.back-to-top:hover{background:var(--brand-600);color:var(--text-on-brand);border-color:transparent;scale:1.06}.back-to-top:active{scale:.94}body:has(:is(.fab,.speed-dial)) .back-to-top{inset-block-end:calc(var(--space-5) + 56px + var(--space-3) + env(safe-area-inset-bottom))}body:has(.tabbar) .back-to-top{inset-block-end:calc(var(--space-4) + var(--tap) + var(--space-3) + env(safe-area-inset-bottom))}body:has(.tabbar):has(:is(.fab,.speed-dial)) .back-to-top{inset-block-end:calc(var(--space-4) + var(--tap) + var(--space-3) + 56px + var(--space-3) + env(safe-area-inset-bottom))}@media(min-width:48rem){body:has(.tabbar) .back-to-top{inset-block-end:calc(var(--space-5) + env(safe-area-inset-bottom))}body:has(.tabbar):has(:is(.fab,.speed-dial)) .back-to-top{inset-block-end:calc(var(--space-5) + 56px + var(--space-3) + env(safe-area-inset-bottom))}}body:has(.speed-dial.is-open) .back-to-top{display:none}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: scroll()){.back-to-top{animation:dk-btt-in linear both;animation-timeline:scroll(root block);animation-range:400px 520px}}@supports not (animation-timeline: scroll()){.back-to-top[data-deck-btt]{opacity:0;visibility:hidden}.back-to-top[data-deck-btt].is-visible{opacity:1;visibility:visible}}}@keyframes dk-btt-in{0%{opacity:0;visibility:hidden}to{opacity:1;visibility:visible}}.stepper{display:flex;gap:var(--space-2);overflow-x:auto;scrollbar-width:none;counter-reset:step}.stepper::-webkit-scrollbar{display:none}.step{flex:1 1 0;min-inline-size:7rem;display:flex;flex-direction:column;gap:var(--space-2);position:relative;counter-increment:step}.step-marker{display:flex;align-items:center;gap:var(--space-2)}.step-marker:before{content:counter(step);inline-size:26px;block-size:26px;flex:0 0 auto;display:grid;place-items:center;border-radius:var(--r-full);border:1.5px solid var(--line-strong);background:var(--surface);font-size:var(--text-xs);font-weight:640;color:var(--text-muted);transition:background-color var(--dur-2) var(--ease-out),border-color var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.step-marker:after{content:"";flex:1 1 auto;block-size:2px;background:var(--line);border-radius:var(--r-full)}.step:last-child .step-marker:after{display:none}.step-label{font-size:var(--text-sm);font-weight:560;color:var(--text-muted)}.step-note{font-size:var(--text-xs);color:var(--text-faint)}.step.is-done .step-marker:before{content:"";background:var(--brand-600);border-color:var(--brand-600);background-image:linear-gradient(var(--text-on-brand),var(--text-on-brand));background-size:10px 10px;background-position:center;background-repeat:no-repeat;-webkit-mask:none;clip-path:none}.step.is-done .step-marker:after{background:var(--brand-500)}.step.is-done .step-label{color:var(--text)}.step.is-current .step-marker:before{border-color:var(--brand-600);color:var(--brand);box-shadow:0 0 0 3px var(--brand-soft)}.step.is-current .step-label{color:var(--text);font-weight:620}.stepper-vertical{flex-direction:column;gap:var(--space-5)}.stepper-vertical .step{flex-direction:row;gap:var(--space-3);min-inline-size:0}.stepper-vertical .step-marker{flex-direction:column;align-self:stretch}.stepper-vertical .step-marker:after{inline-size:2px;block-size:auto;flex:1 1 auto}@media(max-width:40rem){.stepper-auto{flex-direction:column;gap:var(--space-5)}.stepper-auto .step{flex-direction:row;gap:var(--space-3);min-inline-size:0}.stepper-auto .step-marker{flex-direction:column;align-self:stretch}.stepper-auto .step-marker:after{inline-size:2px;block-size:auto;flex:1 1 auto}}.banner{position:sticky;inset-block-start:0;z-index:calc(var(--z-nav) + 1);display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-gutter);padding-block-start:max(var(--space-3),env(safe-area-inset-top));background:var(--brand-soft);color:var(--brand-soft-text);border-block-end:1px solid color-mix(in oklab,var(--brand-400) 30%,transparent);font-size:var(--text-sm)}.banner-bottom{inset-block:auto 0;border-block:1px solid color-mix(in oklab,var(--brand-400) 30%,transparent) 0;border-block-start:1px solid color-mix(in oklab,var(--brand-400) 30%,transparent);border-block-end:0;padding-block-end:max(var(--space-3),env(safe-area-inset-bottom))}.banner-fixed{position:fixed;inset-inline:0}.banner-dark{background:var(--ink-900);color:var(--ink-100);border-color:transparent}.banner-warn{background:var(--warn-100);color:var(--warn-700);border-color:transparent}.banner-close{margin-inline-start:auto;opacity:.7;cursor:pointer;flex:0 0 auto}.banner-close:hover{opacity:1}.banner[hidden]{display:none}.jumbotron{display:flex;flex-direction:column;gap:var(--space-5);padding:var(--space-section) var(--space-gutter);border-radius:var(--r-lg);background:var(--surface);border:1px solid var(--line);text-align:start}.jumbotron-center{text-align:center;align-items:center}.jumbotron-center .lede{margin-inline:auto}.jumbotron-media{display:grid;gap:var(--space-8);align-items:center;grid-template-columns:1fr}@media(min-width:56rem){.jumbotron-media{grid-template-columns:1.1fr .9fr}}.jumbotron h1{max-inline-size:18ch}.jumbotron-center h1{margin-inline:auto}.jumbotron-actions{display:flex;flex-wrap:wrap;gap:var(--space-3)}@media(max-width:30rem){.jumbotron-actions>.btn{inline-size:100%}}.footer{border-block-start:1px solid var(--line);padding-block:var(--space-10) var(--space-8);color:var(--text-muted);font-size:var(--text-sm)}.footer-grid{display:grid;gap:var(--space-8);grid-template-columns:repeat(auto-fit,minmax(min(11rem,100%),1fr));padding-block-end:var(--space-8)}.footer-brand{display:flex;flex-direction:column;gap:var(--space-3);max-inline-size:26ch}.footer-col{display:flex;flex-direction:column;gap:var(--space-2)}.footer-heading{font-size:var(--text-xs);font-weight:700;color:var(--text);margin-block-end:var(--space-1)}.footer a{color:var(--text-muted);text-decoration:none}.footer a:hover{color:var(--brand);text-decoration:underline}.footer-bottom{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding-block-start:var(--space-5);border-block-start:1px solid var(--line);font-size:var(--text-xs)}.footer-social{display:flex;gap:var(--space-1);margin-inline-start:auto}.footer-social a{inline-size:34px;block-size:34px;display:grid;place-items:center;border-radius:var(--r-sm)}.footer-social a:hover{background:var(--surface-hover)}.indicator{display:inline-block;inline-size:8px;block-size:8px;border-radius:var(--r-full);background:var(--ink-400);flex:0 0 auto}.indicator-good{background:var(--good-500)}.indicator-warn{background:var(--warn-500)}.indicator-bad{background:var(--bad-500)}.indicator-brand{background:var(--brand-500)}.indicator-lg{inline-size:11px;block-size:11px}.indicator-ring{box-shadow:0 0 0 2px var(--surface)}.with-indicator{position:relative;display:inline-flex}.with-indicator>.indicator-badge{position:absolute;inset-block-start:-4px;inset-inline-end:-6px;min-inline-size:18px;block-size:18px;padding-inline:5px;border-radius:var(--r-full);background:var(--bad-600);color:var(--text-on-bad);font-size:var(--text-2xs);font-weight:700;line-height:18px;text-align:center;box-shadow:0 0 0 2px var(--surface);font-variant-numeric:tabular-nums}.with-indicator>.indicator-badge-dot{min-inline-size:9px;inline-size:9px;block-size:9px;padding:0;inset-block-start:-1px;inset-inline-end:-1px}.with-indicator>.indicator-badge-brand{background:var(--brand-600);color:var(--text-on-brand)}.status-line{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm)}.status-line .indicator{position:relative}}@layer deck.components{.float{position:relative;display:flex;flex-direction:column}.float>:is(.input,.textarea,.select){padding-block:var(--space-5) var(--space-2);min-block-size:var(--control-h-lg)}.float>.textarea{padding-block-start:var(--space-6)}.float>label{position:absolute;inset-block-start:0;inset-inline-start:var(--space-3);padding-inline:2px;block-size:var(--control-h-lg);display:flex;align-items:center;color:var(--text-faint);font-size:var(--text-base);pointer-events:none;transform-origin:inline-start center;transition:translate var(--dur-2) var(--ease-out),scale var(--dur-2) var(--ease-out),color var(--dur-2) var(--ease-out)}.float:focus-within>label,.float>.input:not(:placeholder-shown)~label,.float>.textarea:not(:placeholder-shown)~label,.float>.select~label{translate:0 calc(var(--control-h-lg) * -.28);scale:.78;color:var(--text-muted)}.float:focus-within>label{color:var(--brand)}.float.is-invalid>label,.float>:user-invalid~label{color:var(--bad-700)}.float-outline>label{background:var(--surface);block-size:auto;inset-block-start:50%;translate:0 -50%;padding-inline:var(--space-1)}.float-outline:focus-within>label,.float-outline>.input:not(:placeholder-shown)~label,.float-outline>.textarea:not(:placeholder-shown)~label,.float-outline>.select~label{translate:0 calc(var(--control-h-lg) * -.5 - 50%);scale:.8}.float-outline>:is(.input,.textarea,.select){padding-block:var(--space-3)}.number{display:flex;align-items:stretch;inline-size:100%;max-inline-size:var(--number-width, 11rem);border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden}.number:focus-within{border-color:var(--focus);box-shadow:var(--ring)}.number>input{flex:1 1 auto;min-inline-size:0;border:0;outline:none;background:none;text-align:center;font-variant-numeric:tabular-nums;font-size:var(--text-base);color:inherit;padding-inline:var(--space-1)}@media(pointer:coarse){.number>input{font-size:16px}}.number>input::-webkit-outer-spin-button,.number>input::-webkit-inner-spin-button{appearance:none;margin:0}.number>input[type=number]{appearance:textfield;-moz-appearance:textfield}.number>button{inline-size:var(--control-h);min-block-size:var(--control-h);display:grid;place-items:center;background:var(--surface-2);color:var(--text-muted);cursor:pointer;flex:0 0 auto;-webkit-user-select:none;user-select:none;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.number>button:hover{background:var(--surface-hover);color:var(--text)}.number>button:active{background:var(--brand-soft);color:var(--brand-soft-text)}.number>button[disabled]{opacity:.4;pointer-events:none}.number>button:first-child{border-inline-end:1px solid var(--line)}.number>button:last-child{border-inline-start:1px solid var(--line)}.number-unit{display:grid;place-items:center;padding-inline:var(--space-3);background:var(--surface-2);border-inline-start:1px solid var(--line);font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap}.number-sm{--number-width: 8.5rem}.number-sm>button{inline-size:var(--control-h-sm);min-block-size:var(--control-h-sm)}.phone{display:flex;align-items:stretch;inline-size:100%;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--shadow-1);overflow:hidden}.phone:focus-within{border-color:var(--focus);box-shadow:var(--ring)}.phone>.phone-country{display:flex;align-items:center;gap:var(--space-2);padding-inline:var(--space-3);background:var(--surface-2);border-inline-end:1px solid var(--line);cursor:pointer;font-size:var(--text-sm);color:var(--text-muted);white-space:nowrap;flex:0 0 auto}.phone>.phone-country:hover{background:var(--surface-hover)}.phone>.phone-country select{appearance:none;border:0;background:none;outline:none;font:inherit;color:inherit;cursor:pointer;max-inline-size:4.5rem}.phone-flag{font-size:1.1em;line-height:1}.phone-code{font-variant-numeric:tabular-nums;color:var(--text);font-weight:560}.phone>input{flex:1 1 auto;min-inline-size:0;border:0;outline:none;background:none;padding:var(--space-2) var(--space-3);font-size:var(--text-base);font-variant-numeric:tabular-nums;letter-spacing:.02em;color:inherit;direction:ltr;unicode-bidi:isolate;text-align:start}@media(pointer:coarse){.phone>input{font-size:16px}}.phone.is-valid{border-color:color-mix(in oklab,var(--good-500) 55%,transparent)}.phone-status{display:grid;place-items:center;padding-inline:var(--space-3);flex:0 0 auto}.rating{display:inline-flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}.rating>input{position:absolute;opacity:0;inline-size:1px;block-size:1px}.rating>label{inline-size:var(--star, 26px);block-size:var(--star, 26px);display:grid;place-items:center;color:var(--ink-300);cursor:pointer;transition:color var(--dur-1) var(--ease-out),scale var(--dur-1) var(--ease-spring)}.rating>label .icon{inline-size:100%;block-size:100%;fill:currentColor;stroke:none}.rating>label:hover{scale:1.14}.rating>input:checked~label,.rating>label:hover,.rating>label:hover~label{color:var(--accent-500)}.rating>input:focus-visible+label{outline:2px solid var(--focus);outline-offset:2px;border-radius:var(--r-xs)}.rating-sm{--star: 18px}.rating-lg{--star: 36px}.rating-static{display:inline-flex;gap:2px;color:var(--ink-300);position:relative}.rating-static>.rating-fill{position:absolute;inset-block:0;inset-inline-start:0;inline-size:calc(var(--value) * 1%);overflow:hidden;display:flex;gap:2px;color:var(--accent-500);white-space:nowrap}.rating-static .icon{fill:currentColor;stroke:none;inline-size:var(--star, 18px);block-size:var(--star, 18px);flex:0 0 auto}.range-pair{position:relative;display:grid;block-size:var(--tap);align-items:center}.range-pair:before{content:"";grid-area:1 / 1;block-size:6px;border-radius:var(--r-full);background:var(--ink-200)}.range-pair:after{content:"";grid-area:1 / 1;block-size:6px;border-radius:var(--r-full);background:var(--brand-500);margin-inline-start:calc(var(--lo, 0) * 1%);inline-size:calc((var(--hi, 100) - var(--lo, 0)) * 1%)}.range-pair>input[type=range]{grid-area:1 / 1;inline-size:100%;background:none;appearance:none;block-size:var(--tap);pointer-events:none;margin:0}.range-pair>input[type=range]::-webkit-slider-runnable-track{background:transparent;block-size:6px}.range-pair>input[type=range]::-moz-range-track{background:transparent;block-size:6px}.range-pair>input[type=range]::-webkit-slider-thumb{appearance:none;pointer-events:auto;margin-block-start:-8px;inline-size:22px;block-size:22px;border-radius:var(--r-full);background:var(--brand-600);border:3px solid var(--ink-0);box-shadow:var(--shadow-2);cursor:grab}.range-pair>input[type=range]::-moz-range-thumb{pointer-events:auto;inline-size:22px;block-size:22px;border-radius:var(--r-full);background:var(--brand-600);border:3px solid var(--ink-0);box-shadow:var(--shadow-2);cursor:grab}.range-pair>input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--focus);outline-offset:2px}.range-readout{display:flex;justify-content:space-between;font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--text-muted)}.range-ticks{display:flex;justify-content:space-between;font-size:var(--text-2xs);color:var(--text-faint);font-variant-numeric:tabular-nums;padding-inline:11px}.copy{display:flex;align-items:stretch;inline-size:100%;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface-2);overflow:hidden}.copy>code,.copy>.copy-value{flex:1 1 auto;min-inline-size:0;padding:var(--space-2) var(--space-3);background:none;border:0;border-radius:0;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text);overflow-x:auto;white-space:nowrap;scrollbar-width:none;direction:ltr;unicode-bidi:isolate;display:flex;align-items:center}.copy>:is(code,.copy-value)::-webkit-scrollbar{display:none}.copy-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:var(--space-2);padding-inline:var(--space-3);min-inline-size:var(--tap);background:var(--surface);border-inline-start:1px solid var(--line);color:var(--text-muted);font-size:var(--text-sm);font-weight:560;cursor:pointer;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.copy-btn:hover{background:var(--surface-hover);color:var(--text)}.copy-btn.is-copied{color:var(--good-700);background:var(--good-100)}.copy-btn .copy-done{display:none}.copy-btn.is-copied .copy-done{display:inline-flex}.copy-btn.is-copied .copy-idle{display:none}.copy-inline{display:inline-flex;align-items:center;gap:var(--space-1);color:var(--text-faint);cursor:pointer;border-radius:var(--r-xs);padding:2px}.copy-inline:hover{color:var(--brand);background:var(--surface-hover)}.copy-inline.is-copied{color:var(--good-700)}.editor{display:flex;flex-direction:column;border:1px solid var(--line-strong);border-radius:var(--r-sm);background:var(--surface);box-shadow:var(--shadow-1);overflow:clip}.editor:focus-within{border-color:var(--focus);box-shadow:var(--ring)}.editor-toolbar{display:flex;align-items:center;gap:2px;flex-wrap:wrap;padding:var(--space-1);background:var(--surface-2);border-block-end:1px solid var(--line);position:sticky;inset-block-start:0;z-index:1}.editor-tool{inline-size:32px;block-size:32px;display:grid;place-items:center;border-radius:var(--r-xs);color:var(--text-muted);cursor:pointer;font-size:var(--text-sm);font-weight:620;transition:background-color var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}.editor-tool:hover{background:var(--surface-hover);color:var(--text)}.editor-tool[aria-pressed=true]{background:var(--brand-soft);color:var(--brand-soft-text)}.editor-tool-wide{inline-size:auto;padding-inline:var(--space-2)}.editor-sep{inline-size:1px;block-size:20px;background:var(--line);margin-inline:var(--space-1)}.editor-select{block-size:32px;padding-inline:var(--space-2);border:0;border-radius:var(--r-xs);background:none;font-size:var(--text-sm);color:var(--text-muted);cursor:pointer}.editor-select:hover{background:var(--surface-hover)}.editor-content{min-block-size:var(--editor-height, 12rem);max-block-size:var(--editor-max, 30rem);overflow-y:auto;padding:var(--space-4);outline:none;line-height:var(--leading-normal)}.editor-content:empty:before{content:attr(data-placeholder);color:var(--text-faint);pointer-events:none}.editor-content>*+*{margin-block-start:var(--space-3)}.editor-content :is(h1,h2,h3){margin-block-start:var(--space-5)}.editor-content :is(ul,ol){padding-inline-start:var(--space-6)}.editor-content ul{list-style:disc}.editor-content ol{list-style:decimal}.editor-content blockquote{border-inline-start:3px solid var(--brand-300);padding-inline-start:var(--space-4);color:var(--text-muted)}.editor-content a{color:var(--brand)}.editor-content img{max-inline-size:100%;border-radius:var(--r-sm)}.editor-footer{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-block-start:1px solid var(--line);background:var(--surface-2);font-size:var(--text-xs);color:var(--text-faint)}.editor-count{margin-inline-start:auto;font-variant-numeric:tabular-nums}.editor-count.is-over{color:var(--bad-700);font-weight:620}}@layer deck.components{.video{position:relative;inline-size:100%;aspect-ratio:var(--ratio, 16 / 9);background:var(--ink-950);border-radius:var(--r-md);overflow:clip;isolation:isolate}.video>:is(video,iframe,embed,object){position:absolute;inset:0;inline-size:100%;block-size:100%;border:0;object-fit:contain}.video-cover>video{object-fit:cover}.video-square{--ratio: 1}.video-portrait{--ratio: 9 / 16}.video-wide{--ratio: 21 / 9}.video video::-webkit-media-controls-panel{background-image:none}.video video{accent-color:var(--brand-500)}.video-poster{position:absolute;inset:0;z-index:1;display:grid;place-items:center;cursor:pointer;border:0;padding:0;background:none}.video-poster img{inline-size:100%;block-size:100%;object-fit:cover}.video-poster:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,oklch(12% .02 var(--hue-neutral) / .55),transparent 60%)}.video-play{position:relative;z-index:1;inline-size:64px;block-size:64px;border-radius:var(--r-full);display:grid;place-items:center;background:color-mix(in oklab,var(--surface) 90%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);color:var(--text);box-shadow:var(--shadow-3);transition:scale var(--dur-2) var(--ease-spring),background-color var(--dur-1) var(--ease-out)}.video-poster:hover .video-play{scale:1.08;background:var(--surface)}.video-meta{position:absolute;inset-block-end:var(--space-3);inset-inline-start:var(--space-3);z-index:2;display:flex;gap:var(--space-2);color:#f8f8f8;font-size:var(--text-xs);text-shadow:0 1px 3px oklch(0% 0 0 / .6)}.video-duration{padding:2px 6px;border-radius:var(--r-xs);background:#060606b8;font-variant-numeric:tabular-nums}.masonry{columns:var(--cols, 1);column-gap:var(--gap, var(--space-3))}@media(min-width:30rem){.masonry{--cols: 2}}@media(min-width:48rem){.masonry{--cols: 3}}@media(min-width:72rem){.masonry{--cols: 4}}.masonry-2{--cols: 2}.masonry-3{--cols: 3}.masonry>*{break-inside:avoid;margin-block-end:var(--gap, var(--space-3));border-radius:var(--r-md);overflow:clip;display:block}.masonry img{inline-size:100%;block-size:auto;display:block}@supports (grid-template-rows: masonry){.masonry{columns:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(14rem,100%),1fr));grid-template-rows:masonry;gap:var(--gap, var(--space-3))}.masonry>*{margin-block-end:0}}.gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(9rem,100%),1fr));gap:var(--space-2)}.gallery>*{aspect-ratio:1;border-radius:var(--r-sm);overflow:clip;position:relative}.gallery img{inline-size:100%;block-size:100%;object-fit:cover;transition:scale var(--dur-3) var(--ease-out)}.gallery a:hover img{scale:1.05}.gallery .span-2{grid-column:span 2;grid-row:span 2;aspect-ratio:1}.gallery .span-wide{grid-column:span 2;aspect-ratio:2}.lazy{position:relative;display:block;background:var(--bg-sunken);overflow:clip;aspect-ratio:var(--ratio, 3 / 2)}.lazy>img{inline-size:100%;block-size:100%;object-fit:cover;opacity:0;transition:opacity var(--dur-3) var(--ease-out)}.lazy>img.is-loaded,.lazy>img[data-loaded]{opacity:1}.lazy:after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,color-mix(in oklab,var(--ink-300) 40%,transparent) 45%,transparent 70%);background-size:250% 100%;background-repeat:no-repeat;animation:dk-shimmer 1.6s var(--ease-in-out) infinite;pointer-events:none}.lazy:has(img.is-loaded):after,.lazy:has(img[data-loaded]):after{display:none}.lazy-blur{background-size:cover;background-position:center}.lazy-blur:before{content:"";position:absolute;inset:-8px;background:inherit;filter:blur(14px);transition:opacity var(--dur-3) var(--ease-out)}.lazy-blur:has(img.is-loaded):before{opacity:0}.lazy-block{display:grid;place-items:center;min-block-size:8rem;border:1px dashed var(--line);border-radius:var(--r-md);color:var(--text-faint);gap:var(--space-2)}.chat{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4);overflow-y:auto;overscroll-behavior:contain}.chat-day{align-self:center;margin-block:var(--space-4) var(--space-2);padding:var(--space-1) var(--space-3);border-radius:var(--r-full);background:var(--surface-2);color:var(--text-faint);font-size:var(--text-xs);font-weight:560}.msg{display:flex;gap:var(--space-2);align-items:flex-end;max-inline-size:min(80%,34rem);align-self:flex-start}.msg-out{align-self:flex-end;flex-direction:row-reverse}.bubble{position:relative;padding:var(--space-2) var(--space-3);border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line);font-size:var(--text-sm);line-height:1.45;overflow-wrap:anywhere;border-end-start-radius:var(--r-xs)}.msg-out .bubble{background:var(--brand-600);color:var(--text-on-brand);border-color:transparent;border-end-start-radius:var(--r-md);border-end-end-radius:var(--r-xs)}.msg:not(:last-of-type)+.msg .bubble{border-start-start-radius:var(--r-xs)}.msg-out:not(:last-of-type)+.msg-out .bubble{border-start-end-radius:var(--r-xs)}.bubble-meta{display:flex;align-items:center;gap:var(--space-1);margin-block-start:2px;font-size:var(--text-2xs);opacity:.7;justify-content:flex-end;font-variant-numeric:tabular-nums}.msg:not(.msg-out) .bubble-meta{justify-content:flex-start}.bubble-name{font-weight:620;font-size:var(--text-xs);margin-block-end:2px;color:var(--brand)}.msg-out .bubble-name{color:inherit}.bubble-attachment{margin:calc(var(--space-2) * -1) calc(var(--space-3) * -1) var(--space-2);border-start-start-radius:var(--r-md);border-start-end-radius:var(--r-md);overflow:clip}.bubble-attachment img{inline-size:100%;display:block}.msg .avatar{--size: 28px;align-self:flex-end;margin-block-end:2px}.msg:not(:last-of-type)+.msg .avatar{visibility:hidden}.bubble-system{align-self:center;background:none;border:0;color:var(--text-faint);font-size:var(--text-xs);text-align:center;max-inline-size:42ch}.bubble-typing{display:inline-flex;gap:4px;padding-block:var(--space-3)}.bubble-typing>span{inline-size:6px;block-size:6px;border-radius:var(--r-full);background:var(--text-faint)}@media(prefers-reduced-motion:no-preference){.bubble-typing>span{animation:dk-typing 1.2s var(--ease-in-out) infinite}.bubble-typing>span:nth-child(2){animation-delay:.16s}.bubble-typing>span:nth-child(3){animation-delay:.32s}@keyframes dk-typing{0%,60%,to{translate:0 0;opacity:.45}30%{translate:0 -4px;opacity:1}}}.chat-composer{display:flex;align-items:flex-end;gap:var(--space-2);padding:var(--space-3) var(--space-4);padding-block-end:max(var(--space-3),env(safe-area-inset-bottom));border-block-start:1px solid var(--line);background:var(--surface)}.chat-composer .textarea{min-block-size:var(--control-h);max-block-size:8rem;field-sizing:content;border-radius:var(--r-lg);resize:none}.qr{display:inline-grid;place-items:center;padding:var(--qr-quiet, 12px);background:var(--qr-bg, #fff);border-radius:var(--r-sm);border:1px solid var(--line);inline-size:fit-content;-webkit-print-color-adjust:exact;print-color-adjust:exact}.qr svg{display:block;inline-size:var(--qr-size, 160px);block-size:var(--qr-size, 160px)}.qr svg rect{fill:var(--qr-fg, #000);shape-rendering:crispEdges}.qr-lg{--qr-size: 240px}.qr-sm{--qr-size: 104px}.qr-logo{position:relative}.qr-logo>.qr-logo-mark{position:absolute;inset:50%;translate:-50% -50%;inline-size:22%;block-size:22%;display:grid;place-items:center;background:var(--qr-bg, #fff);border-radius:var(--r-xs);padding:4px}.qr-caption{margin-block-start:var(--space-2);font-size:var(--text-xs);color:var(--text-muted);text-align:center;max-inline-size:var(--qr-size, 160px);overflow-wrap:anywhere}}@layer deck.print{@media print{.qr{border:0;break-inside:avoid}.video,.chat-composer,.carousel-arrow,.carousel-dots,.speed-dial,.drawer,.mega,.banner{display:none!important}.masonry{columns:2}.chat{overflow:visible;max-block-size:none}.msg{break-inside:avoid}.bubble{border:1px solid #bbb!important;background:#fff!important;color:#000!important}.msg-out .bubble{background:#f2f2f2!important}.lazy:after{display:none!important}.editor-toolbar,.editor-footer{display:none!important}.editor-content{max-block-size:none!important;overflow:visible!important}}}@layer deck.components{@supports (anchor-name: --a){.anchor{anchor-name:var(--anchor)}.menu,.mega,.datepicker{position-anchor:var(--anchor);position-area:block-end span-inline-end;position-try-fallbacks:block-end span-inline-start,block-start span-inline-end,block-start span-inline-start,flip-block,flip-inline;position-try-order:most-block-size;margin-block:var(--space-2);max-block-size:calc(100dvh - var(--space-8));max-inline-size:calc(100vw - var(--space-6));inset:auto}.menu{min-inline-size:max(12rem,anchor-size(inline))}.mega{position-area:block-end;justify-self:anchor-center}.menu-match{inline-size:anchor-size(inline);min-inline-size:0}.combo-control{anchor-name:var(--anchor, --combo)}.combo-list{position-anchor:var(--anchor, --combo);position-area:block-end;position-try-fallbacks:flip-block;inline-size:anchor-size(inline);inset:auto;margin-block:4px}.combo-list.is-above{inset:auto}.tip{position:fixed;position-anchor:var(--anchor);position-area:block-start;position-try-fallbacks:flip-block,flip-inline;justify-self:anchor-center;margin:var(--space-2);inline-size:max-content;max-inline-size:16rem;padding:var(--space-2) var(--space-3);border:0;border-radius:var(--r-xs);background:var(--ink-900);color:var(--ink-50);font-size:var(--text-xs);line-height:1.4;box-shadow:var(--shadow-3);opacity:0;transition:opacity var(--dur-2) var(--ease-out),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.tip:popover-open{opacity:1}@starting-style{.tip:popover-open{opacity:0}}.tip::backdrop{background:transparent}.tip-arrow{position:absolute;inline-size:8px;block-size:8px;rotate:45deg;background:inherit;position-anchor:var(--anchor);justify-self:anchor-center}.pop{position:fixed;position-anchor:var(--anchor);position-area:block-end;position-try-fallbacks:flip-block,flip-inline,block-start span-inline-start;justify-self:anchor-center;margin:var(--space-2);inline-size:min(20rem,calc(100vw - var(--space-6)));padding:var(--space-4);background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);opacity:0;translate:0 -4px;transition:opacity var(--dur-2) var(--ease-out),translate var(--dur-2) var(--ease-out),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.pop:popover-open{opacity:1;translate:0}@starting-style{.pop:popover-open{opacity:0;translate:0 -4px}}.pop::backdrop{background:transparent}.pop-title{font-weight:620;margin-block-end:var(--space-1)}.pop-body{font-size:var(--text-sm);color:var(--text-muted)}.pop-actions{display:flex;gap:var(--space-2);margin-block-start:var(--space-3)}.menu,.mega,.tip,.pop,.datepicker,.combo-list{position-visibility:anchors-visible}}@supports not (anchor-name: --a){.tip,.pop{position:fixed;inset:auto;margin:0;inline-size:max-content;max-inline-size:16rem;border:0;border-radius:var(--r-xs);background:var(--ink-900);color:var(--ink-50);font-size:var(--text-xs);padding:var(--space-2) var(--space-3);box-shadow:var(--shadow-3);opacity:0;transition:opacity var(--dur-2) var(--ease-out),overlay var(--dur-2) allow-discrete,display var(--dur-2) allow-discrete}.pop{inline-size:min(20rem,calc(100vw - var(--space-6)));max-inline-size:none;background:var(--surface);color:var(--text);border:1px solid var(--line);border-radius:var(--r-md);box-shadow:var(--shadow-4);padding:var(--space-4)}.tip:popover-open,.pop:popover-open{opacity:1}@starting-style{.tip:popover-open,.pop:popover-open{opacity:0}}.tip::backdrop,.pop::backdrop{background:transparent}.tip-arrow{position:absolute;inline-size:8px;block-size:8px;rotate:45deg;background:inherit}}}@layer deck.components{.dg-virtual tbody tr{content-visibility:auto;contain-intrinsic-size:auto var(--dg-row-h, 44px)}.dg-virtual.dg-compact tbody tr{contain-intrinsic-size:auto 34px}.dg-virtual.dg-comfy tbody tr{contain-intrinsic-size:auto 56px}.list-virtual>.list-row{content-visibility:auto;contain-intrinsic-size:auto 56px}.virtual>*{content-visibility:auto;contain-intrinsic-size:auto var(--item-size, 120px)}.virtual-sm>*{--item-size: 64px}.virtual-lg>*{--item-size: 220px}.defer{content-visibility:auto;contain-intrinsic-size:auto 600px}@media print{.dg-virtual tbody tr,.list-virtual>.list-row,.virtual>*,.defer{content-visibility:visible!important;contain-intrinsic-size:none!important}}.contain{contain:layout style}.contain-paint{contain:layout style paint}.card,.panel,.list,.dg-wrap,.chart{contain:layout style}.sortable{position:relative}.sortable [draggable=true],.drag-handle{cursor:grab;touch-action:none}.sortable [draggable=true]:active,.drag-handle:active{cursor:grabbing}.drag-handle{display:grid;place-items:center;inline-size:28px;min-block-size:var(--tap);color:var(--text-faint);flex:0 0 auto;opacity:0;transition:opacity var(--dur-1) var(--ease-out),color var(--dur-1) var(--ease-out)}:is(.list-row,.dg tbody tr,.kanban-card):is(:hover,:focus-within) .drag-handle{opacity:1}.drag-handle:hover{color:var(--text)}@media(pointer:coarse){.drag-handle{opacity:1}}.sortable-drag{opacity:1!important;box-shadow:var(--shadow-4);rotate:1.5deg;scale:1.02;cursor:grabbing}.sortable-ghost{opacity:.4;background:var(--brand-soft)!important;outline:2px dashed var(--brand-400);outline-offset:-2px}.sortable-ghost>*{visibility:hidden}.sortable-chosen{background:var(--surface-hover)}.sortable-fallback{opacity:.9}.drop-target{outline:2px dashed var(--brand-400);outline-offset:3px;border-radius:var(--r-md);background:color-mix(in oklab,var(--brand-soft) 55%,transparent)}.drop-reject{outline-color:var(--bad-500);background:color-mix(in oklab,var(--bad-100) 55%,transparent)}.kanban{display:flex;gap:var(--space-4);overflow-x:auto;overscroll-behavior-inline:contain;padding-block-end:var(--space-3);align-items:flex-start;scroll-snap-type:x proximity}.kanban-col{flex:0 0 min(19rem,82vw);scroll-snap-align:start;display:flex;flex-direction:column;max-block-size:var(--kanban-height, 70dvh);background:var(--bg-sunken);border:1px solid var(--line);border-radius:var(--r-md)}.kanban-head{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-block-end:1px solid var(--line);font-size:var(--text-sm);font-weight:620;position:sticky;inset-block-start:0;background:inherit;border-start-start-radius:var(--r-md);border-start-end-radius:var(--r-md);z-index:1}.kanban-count{margin-inline-start:auto;font-size:var(--text-xs);font-weight:600;color:var(--text-muted);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-full);padding:1px 7px;font-variant-numeric:tabular-nums}.kanban-body{flex:1 1 auto;overflow-y:auto;overscroll-behavior:contain;padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-3);min-block-size:5rem}.kanban-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:var(--space-3);box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:var(--space-2);content-visibility:auto;contain-intrinsic-size:auto 110px}.kanban-card:hover{box-shadow:var(--shadow-2)}.kanban-card-title{font-size:var(--text-sm);font-weight:580}.kanban-card-meta{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--text-muted)}.kanban-empty{border:1px dashed var(--line-strong);border-radius:var(--r-sm);padding:var(--space-5);text-align:center;color:var(--text-faint);font-size:var(--text-sm)}.kanban-col:has(.kanban-card) .kanban-empty{display:none}.reorder .list-row{-webkit-user-select:none;user-select:none}.reorder .list-row.is-lifted{box-shadow:var(--shadow-3);background:var(--surface);border-radius:var(--r-sm);z-index:2;position:relative}@media(prefers-reduced-motion:reduce){.sortable-drag{rotate:none;scale:1}}}@layer deck.print{@page{size:letter;margin:16mm 14mm}@page :first{margin-block-start:12mm}@media print{:root{color-scheme:light only;--bg: #fff;--bg-sunken: #fff;--surface: #fff;--surface-2: #fff;--surface-hover: #fff;--text: #000;--text-muted: #333;--text-faint: #555;--line: #bbb;--line-strong: #888;--shadow-1: none;--shadow-2: none;--shadow-3: none;--shadow-4: none;--shadow-inset: none}html,body{background:#fff!important;color:#000!important;font-size:10.5pt;line-height:1.4}body{padding-block-end:0!important}*{box-shadow:none!important;text-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;animation:none!important;transition:none!important}.badge,.chip,.chart-col,.chart-col-stack>span,.chart-bar-fill,.chart-meter>span,.donut,.icon-tile,.avatar,.chart-heat>*{-webkit-print-color-adjust:exact;print-color-adjust:exact}.tabbar,.fab,.speed-dial,.back-to-top,.toast-region,.skip-link,.theme-dock,.navbar-links,.sidebar,.datepicker,.combo-list,.menu,.dg-toolbar,.dg-resize,.sheet-grip,.no-print,.pagination,.segmented,.tabs,.scroller::-webkit-scrollbar{display:none!important}dialog:not([open]){display:none!important}dialog[open]{position:static!important;display:block!important;max-block-size:none!important;inline-size:auto!important;border:0!important}dialog::backdrop{display:none!important}.container,.container-sm,.container-md,.container-lg,.container-xl{max-inline-size:none!important;padding-inline:0!important}.section{padding-block:0 0 8mm!important}.split,.grid{display:block!important}.grid>*+*{margin-block-start:4mm}.sticky-top,.sticky,.form-actions-sticky{position:static!important}.card,.panel,.list,.table-wrap,.dg-wrap,.alert,.fieldset{border:1px solid #bbb!important;border-radius:0!important;background:#fff!important;break-inside:avoid;max-block-size:none!important;overflow:visible!important}.card-footer,.list-header,.dg thead th,.table thead th{background:#f2f2f2!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}h1,.h1{font-size:20pt}h2,.h2{font-size:15pt}h3,.h3{font-size:12.5pt}h4,.h4,h5,.h5,h6,.h6{font-size:11pt}.display{font-size:22pt}.lede{font-size:11pt;color:#333!important}h1,h2,h3,h4,h5,h6{break-after:avoid;page-break-after:avoid}p,blockquote,li,figure,.stat,.timeline-item{break-inside:avoid}.prose{max-inline-size:none}a{color:#000!important;text-decoration:underline}a[href^=http]:after{content:" (" attr(href) ")";font-size:8.5pt;color:#555;word-break:break-all}a[href^="#"]:after,a[href^="javascript:"]:after,.btn:after,.no-print-url:after{content:""}abbr[title]:after{content:" (" attr(title) ")";font-size:8.5pt}.table,.dg{inline-size:100%!important;font-size:9.5pt}.table thead,.dg thead{display:table-header-group}.dg tfoot,.table tfoot{display:table-footer-group}.table tr,.dg tr{break-inside:avoid;page-break-inside:avoid}.dg :is(th,td){position:static!important;block-size:auto!important;padding:4pt 6pt!important;white-space:normal!important;clip-path:none!important;border-block-end:1px solid #ddd!important}.dg-wrap{max-block-size:none!important;overflow:visible!important}.table-stack thead,.dg-cards thead{position:static!important;inline-size:auto!important;block-size:auto!important;clip-path:none!important;display:table-header-group!important;overflow:visible!important}.table-stack,.dg-cards{display:table!important}.table-stack tbody,.dg-cards tbody{display:table-row-group!important}.table-stack tr,.dg-cards tr{display:table-row!important;margin:0!important;border-radius:0!important}.table-stack td,.dg-cards td{display:table-cell!important;text-align:start!important}.table-stack td:before,.dg-cards td:before{content:none!important}.input,.textarea,.select,.combo-control{border:1px solid #999!important;background:#fff!important;min-block-size:auto!important}.textarea{max-block-size:none!important;block-size:auto!important}.select{background-image:none!important;padding-inline-end:var(--space-3)!important}.btn,.form-actions{display:none!important}.btn.print-keep{display:inline-flex!important;border:1px solid #999!important}.check input[type=checkbox],.check input[type=radio]{-webkit-print-color-adjust:exact;print-color-adjust:exact;border:1px solid #000!important;background:#fff!important}.check input:checked{background:#000!important;border-color:#000!important}.switch input{border:1px solid #000!important}.chart,.chart-columns,.chart-svg{break-inside:avoid}.chart-col[data-value]:before{display:none!important}.chart-columns{background-image:none!important;border-block-end:1px solid #999}.page-break{break-before:page;page-break-before:always}.page-break-after{break-after:page;page-break-after:always}.keep-together{break-inside:avoid;page-break-inside:avoid}.print-only{display:revert!important}.print-header{position:fixed;inset-block-start:0;inset-inline:0}.print-footer{position:fixed;inset-block-end:0;inset-inline:0;font-size:8.5pt;color:#555}}.print-only{display:none}}
|
package/dist/deck.min.js
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*! ==========================================================================
|
|
2
|
+
* deck.js v0.1 — behaviour for Deck
|
|
3
|
+
* No dependencies. No build step. Drop it in and it wires itself up.
|
|
4
|
+
*
|
|
5
|
+
* <script src="/assets/deck/deck.js" defer><\/script>
|
|
6
|
+
*
|
|
7
|
+
* deck-icons.svg is expected to sit beside this file.
|
|
8
|
+
*
|
|
9
|
+
* Anything with a data-deck-* attribute is initialised on DOMContentLoaded
|
|
10
|
+
* and again whenever you call Deck.init(container) after injecting HTML.
|
|
11
|
+
* ======================================================================== */const Deck=(()=>{"use strict";const P=(()=>{const e=typeof document<"u"?document.currentScript:null;if(e&&e.dataset.deckIcons)return e.dataset.deckIcons;if(e&&e.src)try{return new URL("deck-icons.svg",e.src).href}catch{}return"/assets/deck-icons.svg"})(),h=(e,t=document)=>t.querySelector(e),c=(e,t=document)=>Array.from(t.querySelectorAll(e)),f=(e,t,s)=>{const i=document.createElement(e);return t&&(i.className=t),s!=null&&(i.innerHTML=s),i},p=(e,t="icon")=>`<svg class="${t}" aria-hidden="true"><use href="${g.iconSprite}#${e}"></use></svg>`,A=864e5,y=e=>`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,"0")}-${String(e.getDate()).padStart(2,"0")}`,v=e=>{if(!e)return null;const[t,s,i]=e.split("-").map(Number);return t&&s&&i?new Date(t,s-1,i):null},w=(e,t)=>e&&t&&e.toDateString()===t.toDateString(),E=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),$=(e,t)=>new Date(e.getFullYear(),e.getMonth()+t,1),x=new Map;function S(e){const t=e||"auto";if(x.has(t))return x.get(t);const s=e||document.documentElement.lang||navigator.language||"en",i=new Intl.DateTimeFormat(s,{month:"long"}),n=new Intl.DateTimeFormat(s,{month:"short"}),a=new Intl.DateTimeFormat(s,{weekday:"short"}),o={locale:s,months:Array.from({length:12},(r,d)=>i.format(new Date(2021,d,1))),monthsShort:Array.from({length:12},(r,d)=>n.format(new Date(2021,d,1))),days:Array.from({length:7},(r,d)=>a.format(new Date(2021,7,1+d))),weekStart:(()=>{try{const r=new Intl.Locale(s).getWeekInfo?.()||new Intl.Locale(s).weekInfo;return r?r.firstDay===7?0:r.firstDay:0}catch{return 0}})(),long:new Intl.DateTimeFormat(s,{dateStyle:"medium"}),full:new Intl.DateTimeFormat(s,{dateStyle:"full"})};return x.set(t,o),o}function T(e,t,s){if(!e)return"";if(t==="iso")return y(e);if(t==="long")return S(s).long.format(e);const i=e.getFullYear(),n=e.getMonth()+1,a=e.getDate(),o=r=>String(r).padStart(2,"0");return t==="dmy"?`${o(a)}/${o(n)}/${i}`:t==="ymd"?`${i}-${o(n)}-${o(a)}`:`${o(n)}/${o(a)}/${i}`}class W{constructor(t){this.root=t,this.input=h("input",t),this.mode=t.dataset.mode||"single",this.format=t.dataset.format||"mdy",this.min=v(t.dataset.min),this.max=v(t.dataset.max),this.showPresets=t.hasAttribute("data-presets"),this.locale=t.dataset.locale||null,this.i18n=S(this.locale),this.weekStart=t.dataset.weekStart!=null?Number(t.dataset.weekStart):this.i18n.weekStart,this.months=Number(t.dataset.months||(this.mode==="range"?2:1)),this.start=v(this.input.value)||null,this.end=null,this.view=E(this.start||new Date),this.view.setDate(1),this.jump=null,this.build(),this.bind(),this.render()}build(){const t=this.root;h(".icon",t)||t.insertAdjacentHTML("afterbegin",p("calendar")),h(".datefield-clear",t)||t.insertAdjacentHTML("beforeend",`<button type="button" class="datefield-clear" aria-label="Clear date">${p("x","icon icon-sm")}</button>`),this.input.readOnly=!0,this.input.setAttribute("aria-haspopup","dialog"),this.id="dp-"+Math.random().toString(36).slice(2,8),this.panel=f("div","datepicker"),this.panel.id=this.id,this.panel.setAttribute("popover",""),document.body.append(this.panel),this.input.setAttribute("popovertarget",this.id),this.input.style.cursor="pointer"}bind(){this.input.addEventListener("click",()=>this.panel.showPopover()),this.input.addEventListener("keydown",t=>{(t.key==="Enter"||t.key===" "||t.key==="ArrowDown")&&(t.preventDefault(),this.panel.showPopover())}),h(".datefield-clear",this.root).addEventListener("click",t=>{t.stopPropagation(),this.start=this.end=null,this.commit(),this.render()}),this.panel.addEventListener("toggle",t=>{t.newState==="open"&&this.position()}),this.panel.addEventListener("click",t=>this.onClick(t)),this.panel.addEventListener("mouseover",t=>{const s=t.target.closest(".datepicker-day");this.mode!=="range"||!this.start||this.end||!s||(this.hover=v(s.dataset.date),this.paintRange())}),window.addEventListener("resize",()=>{this.panel.matches(":popover-open")&&this.position()})}position(){if(CSS.supports("anchor-name: --a")||window.innerWidth<=480)return;const t=this.root.getBoundingClientRect(),s=this.panel;s.style.insetInlineStart=Math.max(8,Math.min(t.left,window.innerWidth-s.offsetWidth-8))+"px";const i=window.innerHeight-t.bottom;s.style.insetBlockStart=i>s.offsetHeight+12||i>t.top?t.bottom+6+"px":Math.max(8,t.top-s.offsetHeight-6)+"px"}blocked(t){return this.min&&t<this.min||this.max&&t>this.max}onClick(t){const s=t.target.closest(".datepicker-day");if(s)return this.pick(v(s.dataset.date));const i=t.target.closest("[data-nav]");if(i)return this.view=$(this.view,Number(i.dataset.nav)),this.render();if(t.target.closest(".datepicker-title"))return this.jump=this.jump?null:"month",this.render();const a=t.target.closest("[data-month]");if(a)return this.view=new Date(this.view.getFullYear(),Number(a.dataset.month),1),this.jump=null,this.render();const o=t.target.closest("[data-preset]");if(o){const r=Number(o.dataset.preset),d=E(new Date);this.mode==="range"?(this.end=d,this.start=r===0?d:new Date(d-(r-1)*A)):(this.start=new Date(d-r*A),this.end=null),this.commit(),this.render(),this.mode!=="range"&&this.panel.hidePopover();return}t.target.closest("[data-apply]")&&(this.commit(),this.panel.hidePopover()),t.target.closest("[data-cancel]")&&this.panel.hidePopover()}pick(t){!t||this.blocked(t)||(this.mode==="range"?!this.start||this.end?(this.start=t,this.end=null):t<this.start?(this.end=this.start,this.start=t):this.end=t:(this.start=t,this.end=null),this.commit(),this.render(),(this.mode!=="range"||this.end)&&setTimeout(()=>this.panel.hidePopover(),120))}commit(){const t=s=>T(s,this.format,this.locale);this.input.value=this.mode==="range"?this.start?t(this.start)+(this.end?" \u2013 "+t(this.end):""):"":t(this.start),this.root.classList.toggle("has-value",!!this.input.value),this.input.dispatchEvent(new CustomEvent("deck:change",{bubbles:!0,detail:{start:this.start?y(this.start):null,end:this.end?y(this.end):null}}))}monthHTML(t){const s=new Date(t.getFullYear(),t.getMonth(),1);let i=(s.getDay()-this.weekStart+7)%7;const n=[],a=new Date(s);a.setDate(1-i);for(let l=0;l<42&&(n.push(new Date(a)),a.setDate(a.getDate()+1),!(l>=34&&a.getMonth()!==t.getMonth()&&a.getDay()===this.weekStart));l++);const o=this.i18n.days,r=o.slice(this.weekStart).concat(o.slice(0,this.weekStart)),d=E(new Date);return`<div class="datepicker-month">
|
|
12
|
+
<div class="datepicker-grid">${r.map(l=>`<div class="datepicker-dow">${l}</div>`).join("")}</div>
|
|
13
|
+
<div class="datepicker-grid">${n.map(l=>{const m=["datepicker-day"];return l.getMonth()!==t.getMonth()&&m.push("is-outside"),w(l,d)&&m.push("is-today"),this.blocked(l)&&m.push("is-blocked"),`<button type="button" class="${m.join(" ")}" data-date="${y(l)}"
|
|
14
|
+
${this.blocked(l)?"disabled":""}
|
|
15
|
+
aria-label="${this.i18n.full.format(l)}">${l.getDate()}</button>`}).join("")}</div>
|
|
16
|
+
</div>`}render(){const t=this.showPresets?`
|
|
17
|
+
<div class="datepicker-presets">
|
|
18
|
+
${(this.mode==="range"?[["Today",0],["Last 7 days",7],["Last 30 days",30],["Last 90 days",90]]:[["Today",0],["Yesterday",1],["A week ago",7],["A month ago",30]]).map(([o,r])=>`<button type="button" class="datepicker-preset" data-preset="${r}">${o}</button>`).join("")}
|
|
19
|
+
</div>`:"",s=this.jump?`<div class="datepicker-jump">${this.i18n.monthsShort.map((o,r)=>`<button type="button" data-month="${r}" aria-selected="${r===this.view.getMonth()}">${o}</button>`).join("")}</div>`:`<div class="datepicker-months">${Array.from({length:this.months},(o,r)=>this.monthHTML($(this.view,r))).join("")}</div>`,i=this.months>1&&!this.jump?`${this.i18n.monthsShort[this.view.getMonth()]} \u2013 ${this.i18n.monthsShort[$(this.view,this.months-1).getMonth()]} ${this.view.getFullYear()}`:`${this.i18n.months[this.view.getMonth()]} ${this.view.getFullYear()}`,n=o=>T(o,this.format,this.locale),a=this.mode==="range"?this.start?`${n(this.start)} \u2013 ${this.end?n(this.end):"\u2026"}`:"Pick a start date":this.start?n(this.start):"No date selected";this.panel.innerHTML=`
|
|
20
|
+
<div class="datepicker-layout">
|
|
21
|
+
${t}
|
|
22
|
+
<div class="datepicker-main">
|
|
23
|
+
<div class="datepicker-head">
|
|
24
|
+
<button type="button" class="datepicker-nav" data-nav="-1" aria-label="Previous month">${p("chevron-left","icon icon-sm")}</button>
|
|
25
|
+
<button type="button" class="datepicker-title">${i} ${p("chevron-down","icon icon-sm")}</button>
|
|
26
|
+
<button type="button" class="datepicker-nav" data-nav="1" aria-label="Next month">${p("chevron-right","icon icon-sm")}</button>
|
|
27
|
+
</div>
|
|
28
|
+
${s}
|
|
29
|
+
</div>
|
|
30
|
+
</div>
|
|
31
|
+
<div class="datepicker-foot">
|
|
32
|
+
<span class="datepicker-readout">${a}</span>
|
|
33
|
+
<button type="button" class="btn btn-sm" data-cancel>Cancel</button>
|
|
34
|
+
<button type="button" class="btn btn-sm btn-primary" data-apply>Apply</button>
|
|
35
|
+
</div>`,this.paintRange(),this.root.classList.toggle("has-value",!!this.input.value)}paintRange(){c(".datepicker-day",this.panel).forEach(t=>{const s=v(t.dataset.date),i=this.end||(this.mode==="range"&&this.start&&this.hover>this.start?this.hover:null);t.classList.toggle("is-selected",w(s,this.start)||w(s,this.end)),t.classList.toggle("is-range-start",!!i&&w(s,this.start)),t.classList.toggle("is-range-end",!!i&&w(s,i)),t.classList.toggle("is-in-range",!!(i&&this.start&&s>this.start&&s<i))})}}class I{constructor(t){this.root=t,this.select=h("select",t),this.multi=t.hasAttribute("data-multi")||this.select&&this.select.multiple,this.allowCreate=t.hasAttribute("data-create"),this.placeholder=t.dataset.placeholder||"Search",this.remote=t.dataset.url||null,this.minChars=Number(t.dataset.minChars||0),this.open=!1,this.activeIndex=-1,this.query="",this.options=this.select?c("option",this.select).map(s=>({value:s.value,label:s.textContent.trim(),sub:s.dataset.sub||"",group:s.dataset.group||(s.parentElement.tagName==="OPTGROUP"?s.parentElement.label:""),disabled:s.disabled,selected:s.selected})):[],this.select&&(this.select.hidden=!0),this.build(),this.bind(),this.renderTokens()}get selected(){return this.options.filter(t=>t.selected)}build(){this.control=f("div","combo-control"),this.control.innerHTML=`
|
|
36
|
+
<span class="combo-tokens"></span>
|
|
37
|
+
<input class="combo-input" type="text" role="combobox" autocomplete="off"
|
|
38
|
+
aria-expanded="false" aria-autocomplete="list" placeholder="${this.placeholder}">
|
|
39
|
+
<button type="button" class="combo-toggle" tabindex="-1" aria-label="Toggle list">${p("chevron-down","icon icon-sm")}</button>`,this.list=f("div","combo-list"),this.list.setAttribute("role","listbox"),this.root.append(this.control,this.list),this.input=h(".combo-input",this.control),this.tokens=h(".combo-tokens",this.control)}bind(){this.control.addEventListener("mousedown",t=>{t.target.closest(".combo-token > button")||(t.target!==this.input&&(t.preventDefault(),this.input.focus()),t.target.closest(".combo-toggle")?this.toggle():this.open||this.show())}),this.input.addEventListener("input",()=>{this.query=this.input.value,this.activeIndex=0,this.remote?this.fetch():this.render(),this.show()}),this.input.addEventListener("keydown",t=>this.onKey(t)),this.input.addEventListener("blur",()=>setTimeout(()=>this.hide(),130)),this.list.addEventListener("mousedown",t=>{const s=t.target.closest(".combo-option");s&&(t.preventDefault(),s.dataset.create!=null?this.create(this.query):this.choose(s.dataset.value))}),this.list.addEventListener("mousemove",t=>{const s=t.target.closest(".combo-option");s&&(this.activeIndex=Number(s.dataset.index),this.paintActive())}),this.tokens.addEventListener("click",t=>{const s=t.target.closest("button");s&&this.choose(s.dataset.value,!0)})}matches(){const t=this.query.trim().toLowerCase();return t.length<this.minChars?[]:t?this.options.filter(s=>s.label.toLowerCase().includes(t)||s.sub.toLowerCase().includes(t)||s.value.toLowerCase().includes(t)):this.options}render(){const t=this.matches();if(this.visible=t,!t.length){this.list.innerHTML=this.allowCreate&&this.query.trim()?`<button type="button" class="combo-option" data-create data-index="0">${p("plus","icon icon-sm")}
|
|
40
|
+
<span class="combo-option-main"><span>Add \u201C${u(this.query.trim())}\u201D</span></span></button>`:`<div class="combo-empty">${p("search","icon icon-sm")} No matches for \u201C${u(this.query)}\u201D</div>`;return}let s="",i=null;t.forEach((n,a)=>{n.group&&n.group!==i&&(i=n.group,s+=`<div class="combo-group">${u(i)}</div>`),s+=`<button type="button" class="combo-option" role="option" data-index="${a}"
|
|
41
|
+
data-value="${u(n.value)}"
|
|
42
|
+
aria-selected="${n.selected}" ${n.disabled?'aria-disabled="true"':""}>
|
|
43
|
+
<span class="combo-option-main">
|
|
44
|
+
<span>${D(n.label,this.query)}</span>
|
|
45
|
+
${n.sub?`<span class="combo-option-sub">${D(n.sub,this.query)}</span>`:""}
|
|
46
|
+
</span>
|
|
47
|
+
${this.multi?`<span class="combo-check">${p("check","icon icon-sm")}</span>`:""}
|
|
48
|
+
</button>`}),this.allowCreate&&this.query.trim()&&!t.some(n=>n.label.toLowerCase()===this.query.trim().toLowerCase())&&(s+=`<div class="combo-create"><button type="button" class="combo-option" data-create data-index="${t.length}">
|
|
49
|
+
${p("plus","icon icon-sm")}<span class="combo-option-main"><span>Add \u201C${u(this.query.trim())}\u201D</span></span></button></div>`),s+='<div class="combo-hint"><span><kbd>\u2191</kbd><kbd>\u2193</kbd> move</span><span><kbd>enter</kbd> select</span><span><kbd>esc</kbd> close</span></div>',this.list.innerHTML=s,this.paintActive()}paintActive(){const t=c(".combo-option",this.list);t.forEach(i=>i.classList.remove("is-active"));const s=t[this.activeIndex];s&&(s.classList.add("is-active"),s.scrollIntoView({block:"nearest"}))}onKey(t){const s=c(".combo-option",this.list);if(t.key==="ArrowDown"||t.key==="ArrowUp"){t.preventDefault(),this.open||this.show();const i=t.key==="ArrowDown"?1:-1;this.activeIndex=(this.activeIndex+i+s.length)%(s.length||1),this.paintActive()}else if(t.key==="Enter"){if(!this.open)return;t.preventDefault();const i=s[this.activeIndex];if(!i)return;i.dataset.create!=null?this.create(this.query):this.choose(i.dataset.value)}else if(t.key==="Escape")this.open&&(t.stopPropagation(),this.hide());else if(t.key==="Backspace"&&!this.input.value&&this.multi){const i=this.selected.at(-1);i&&this.choose(i.value,!0)}}choose(t,s){const i=this.options.find(n=>n.value===t);!i||i.disabled||(this.multi?i.selected=s?!1:!i.selected:(this.options.forEach(n=>{n.selected=!1}),i.selected=!0,this.input.value=i.label,this.query="",this.hide()),this.multi&&(this.input.value="",this.query=""),this.sync(),this.renderTokens(),this.render())}create(t){const s=t.trim();if(!s)return;const i={value:s,label:s,sub:"",group:"",disabled:!1,selected:!1};this.options.push(i),this.select&&this.select.append(new Option(s,s)),this.choose(s),this.root.dispatchEvent(new CustomEvent("deck:create",{bubbles:!0,detail:{value:s}}))}renderTokens(){if(!this.multi){const i=this.selected[0];i&&document.activeElement!==this.input&&(this.input.value=i.label),this.tokens.innerHTML="";return}const t=Number(this.root.dataset.maxTokens||4),s=this.selected;this.tokens.innerHTML=s.slice(0,t).map(i=>`<span class="combo-token"><span>${u(i.label)}</span>
|
|
50
|
+
<button type="button" data-value="${u(i.value)}" aria-label="Remove ${u(i.label)}">${p("x","icon icon-sm")}</button>
|
|
51
|
+
</span>`).join("")+(s.length>t?`<span class="combo-count">+${s.length-t}</span>`:""),this.input.placeholder=s.length?"":this.placeholder}sync(){this.select&&(c("option",this.select).forEach(t=>{const s=this.options.find(i=>i.value===t.value);t.selected=!!(s&&s.selected)}),this.select.dispatchEvent(new Event("change",{bubbles:!0})),this.root.dispatchEvent(new CustomEvent("deck:change",{bubbles:!0,detail:{values:this.selected.map(t=>t.value)}})))}async fetch(){const t=this.query.trim();t.length<this.minChars||(this.list.innerHTML='<div class="combo-loading"><span class="spinner"></span> Searching</div>',clearTimeout(this._t),this._t=setTimeout(async()=>{try{const i=await(await window.fetch(this.remote+encodeURIComponent(t),{headers:{Accept:"application/json"}})).json(),n=this.selected;this.options=i.map(a=>({value:String(a.value??a.id),label:String(a.label??a.name),sub:a.sub||"",group:a.group||"",disabled:!!a.disabled,selected:n.some(o=>o.value===String(a.value??a.id))})),this.render()}catch{this.list.innerHTML='<div class="combo-empty">Could not load results. Try again.</div>'}},Number(this.root.dataset.debounce||220)))}show(){if(this.open)return;this.open=!0,this.root.classList.add("is-open"),this.input.setAttribute("aria-expanded","true"),this.render();const t=this.control.getBoundingClientRect();this.list.classList.toggle("is-above",window.innerWidth>480&&window.innerHeight-t.bottom<240&&t.top>240)}toggle(){this.open?this.hide():this.show()}hide(){if(this.open){if(this.open=!1,this.root.classList.remove("is-open"),this.input.setAttribute("aria-expanded","false"),this.multi)this.input.value="";else{const t=this.selected[0];this.input.value=t?t.label:""}this.query=""}}}function u(e){return String(e).replace(/[&<>"']/g,t=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[t])}function D(e,t){const s=t.trim(),i=u(e);if(!s)return i;const n=e.toLowerCase().indexOf(s.toLowerCase());return n<0?i:u(e.slice(0,n))+"<mark>"+u(e.slice(n,n+s.length))+"</mark>"+u(e.slice(n+s.length))}class q{constructor(t){this.wrap=t,this.table=h(".dg",t),this.table&&(this.measurePins(),this.wireSort(),this.wireSelect(),this.wireResize(),CSS.supports("container-type: scroll-state")||(this.shadows(),t.addEventListener("scroll",()=>this.shadows(),{passive:!0})),new ResizeObserver(()=>this.measurePins()).observe(this.table))}measurePins(){const t=h("thead .dg-pin-start",this.table);t&&this.wrap.style.setProperty("--dg-pin-start",t.offsetWidth+"px")}shadows(){const t=this.wrap,s=Math.abs(t.scrollLeft);t.classList.toggle("is-scrolled-x",s>0),t.classList.toggle("is-scrolled-end",s+t.clientWidth<t.scrollWidth-1)}wireSort(){c("th[data-sort]",this.table).forEach((t,s)=>{if(h(".dg-sort",t))return;const i=t.textContent.trim();t.innerHTML=`<button type="button" class="dg-sort">${u(i)}
|
|
52
|
+
<svg class="icon dg-sort-icon" aria-hidden="true"><use href="${g.iconSprite}#chevron-up"></use></svg></button>`,h(".dg-sort",t).addEventListener("click",()=>this.sort(t))})}sort(t){const s=c("th",this.table.tHead.rows[0]),i=s.indexOf(t),n=t.dataset.sort,a=t.getAttribute("aria-sort")==="ascending"?"descending":"ascending";s.forEach(l=>l.removeAttribute("aria-sort")),t.setAttribute("aria-sort",a);const o=this.table.tBodies[0],r=Array.from(o.rows),d=l=>{const m=l.cells[i],k=m?.dataset.value??m?.textContent.trim()??"";return n==="num"?parseFloat(k.replace(/[^0-9.\-]/g,""))||0:n==="date"?new Date(k).getTime()||0:k.toLowerCase()};r.sort((l,m)=>{const k=d(l),M=d(m);return(k<M?-1:k>M?1:0)*(a==="ascending"?1:-1)}),r.forEach(l=>o.append(l)),this.wrap.dispatchEvent(new CustomEvent("deck:sort",{bubbles:!0,detail:{index:i,dir:a,kind:n}}))}wireSelect(){const t=h("thead .dg-check input",this.table),s=()=>c("tbody .dg-check input",this.table),i=()=>{const n=s(),a=n.filter(r=>r.checked);n.forEach(r=>r.closest("tr").setAttribute("aria-selected",r.checked)),t&&(t.checked=a.length>0&&a.length===n.length,t.indeterminate=a.length>0&&a.length<n.length);const o=h("[data-dg-selection]",this.wrap.parentElement||document);if(o){o.hidden=a.length===0;const r=h("[data-dg-count]",o);r&&(r.textContent=a.length)}this.wrap.dispatchEvent(new CustomEvent("deck:select",{bubbles:!0,detail:{count:a.length}}))};t&&t.addEventListener("change",()=>{s().forEach(n=>{n.checked=t.checked}),i()}),this.table.addEventListener("change",n=>{n.target.closest(".dg-check")&&i()}),i()}wireResize(){c("th[data-resize]",this.table).forEach(t=>{if(h(".dg-resize",t))return;t.style.position="sticky";const s=f("div","dg-resize");t.append(s);let i=0,n=0;const a=r=>{const d=r.touches?r.touches[0].clientX:r.clientX;t.style.width=Math.max(64,n+(d-i))+"px",this.measurePins()},o=()=>{this.wrap.classList.remove("is-resizing"),document.removeEventListener("pointermove",a),document.removeEventListener("pointerup",o)};s.addEventListener("pointerdown",r=>{r.preventDefault(),i=r.clientX,n=t.offsetWidth,this.wrap.classList.add("is-resizing"),document.addEventListener("pointermove",a),document.addEventListener("pointerup",o)})})}}const C={region:null,items:[],max:3,stacked:!0,mount(){return this.region?this.region:(this.region=h(".toast-region")||f("div","toast-region"),this.stacked&&this.region.classList.add("toast-region-stacked"),this.region.setAttribute("role","region"),this.region.setAttribute("aria-label","Notifications"),this.region.isConnected||document.body.append(this.region),this.region)},icons:{good:"check-circle",bad:"x-circle",warn:"alert-triangle",info:"info",loading:null},push(e){typeof e=="string"&&(e={title:e});const t=Object.assign({kind:"",duration:5e3,actions:[],dismissible:!0},e),s=this.mount(),i=f("div","toast"+(t.kind?" toast-"+t.kind:""));i.setAttribute("role",t.kind==="bad"?"alert":"status"),i.style.setProperty("--toast-duration",t.duration+"ms");const n={node:i,opts:t,dismiss:()=>this.dismiss(n),update:a=>this.update(n,a)};for(this.paintBody(n),this.wireSwipe(n),s.prepend(i),this.items.unshift(n),requestAnimationFrame(()=>{i.style.setProperty("--toast-h",i.offsetHeight+"px"),this.reflow()}),t.duration>0&&this.arm(n);this.items.length>8;)this.dismiss(this.items.at(-1));return n},paintBody(e){const t=e.opts,s=t.kind==="loading"?'<span class="spinner toast-icon"></span>':this.icons[t.kind]?p(this.icons[t.kind],"icon toast-icon"):"";e.node.innerHTML=`
|
|
53
|
+
${s}
|
|
54
|
+
<div class="toast-main">
|
|
55
|
+
${t.title?`<div class="toast-title">${u(t.title)}</div>`:""}
|
|
56
|
+
${t.text?`<div class="toast-text">${u(t.text)}</div>`:""}
|
|
57
|
+
${t.actions.length?`<div class="toast-actions">${t.actions.map((i,n)=>`<button type="button" class="toast-action" data-action="${n}">${u(i.label)}</button>`).join("")}</div>`:""}
|
|
58
|
+
</div>
|
|
59
|
+
${t.dismissible?`<button type="button" class="toast-close" aria-label="Dismiss">${p("x","icon icon-sm")}</button>`:""}
|
|
60
|
+
${t.duration>0?'<span class="toast-timer"></span>':""}`,h(".toast-close",e.node)?.addEventListener("click",()=>this.dismiss(e)),c(".toast-action",e.node).forEach(i=>{i.addEventListener("click",()=>{const n=t.actions[Number(i.dataset.action)];n?.onClick?.(e),n?.close!==!1&&this.dismiss(e)})})},update(e,t){return Object.assign(e.opts,t),e.node.className="toast"+(e.opts.kind?" toast-"+e.opts.kind:""),e.node.style.setProperty("--toast-duration",e.opts.duration+"ms"),this.paintBody(e),this.wireSwipe(e),clearTimeout(e.timer),e.opts.duration>0&&this.arm(e),e},arm(e){clearTimeout(e.timer),e.timer=setTimeout(()=>this.dismiss(e),e.opts.duration);const t=this.region,s=()=>clearTimeout(e.timer),i=()=>{e.opts.duration>0&&this.arm(e)};t.addEventListener("mouseenter",s,{once:!0}),t.addEventListener("mouseleave",i,{once:!0})},dismiss(e){!e||e.leaving||(e.leaving=!0,clearTimeout(e.timer),e.node.classList.add("is-leaving"),e.node.addEventListener("transitionend",()=>e.node.remove(),{once:!0}),setTimeout(()=>e.node.remove(),500),this.items=this.items.filter(t=>t!==e),this.reflow(),e.opts.onDismiss?.(e))},clear(){[...this.items].forEach(e=>this.dismiss(e))},reflow(){this.items.forEach((e,t)=>e.node.setAttribute("aria-hidden",t>=this.max?"true":"false"))},wireSwipe(e){const t=e.node;let s=null,i=0;t.addEventListener("pointerdown",a=>{a.target.closest("button")||(s=a.clientX,t.classList.add("is-dragging"),t.setPointerCapture(a.pointerId))}),t.addEventListener("pointermove",a=>{s!==null&&(i=a.clientX-s,t.style.translate=`${i}px 0`,t.style.opacity=String(Math.max(0,1-Math.abs(i)/220)))});const n=()=>{s!==null&&(t.classList.remove("is-dragging"),Math.abs(i)>90?(t.style.setProperty("--toast-exit-x",(i>0?400:-400)+"px"),this.dismiss(e)):(t.style.translate="",t.style.opacity=""),s=null,i=0)};t.addEventListener("pointerup",n),t.addEventListener("pointercancel",n)}},b=()=>window.matchMedia("(prefers-reduced-motion: reduce)").matches;function F(e){c(".ripple",e).forEach(t=>{t.dataset.deckWired||(t.dataset.deckWired="1",t.addEventListener("pointerdown",s=>{if(b())return;const i=t.getBoundingClientRect(),n=f("span","ripple-ink");n.style.setProperty("--rx",s.clientX-i.left+"px"),n.style.setProperty("--ry",s.clientY-i.top+"px"),t.append(n),n.addEventListener("animationend",()=>n.remove(),{once:!0}),setTimeout(()=>n.remove(),900)}))})}function j(e){if(CSS.supports("animation-timeline: view()"))return;const t=c(".reveal, .reveal-fade, .reveal-pop",e).filter(i=>!i.dataset.deckWired);if(!t.length)return;if(b())return t.forEach(i=>{i.style.opacity="1"});const s=new IntersectionObserver(i=>{i.forEach(n=>{n.isIntersecting&&(n.target.classList.add("is-revealed"),s.unobserve(n.target))})},{rootMargin:"0px 0px -8% 0px",threshold:.08});t.forEach(i=>{i.dataset.deckWired="1",s.observe(i)})}function H(e){c(".field",e).forEach(t=>{t.dataset.deckWired||(t.dataset.deckWired="1",t.addEventListener("animationend",()=>t.classList.add("was-shaken")),c("input, textarea, select",t).forEach(s=>{s.addEventListener("input",()=>{s.checkValidity()&&t.classList.remove("is-invalid","was-shaken")})}))})}function R(){"startViewTransition"in document&&(window.addEventListener("popstate",()=>{document.documentElement.dataset.vt="back"}),window.addEventListener("pageswap",()=>{performance.getEntriesByType("navigation")[0]&&delete document.documentElement.dataset.vt}))}function N(e){c("[data-deck-tick]",e).forEach(t=>{if(t.dataset.deckWired)return;t.dataset.deckWired="1",t.classList.add("tick");let s=parseFloat(t.textContent.replace(/[^0-9.\-]/g,""))||0;new MutationObserver(()=>{const i=parseFloat(t.textContent.replace(/[^0-9.\-]/g,""))||0;i!==s&&(t.classList.remove("is-up","is-down"),t.offsetWidth,t.classList.add(i>s?"is-up":"is-down"),s=i)}).observe(t,{childList:!0,characterData:!0,subtree:!0})})}function O(e){window.matchMedia("(hover: hover)").matches&&c(".tilt",e).forEach(t=>{if(t.dataset.deckWired)return;t.dataset.deckWired="1";const s=Number(t.dataset.tilt||9),i=a=>{if(b())return;const o=t.getBoundingClientRect(),r=(a.clientX-o.left)/o.width-.5,d=(a.clientY-o.top)/o.height-.5,l=Math.hypot(r,d)*s*2;t.style.setProperty("--tilt-axis",`${d.toFixed(3)} ${(-r).toFixed(3)} 0`),t.style.setProperty("--tilt-amount",l.toFixed(2)+"deg"),t.style.setProperty("--gx",((r+.5)*100).toFixed(1)+"%"),t.style.setProperty("--gy",((d+.5)*100).toFixed(1)+"%")},n=()=>{t.classList.remove("is-tilting"),t.style.setProperty("--tilt-amount","0deg")};t.addEventListener("pointerenter",()=>t.classList.add("is-tilting")),t.addEventListener("pointermove",i),t.addEventListener("pointerleave",n),t.addEventListener("blur",n)})}function B(e){c("[data-deck-flip]",e).forEach(t=>{if(t.dataset.deckWired)return;t.dataset.deckWired="1";const s=t.dataset.deckFlip?h(t.dataset.deckFlip):t.closest(".flip, .flip-x");s&&t.addEventListener("click",()=>{const i=s.classList.toggle("is-flipped");t.setAttribute("aria-pressed",String(i)),c(".flip-front, .flip-back",s).forEach((n,a)=>{n.inert=i?a===0:a===1})})})}function z(e){c(".coverflow",e).forEach(t=>{if(t.dataset.deckWired)return;t.dataset.deckWired="1";const s=Array.from(t.children),i=()=>{const n=t.scrollLeft+t.clientWidth/2,a=getComputedStyle(t).direction==="rtl";s.forEach(o=>{const d=o.offsetLeft+o.offsetWidth/2-n;o.classList.toggle("is-front",Math.abs(d)<o.offsetWidth/2),o.classList.toggle("is-behind-start",d<-o.offsetWidth/2!==a&&Math.abs(d)>=o.offsetWidth/2),o.classList.toggle("is-behind-end",d>o.offsetWidth/2!==a&&Math.abs(d)>=o.offsetWidth/2)})};t.addEventListener("scroll",()=>requestAnimationFrame(i),{passive:!0}),new ResizeObserver(i).observe(t),i()})}function Y(e){c(".pile",e).forEach(t=>{t.dataset.deckWired||(t.dataset.deckWired="1",t.addEventListener("deck:advance",()=>{const s=t.querySelector(":scope > *:not(.is-dismissed)");s&&(s.classList.add("is-dismissed"),setTimeout(()=>t.append(s),400))}))})}function _(e){c(".segmented, .tabs",e).forEach(t=>{t.dataset.deckWired||(t.dataset.deckWired="1",t.addEventListener("click",s=>{const i=s.target.closest("[aria-selected]");i&&(c("[aria-selected]",t).forEach(n=>n.setAttribute("aria-selected","false")),i.setAttribute("aria-selected","true"),t.dispatchEvent(new CustomEvent("deck:change",{bubbles:!0,detail:{value:i.dataset.value??i.textContent.trim()}})))}))})}let V=0;function X(e){CSS.supports("anchor-name: --a")&&c("[popovertarget]",e).forEach(t=>{const s=document.getElementById(t.getAttribute("popovertarget"));if(!s||t.dataset.deckAnchored)return;t.dataset.deckAnchored="1";const i=s.style.getPropertyValue("--anchor")||`--dk-a${++V}`;t.classList.add("anchor"),t.style.setProperty("--anchor",i),s.style.setProperty("--anchor",i),t.setAttribute("data-deck-anchor","#"+s.id)})}function U(e){c("[data-deck-theme]",e).forEach(t=>{t.dataset.deckWired||(t.dataset.deckWired="1",t.addEventListener("click",()=>{const s=document.documentElement.getAttribute("data-theme"),i=s?s==="dark":matchMedia("(prefers-color-scheme: dark)").matches;g.theme(i?"light":"dark")}))})}let L=null;function G(e){if(CSS.supports("animation-timeline: scroll()")||b())return;const t=c(".back-to-top",e).filter(i=>!i.dataset.deckBtt);if(!t.length)return;t.forEach(i=>{i.dataset.deckBtt="1"});let s=document.getElementById("dk-btt-sentinel");s||(s=document.createElement("div"),s.id="dk-btt-sentinel",s.setAttribute("aria-hidden","true"),s.style.cssText="position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:1px;block-size:400px;visibility:hidden;pointer-events:none;",document.body.prepend(s)),L&&L.disconnect(),L=new IntersectionObserver(i=>{const n=!i[i.length-1].isIntersecting;c(".back-to-top[data-deck-btt]").forEach(a=>a.classList.toggle("is-visible",n))}),L.observe(s)}const g={iconSprite:P,version:"0.1",init(e=document){return c("[data-deck-datepicker]",e).forEach(t=>{t._deck||(t._deck=new W(t))}),c("[data-deck-combo]",e).forEach(t=>{t._deck||(t._deck=new I(t))}),c("[data-deck-grid]",e).forEach(t=>{t._deck||(t._deck=new q(t))}),_(e),X(e),U(e),G(e),F(e),j(e),H(e),N(e),O(e),B(e),z(e),Y(e),g},toast(e){return C.push(e)},toasts:C,theme(e){if(!e)return document.documentElement.getAttribute("data-theme")||"auto";document.documentElement.setAttribute("data-theme",e);try{localStorage.setItem("deck-theme",e)}catch{}return e},hue(e){document.documentElement.style.setProperty("--hue-brand",e)},locale(e){return S(e)},transition(e,t={}){if(b()||!document.startViewTransition){const i=e();return{finished:Promise.resolve(i),ready:Promise.resolve()}}t.direction&&(document.documentElement.dataset.vt=t.direction);const s=document.startViewTransition(e);return s.finished.finally(()=>{delete document.documentElement.dataset.vt}),s},play(e,t){return e?(e.classList.remove(t),e.offsetWidth,e.classList.add(t,"is-animating"),new Promise(s=>{const i=()=>{e.classList.remove(t,"is-animating"),s(e)};e.addEventListener("animationend",i,{once:!0}),setTimeout(i,2e3)})):Promise.resolve()},toggle(e,t){const s=t??!e.classList.contains("is-open");return e.classList.add("expand"),e.classList.toggle("is-open",s),s},dir(e){if(!e)return document.documentElement.getAttribute("dir")||"ltr";document.documentElement.setAttribute("dir",e);try{localStorage.setItem("deck-dir",e)}catch{}return e},flip(e,t){return e.classList.toggle("is-flipped",t)},advance(e){e.dispatchEvent(new CustomEvent("deck:advance"))},face(e,t){return e.dataset.face=t,t},reduced:b};return R(),document.addEventListener("DOMContentLoaded",()=>{try{const e=localStorage.getItem("deck-theme");e&&document.documentElement.setAttribute("data-theme",e);const t=localStorage.getItem("deck-dir");t&&document.documentElement.setAttribute("dir",t)}catch{}g.init()}),g})();typeof window<"u"&&(window.Deck=Deck),typeof globalThis<"u"&&(globalThis.Deck=Deck),typeof module<"u"&&module.exports&&(module.exports=Deck);
|