From c3ba160ef8402c2c7f6ea6373bd1f06a2d4e3f04 Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Mon, 13 Oct 2025 21:53:26 -0400 Subject: [PATCH] Replace UI grid and notify with Tailwind components --- css/tailwind.generated.css | 2 +- css/tailwind.source.css | 563 +----------------------- package-lock.json | 17 - package.json | 2 - tests/torrent/style-helpers.test.mjs | 1 + tests/torrent/toast-service.test.mjs | 51 +++ torrent/app.js | 123 +++--- torrent/dist/beacon.vendor.js | 114 +++-- torrent/docs/ui-grid-ng-notify-audit.md | 16 + torrent/src/beacon-vendor.js | 4 - torrent/ui/styleHelpers.js | 1 + torrent/ui/toastService.js | 183 ++++++++ torrent/ui/torrentTable.js | 147 +++++++ torrent/views/full.html | 18 +- 14 files changed, 555 insertions(+), 687 deletions(-) create mode 100644 tests/torrent/toast-service.test.mjs create mode 100644 torrent/docs/ui-grid-ng-notify-audit.md create mode 100644 torrent/ui/toastService.js create mode 100644 torrent/ui/torrentTable.js diff --git a/css/tailwind.generated.css b/css/tailwind.generated.css index 218a83d5..1c6a7ec4 100644 --- a/css/tailwind.generated.css +++ b/css/tailwind.generated.css @@ -1,3 +1,3 @@ :root{--color-page:#fff;--color-page-alt:#f9fafb;--color-surface:#0f172a;--color-surface-alt:#111827;--color-bg:var(--color-surface);--color-card:#1e293b;--color-card-private:#3b1d74;--color-card-critical:#3f0b13;--color-panel:#1f2937;--color-panel-hover:#334155;--color-border:#374151;--color-border-subtle:#d1d5db;--color-primary:#fe0032;--color-secondary:#ff93a5;--color-logo-accent:var(--color-primary);--color-logo-wordmark:var(--color-neutral-700);--color-logo-wordmark-inverse:var(--color-white);--color-logo-background:var(--color-neutral-700);--color-logo-background-inverse:var(--color-white);--color-info:#60a5fa;--color-info-strong:#2563eb;--color-info-pressed:#1d4ed8;--color-info-glass:rgba(37,99,235,.18);--color-muted-strong:#6b7280;--color-text:#f8fafc;--color-text-strong:#0f172a;--color-text-muted:var(--color-muted);--color-muted:#94a3b8;--color-muted-alt:#9ca3af;--color-subtle-text:#e2e8f0;--color-subtle:#e5e7eb;--color-critical:#7f1d1d;--color-critical-strong:#991b1b;--color-warning:#facc15;--color-warning-strong:#d97706;--color-warning-surface:rgba(146,64,14,.24);--color-warning-glass:rgba(250,204,21,.18);--color-neutral-700:#3f3f46;--color-neutral-600:#52525b;--color-white:#fff;--color-black:#000;--color-overlay:#1a2234;--color-overlay-black:rgba(0,0,0,.9);--color-overlay-muted:rgba(15,23,42,.55);--color-overlay-strong:rgba(15,23,42,.75);--color-overlay-darker:rgba(15,23,42,.88);--color-overlay-panel:rgba(26,34,52,.82);--color-overlay-panel-soft:rgba(26,34,52,.65);--color-overlay-panel-tint:rgba(31,41,55,.5);--color-overlay-panel-glass:rgba(28,37,58,.72);--color-overlay-panel-glass-soft:rgba(31,41,55,.55);--color-modal-backdrop:rgba(8,12,24,.58);--color-modal-surface:rgba(20,28,46,.78);--color-overlay-veil:rgba(11,17,32,.96);--color-overlay-banner:rgba(51,65,85,.95);--color-sidebar-surface:rgba(17,24,39,.94);--color-sidebar-surface-alt:rgba(11,22,48,.78);--color-sidebar-border:rgba(148,163,184,.28);--color-sidebar-border-strong:rgba(148,163,184,.42);--color-sidebar-hover:rgba(56,189,248,.18);--color-sidebar-hover-strong:rgba(129,140,248,.28);--color-sidebar-glow:rgba(56,189,248,.35);--color-sidebar-accent-start:rgba(56,189,248,.9);--color-sidebar-accent-end:rgba(129,140,248,.85);--color-sidebar-text-muted:rgba(203,213,225,.75);--color-overlay-panel-gradient-start:rgba(30,41,59,.92);--color-overlay-panel-gradient-end:rgba(15,23,42,.92);--color-surface-tint-subtle:rgba(148,163,184,.08);--color-border-translucent:rgba(148,163,184,.18);--color-border-translucent-strong:rgba(148,163,184,.25);--color-border-translucent-bright:rgba(148,163,184,.32);--color-border-translucent-stronger:rgba(148,163,184,.35);--color-border-translucent-strongest:rgba(148,163,184,.4);--color-border-translucent-glow:rgba(148,163,184,.55);--color-border-translucent-medium:rgba(148,163,184,.2);--color-border-neutral-soft:rgba(229,231,235,.35);--color-border-info-soft:rgba(96,165,250,.35);--color-border-sidebar-strong:rgba(55,65,81,.9);--color-ring-private:rgba(168,85,247,.55);--color-ring-private-hover:rgba(192,132,252,.65);--color-ring-critical:rgba(239,68,68,.4);--color-ring-critical-soft:rgba(239,68,68,.35);--color-ring-critical-hover:rgba(239,68,68,.45);--color-ring-critical-strong:rgba(239,68,68,.55);--color-ring-alert:rgba(220,38,38,.6);--color-gradient-visibility-start:rgba(129,140,248,.4);--color-gradient-visibility-end:rgba(192,132,252,.32);--color-white-soft:hsla(0,0%,100%,.1);--color-white-softer:hsla(0,0%,100%,.3);--color-white-softest:hsla(0,0%,100%,.4);--color-shadow-floating:rgba(8,11,30,.55);--color-shadow-elevated:rgba(8,11,30,.45);--color-shadow-panel:rgba(15,23,42,.35);--color-shadow-notification:rgba(15,23,42,.3);--color-shadow-sidebar:rgba(0,0,0,.45);--color-divider-strong:rgba(15,23,42,.35);--color-text-frosted-strong:rgba(226,232,240,.94);--color-text-frosted:rgba(226,232,240,.9);--color-text-frosted-soft:rgba(226,232,240,.82);--scrollbar-width:0.5rem;--scrollbar-track:var(--color-white-soft);--scrollbar-thumb:var(--color-white-softer);--scrollbar-thumb-hover:var(--color-white-softest);--z-sidebar-overlay:10;--z-sidebar:20;--z-modal-root:100;--z-modal-overlay:110;--z-modal-content:120;--z-modal-player:130;--sidebar-width-expanded:16rem;--sidebar-width-collapsed:4rem;--sidebar-width:var(--sidebar-width-expanded);--sidebar-control-size:2.75rem;--sidebar-content-gap:1rem;--space-sidebar-shell-inline:var(--space-lg);--space-sidebar-shell-block-start:var(--space-lg);--space-sidebar-shell-block-end:1.75rem;--space-sidebar-scroll-gap:1.75rem;--space-sidebar-panel-gap:1.35rem;--space-sidebar-panel-padding-block:1.35rem;--space-sidebar-panel-padding-inline:1.1rem;--space-sidebar-footer-gap:0.85rem;--space-sidebar-trigger-padding-block:0.78rem;--space-sidebar-popover-offset:0.85rem;--space-sidebar-popover-padding-block:0.85rem;--space-sidebar-popover-padding-inline:0.65rem;--space-sidebar-popover-gap:0.45rem;--space-sidebar-nav-padding-block:0.7rem;--space-sidebar-subnav-padding-block:0.55rem;--blog-embed-height:100rem;--color-blog-transparent:transparent;--color-blog-cyan-500:#06b6d4;--color-blog-sky-500:#0bf;--color-blog-teal-600:#0e7490;--color-blog-green-800:#14532d;--color-blog-green-700:#15803d;--color-blog-teal-700:#164e63;--color-blog-gray-900:#171717;--color-blog-coffee-900:#1c1917;--color-blog-green-500:#22c55e;--color-blog-gray-800:#2b2b2b;--color-blog-gray-700:#3b3b3b;--color-blog-teal-accent:#3e8b8a;--color-blog-gray-650:#404040;--color-blog-brown-700:#44403c;--color-blog-purple-900:#581c87;--color-blog-gray-500:#666;--color-blog-gray-450:#737373;--color-blog-gray-440:#747474;--color-blog-brown-500:#78716c;--color-blog-rust-700:#7c2d12;--color-blog-purple-700:#7e22ce;--color-blog-purple-accent:#92379c;--blog-font-size-root:1.25rem;--blog-font-size-display:3rem;--blog-font-size-title:1.1rem;--blog-font-size-body:0.9rem;--blog-font-size-meta:0.8rem;--blog-font-size-h1-mobile:1.6rem;--blog-layout-fluid-width:80%;--blog-layout-max-width:47.5rem;--blog-space-compact:0.3rem;--blog-space-snug:0.4rem;--blog-space-stack-xxl:4rem;--blog-space-inline-lg:2.5rem;--blog-space-media-stack-start:2.5rem;--blog-space-media-stack-end:3.5rem;--blog-space-heading-stack:1.4rem;--blog-space-heading-gap:0.6rem;--blog-avatar-size:2.5rem;--blog-avatar-size-compact:1.5rem;--blog-line-height-body:1.3rem;--blog-line-height-tight:0.9;--color-blog-purple-muted:#96609c;--color-blog-gray-300:#999;--color-blog-purple-500:#a855f7;--color-blog-gray-275:#a9a9a9;--color-blog-red-600:#b91c1c;--color-blog-rust-600:#c2410c;--color-blog-error:#ca1717;--color-blog-gray-220:#cbcbcb;--color-blog-gray-210:#ccc;--color-blog-gray-200:#dedede;--color-blog-amber-500:#e4984d;--color-blog-gray-190:#e0e0e0;--color-blog-orange-600:#e35428;--color-blog-gray-180:#e9e9e9;--color-blog-gray-170:#ebebeb;--color-blog-red-500:#ef4444;--color-blog-amber-400:#f6ad55;--color-blog-neutral-100:#f5f5f5;--color-blog-neutral-120:#f6f6f6;--color-blog-orange-500:#f97316;--color-blog-neutral-50:#fdfdfd;--ztr-font:var(--font-family-sans);--ztr-font-size:var(--font-size-base);--ztr-text-color:var(--color-blog-gray-800);--ztr-link-color:var(--color-blog-purple-700);--ztr-icon-color:var(--color-blog-gray-700);--ztr-background-color:rgba(0,0,0,.03);--ztr-login-button-color:var(--color-blog-gray-800);--blog-carousel-gap:var(--space-lg);--blog-carousel-slide-radius:var(--radius-xl);--blog-carousel-slide-min-height:18rem;--blog-carousel-slide-background:var(--color-blog-neutral-50);--blog-carousel-slide-foreground:var(--color-blog-gray-900);--blog-carousel-slide-scale-inactive:0.96;--blog-carousel-progress-height:0.25rem;--blog-carousel-progress-radius:var(--radius-full);--blog-carousel-progress-track:var(--color-border-translucent);--blog-carousel-progress-active:var(--color-blog-purple-500);--space-2xs:0.25rem;--space-xs:0.5rem;--space-sm:0.75rem;--space-md:1rem;--space-lg:1.5rem;--space-xl:2rem;--space-2xl:3rem;--radius-sm:0.25rem;--radius-md:0.5rem;--radius-lg:0.75rem;--radius-xl:1rem;--radius-full:9999px;--radius-sidebar-shell:1.5rem;--radius-sidebar-panel:1.1rem;--radius-sidebar-nav:0.95rem;--shadow-sm:0 0.0625rem 0.125rem 0 rgb(0 0 0/5%);--shadow-md:0 0.25rem 0.375rem -0.0625rem rgba(0,0,0,.1);--shadow-lg:0 0.625rem 0.9375rem -0.1875rem rgba(0,0,0,.1);--shadow-modal:0 2.75rem 6rem -1.25rem rgba(8,11,30,.75);--shadow-sidebar-shell:0 1.875rem 3.75rem -1.5rem var(--color-shadow-sidebar);--shadow-sidebar-accent:0 1.65rem 3.25rem -1.35rem var(--color-sidebar-glow);--shadow-sidebar-trigger:0 1.25rem 2.5rem -1.35rem var(--color-shadow-panel);--shadow-sidebar-dropup:0 1.75rem 3.25rem -1.45rem var(--color-sidebar-glow);--shadow-sidebar-panel:0 2.25rem 4.5rem -1.85rem var(--color-shadow-sidebar);--shadow-sidebar-focus-ring:0 0 0 0.125rem var(--color-sidebar-glow),0 0 0 0.25rem var(--color-sidebar-hover-strong);--font-family-sans:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;--font-family-mono:"Fira Code","SFMono-Regular",ui-monospace,monospace;--font-size-xs:0.75rem;--font-size-sm:0.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.5rem;--font-size-2xl:2rem;--font-size-sidebar-nav:0.95rem;--font-size-sidebar-subnav:0.85rem;--font-size-sidebar-trigger:0.9rem;--line-height-tight:1.1;--line-height-snug:1.25;--line-height-base:1.5;--line-height-relaxed:1.75;--grid-border-width:calc(var(--space-2xs)/4);--grid-canvas-padding-top:var(--grid-border-width);--grid-viewport-min-height:calc(var(--space-xl) - var(--space-sm));--grid-cell-padding-block:var(--space-sm);--grid-cell-padding-inline:var(--space-md);--grid-header-font-size:var(--font-size-xs);--grid-header-letter-spacing:0.08em;--grid-overlay-margin:10%;--grid-overlay-padding-block:var(--space-md);--grid-overlay-padding-inline:var(--space-xl);--grid-overlay-radius:var(--radius-lg);--grid-overlay-font-size:var(--font-size-lg);--grid-overlay-text-opacity:0.66;--grid-resizer-width:calc(var(--space-2xs)*1.25);--grid-resize-overlay-width:var(--grid-border-width);--grid-sort-indicator-size:calc(var(--space-lg) - var(--space-2xs));--grid-sort-indicator-offset:var(--space-xs);--grid-sort-indicator-stroke:calc(var(--space-2xs)/2);--grid-sort-indicator-thickness:var(--grid-border-width);--notify-padding-block:var(--space-md);--notify-padding-inline:var(--space-2xl);--notify-font-size:var(--font-size-base);--notify-dismiss-size:calc(var(--space-xl) + var(--space-xs));--notify-dismiss-size-compact:calc(var(--space-lg) + var(--space-2xs));--notify-dismiss-font-size:var(--font-size-sm);--notify-dismiss-radius:var(--radius-full);--notify-dismiss-color:var(--color-subtle);--notify-dismiss-background:var(--color-overlay-panel);--notify-dismiss-background-hover:var(--color-overlay-panel-soft);--z-notify:1200;--motion-duration-fast:120ms;--motion-duration-base:160ms;--motion-duration-slow:280ms;--motion-ease-out:cubic-bezier(0.16,1,0.3,1);--motion-ease-in-out:cubic-bezier(0.4,0,0.2,1);--modal-motion-duration:var(--motion-duration-base)}[data-theme=light]{--color-surface:#f8fafc;--color-surface-alt:#f1f5f9;--color-bg:var(--color-surface);--color-card:#fff;--color-card-private:#f4ecff;--color-card-critical:#ffe4e6;--color-panel:#fff;--color-panel-hover:#e2e8f0;--color-border:#94a3b8;--color-border-subtle:#cbd5e1;--color-primary:#dc2626;--color-text:#0f172a;--color-text-strong:#0f172a;--color-muted:#475569;--color-muted-alt:#64748b;--color-muted-strong:#334155;--color-overlay:rgba(15,23,42,.55);--color-overlay-muted:rgba(15,23,42,.35);--color-overlay-strong:rgba(15,23,42,.65);--color-overlay-darker:rgba(15,23,42,.72);--color-overlay-panel:rgba(15,23,42,.78);--color-sidebar-surface:hsla(0,0%,100%,.82);--color-sidebar-surface-alt:rgba(226,232,240,.7);--color-sidebar-border:rgba(148,163,184,.22);--color-sidebar-border-strong:rgba(148,163,184,.32);--color-sidebar-hover:rgba(37,99,235,.15);--color-sidebar-hover-strong:rgba(79,70,229,.24);--color-sidebar-glow:rgba(14,165,233,.3);--color-sidebar-accent-start:rgba(14,165,233,.85);--color-sidebar-accent-end:rgba(129,140,248,.78);--color-sidebar-text-muted:rgba(71,85,105,.82);--color-overlay-panel-soft:rgba(15,23,42,.6);--color-overlay-panel-tint:rgba(148,163,184,.2);--color-modal-backdrop:rgba(15,23,42,.45);--color-modal-surface:rgba(248,250,252,.92);--color-overlay-panel-glass:hsla(0,0%,100%,.82);--color-overlay-veil:rgba(148,163,184,.5);--color-overlay-panel-gradient-start:hsla(0,0%,100%,.92);--color-overlay-panel-gradient-end:rgba(226,232,240,.92);--color-surface-tint-subtle:rgba(15,23,42,.08);--color-border-translucent:rgba(148,163,184,.18);--color-border-translucent-strong:rgba(148,163,184,.22);--color-border-translucent-bright:rgba(148,163,184,.28);--color-border-translucent-stronger:rgba(148,163,184,.32);--color-border-translucent-strongest:rgba(148,163,184,.36);--color-border-translucent-glow:rgba(148,163,184,.45);--color-border-translucent-medium:rgba(148,163,184,.2);--color-border-neutral-soft:rgba(148,163,184,.25);--color-overlay-banner:rgba(148,163,184,.7)}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: } -/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-family-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-family-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{font-size:100%}@media (min-width:1024px){html{font-size:75%}}*,:after,:before{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:.25rem}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}body{font-family:var(--font-family-sans);background-color:var(--color-page);color:var(--color-text-strong);line-height:1.5;margin:0;padding:0;overflow-x:hidden}#editNip71TagsFieldset>legend,#nip71TagsFieldset>legend{margin-left:0;padding:0}#app{background-color:var(--color-page);color:inherit}body.modal-open,html.modal-open{overflow:hidden;height:100%}body.modal-open #app{overflow:hidden}body.modal-open #sidebar,body.modal-open #sidebarOverlay{pointer-events:none;opacity:0;visibility:hidden}body.modal-open #sidebar{z-index:var(--z-sidebar-overlay)}body.modal-open #sidebarOverlay{z-index:calc(var(--z-sidebar-overlay) - 1)}.ng-cloak,.ng-hide:not(.ng-hide-animate),.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}ng\:form{display:block}.ng-animate-shim{visibility:hidden}.ng-anchor{position:absolute}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}#playerModal.ds-header{display:flex}.ds-header{display:flex;align-items:center;justify-content:flex-start;padding-top:var(--space-md);padding-bottom:var(--space-md)}.focus-ring{outline:2px solid transparent;outline-offset:2px}.focus-ring:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.bv-logo{--logo-wordmark-color:var(--color-logo-wordmark);--logo-accent-color:var(--color-logo-accent);--logo-background-color:var(--color-logo-background)}.bv-logo[data-variant=inverse]{--logo-wordmark-color:var(--color-logo-wordmark-inverse);--logo-background-color:var(--color-logo-background-inverse)}.bv-logo[data-wordmark=current]{--logo-wordmark-color:currentColor}.bv-logo[data-accent=current]{--logo-accent-color:currentColor}.bv-logo[data-background=transparent]{--logo-background-color:transparent}.markdown-prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:1rem}.markdown-prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.markdown-prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-primary);text-decoration:none;font-weight:500}.markdown-prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.markdown-prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.markdown-prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.markdown-prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.markdown-prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.markdown-prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.markdown-prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.markdown-prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.markdown-prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.markdown-prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.markdown-prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.markdown-prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.markdown-prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.markdown-prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.markdown-prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.markdown-prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--color-border-subtle);border-top-width:1px;margin-top:2rem;margin-bottom:2rem}.markdown-prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--color-muted);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1rem;margin-bottom:1rem;padding-inline-start:1em;border-left-width:4px;border-left-color:var(--color-border-subtle);padding-left:1rem}.markdown-prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.markdown-prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.markdown-prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:var(--font-size-2xl);margin-top:.5rem;margin-bottom:1rem;line-height:1.1111111}.markdown-prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.markdown-prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:var(--font-size-xl);margin-top:1.25rem;margin-bottom:.75rem;line-height:1.3333333}.markdown-prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.markdown-prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:var(--font-size-lg);margin-top:1rem;margin-bottom:.75rem;line-height:1.6}.markdown-prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.markdown-prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.markdown-prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.markdown-prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:1rem;border-radius:var(--radius-md);max-width:100%;height:auto}.markdown-prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.markdown-prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.markdown-prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.markdown-prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-secondary);font-weight:500;font-size:var(--font-size-sm);background-color:var(--color-page-alt);padding:.2rem .4rem;border-radius:var(--radius-md);font-family:var(--font-family-mono)}.markdown-prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.markdown-prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.markdown-prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.markdown-prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.markdown-prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-text-strong);background-color:var(--color-page-alt);overflow-x:auto;font-weight:400;font-size:var(--font-size-sm);line-height:1.7142857;margin-top:0;margin-bottom:1rem;border-radius:var(--radius-md);padding-inline-end:1.1428571em;padding-inline-start:1.1428571em;padding:1rem;font-family:var(--font-family-mono)}.markdown-prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.markdown-prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.markdown-prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.markdown-prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.markdown-prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.markdown-prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.markdown-prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.markdown-prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.markdown-prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.markdown-prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.markdown-prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.markdown-prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.markdown-prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.markdown-prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.markdown-prose{--tw-prose-body:var(--color-text-strong);--tw-prose-headings:var(--color-text-strong);--tw-prose-lead:#4b5563;--tw-prose-links:var(--color-primary);--tw-prose-bold:var(--color-text-strong);--tw-prose-counters:var(--color-text-strong);--tw-prose-bullets:var(--color-border-subtle);--tw-prose-hr:var(--color-border-subtle);--tw-prose-quotes:var(--color-muted);--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:var(--color-secondary);--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:var(--color-border-subtle);--tw-prose-td-borders:var(--color-border-subtle);--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.6}.markdown-prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.markdown-prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5rem;margin-bottom:.5rem}.markdown-prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.markdown-prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.markdown-prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.markdown-prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.markdown-prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.markdown-prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.markdown-prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.markdown-prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.markdown-prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.markdown-prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.markdown-prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.markdown-prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.markdown-prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.markdown-prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.markdown-prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.markdown-prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.markdown-prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.markdown-prose{font-family:var(--font-family-sans)}.markdown-prose :where(h4,h5,h6):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:600;margin-top:.75rem;margin-bottom:.5rem}.markdown-prose :where(ul,ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:1rem;padding-left:1.25rem}.markdown-prose :where(a:hover):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration:underline}.markdown-prose{max-width:none;line-height:1.625;color:var(--color-text-strong)}.markdown-prose :where(pre,code){font-family:var(--font-family-mono)}.popover{position:relative;display:inline-flex}.popover__panel{outline:2px solid transparent;outline-offset:2px}.popover__panel:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.popover__panel{pointer-events:none;position:absolute;left:0;top:100%;z-index:70;margin-top:.5rem;min-width:12rem;transform-origin:top;--tw-scale-x:.95;--tw-scale-y:.95;border-radius:var(--radius-lg);border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.4;background-color:var(--color-panel);padding:.75rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);opacity:0;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:transform;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:var(--motion-ease-out)}.popover__panel,.popover__panel[data-state=open]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.popover__panel[data-state=open]{pointer-events:auto;--tw-scale-x:1;--tw-scale-y:1;opacity:1}.popover__panel[data-variant=zap]{background:var(--color-overlay-veil);color:var(--color-subtle);border:1px solid var(--color-border-translucent-stronger);box-shadow:0 22px 48px -18px var(--color-shadow-intense);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn{outline:2px solid transparent;outline-offset:2px}.btn:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-info-strong);padding:.625rem 1.25rem;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-white);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn:hover{background-color:var(--color-info)}.btn:focus-visible{background-color:var(--color-info-pressed)}.btn:disabled{pointer-events:none;cursor:not-allowed;opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-ghost{outline:2px solid transparent;outline-offset:2px}.btn-ghost:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-color:transparent;background-color:var(--color-info-strong);padding:.625rem 1.25rem;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-white);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn-ghost:hover{background-color:var(--color-info)}.btn-ghost:focus-visible{background-color:var(--color-info-pressed)}.btn-ghost:disabled{cursor:not-allowed;opacity:.6}body.iframe-form button.btn-ghost{align-self:flex-start;margin-top:var(--space-md)}.btn-ghost{border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.6;background-color:transparent;color:var(--color-text);--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (prefers-reduced-motion:reduce){.btn-ghost{transition-property:none}}.btn-ghost:hover{background-color:var(--color-panel-hover);color:var(--color-text)}.btn-ghost:focus-visible{background-color:var(--color-panel-hover)}.btn-ghost:disabled{pointer-events:none;opacity:.5;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-ghost[data-variant=critical]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.6;color:var(--color-critical)}.btn-ghost[data-variant=critical]:focus-visible,.btn-ghost[data-variant=critical]:hover{background-color:var(--color-critical);--tw-bg-opacity:0.2;color:var(--color-critical-strong)}.btn-ghost[aria-pressed=true],.btn-ghost[data-state=active]{border-color:transparent;background-color:var(--color-primary);color:var(--color-white);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-ghost[aria-pressed=true]:focus-visible,.btn-ghost[aria-pressed=true]:hover,.btn-ghost[data-state=active]:focus-visible,.btn-ghost[data-state=active]:hover{background-color:var(--color-info-strong)}.modal-progress{width:var(--progress-width,0)}.cloudflare-progress__fill,.modal-progress{transition:width var(--motion-duration-base,.16s) var(--motion-ease-out,ease-out)}.cloudflare-progress__fill{width:var(--cloudflare-progress-width,0)}.blog-embed-shell{height:var(--blog-embed-height)}.blog-ztr-watermark{float:right;opacity:.2}.\!badge,.badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:var(--radius-full);background-color:var(--color-panel);padding:.25rem .75rem;font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;letter-spacing:.025em;color:var(--color-muted-strong)}.\!badge[data-variant=critical],.badge[data-variant=critical]{background-color:var(--color-critical);--tw-bg-opacity:0.2;color:var(--color-critical-strong)}.\!badge[data-variant=info],.badge[data-variant=info]{background-color:var(--color-info);--tw-bg-opacity:0.2;color:var(--color-info-strong)}.\!badge[data-variant=neutral],.badge[data-variant=neutral]{background-color:var(--color-border);--tw-bg-opacity:0.4;color:var(--color-muted-strong)}#playerModal.\!menu{display:flex}.\!menu{display:flex;flex-direction:column;gap:.25rem;padding-top:.5rem;padding-bottom:.5rem}#playerModal.menu,.menu{display:flex}.menu{flex-direction:column;gap:.25rem;padding-top:.5rem;padding-bottom:.5rem}.menu__heading{padding-left:1rem;padding-right:1rem;padding-bottom:.5rem;font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;letter-spacing:.025em;color:var(--color-muted)}.menu__separator{margin-top:.5rem;margin-bottom:.5rem;height:1px;background-color:var(--color-border);--tw-bg-opacity:0.2}.menu__item{outline:2px solid transparent;outline-offset:2px}.menu__item:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}#playerModal.menu__item{display:flex}.menu__item{position:relative;display:flex;width:100%;align-items:center;gap:.75rem;border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:500;color:var(--color-text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:var(--motion-ease-in-out)}.menu__item:hover{background-color:var(--color-panel-hover);color:var(--color-text)}.menu__item[data-state=active]{background-color:var(--color-info);--tw-bg-opacity:0.2;color:var(--color-info-strong)}.menu__item[data-variant=critical]{color:var(--color-critical-strong)}.menu__item[data-variant=critical]:hover{background-color:var(--color-critical);--tw-bg-opacity:0.2}.menu__item:disabled,.menu__item[aria-disabled=true]{cursor:not-allowed;opacity:.6}.menu__item:disabled,.menu__item:disabled:hover,.menu__item[aria-disabled=true],.menu__item[aria-disabled=true]:hover{background-color:transparent;color:var(--color-muted)}.\!card{outline:2px solid transparent;outline-offset:2px}.\!card:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!card{position:relative;border-radius:var(--radius-lg);border-width:1px;border-color:transparent;background-color:var(--color-card);color:var(--color-text);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.card{outline:2px solid transparent;outline-offset:2px}.card:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.card{position:relative;border-radius:var(--radius-lg);border-width:1px;border-color:transparent;background-color:var(--color-card);color:var(--color-text);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!card:hover,.card:hover{--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card:focus-visible{border-color:var(--color-info);--tw-border-opacity:0.4;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.card:focus-visible{border-color:var(--color-info);--tw-border-opacity:0.4;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card[data-state=critical],.card[data-state=critical]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.\!card[data-state=private],.card[data-state=private]{background-color:var(--color-card-private);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card[data-state=disabled],.card[data-state=disabled]{opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.form-control{outline:2px solid transparent;outline-offset:2px}.form-control:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.form-control{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.form-control::-moz-placeholder{color:var(--color-muted)}.form-control::placeholder{color:var(--color-muted)}.form-control:hover{border-color:var(--color-border)}.form-control:focus-visible{border-color:var(--color-info-strong)}.form-control:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.form-control:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}.\!input{outline:2px solid transparent;outline-offset:2px}.\!input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!input{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!input::-moz-placeholder{color:var(--color-muted)}.\!input::placeholder{color:var(--color-muted)}.\!input:hover{border-color:var(--color-border)}.\!input:focus-visible{border-color:var(--color-info-strong)}.\!input:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.\!input:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.\!input{transition:none}}body.iframe-form label+.\!input{margin-top:var(--space-xs)}.input{outline:2px solid transparent;outline-offset:2px}.input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.input{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.input::-moz-placeholder{color:var(--color-muted)}.input::placeholder{color:var(--color-muted)}.input:hover{border-color:var(--color-border)}.input:focus-visible{border-color:var(--color-info-strong)}.input:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.input:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.input{transition:none}}body.iframe-form label+.input{margin-top:var(--space-xs)}.textarea{outline:2px solid transparent;outline-offset:2px}.textarea:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.textarea{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.textarea::-moz-placeholder{color:var(--color-muted)}.textarea::placeholder{color:var(--color-muted)}.textarea:hover{border-color:var(--color-border)}.textarea:focus-visible{border-color:var(--color-info-strong)}.textarea:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.textarea:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.textarea{transition:none}}body.iframe-form label+.textarea{margin-top:var(--space-xs)}.textarea{min-height:8rem;resize:vertical}.select{outline:2px solid transparent;outline-offset:2px}.select:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.select{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.select::-moz-placeholder{color:var(--color-muted)}.select::placeholder{color:var(--color-muted)}.select:hover{border-color:var(--color-border)}.select:focus-visible{border-color:var(--color-info-strong)}.select:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.select:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.select{transition:none}}body.iframe-form label+.select{margin-top:var(--space-xs)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2.5rem;background-image:linear-gradient(135deg,transparent 50%,var(--select-arrow-color) 50%),linear-gradient(45deg,var(--select-arrow-color) 50%,transparent 50%),linear-gradient(to right,var(--color-border-subtle),var(--color-border-subtle));background-position:right .75rem center,right .4rem center,right 2.5rem center;background-size:.6rem .6rem,.6rem .6rem,1px 60%;background-repeat:no-repeat}.select,.select:hover{--select-arrow-color:var(--color-border)}.select:focus-visible{--select-arrow-color:var(--color-info-strong)}.select:disabled{--select-arrow-color:var(--color-border-subtle)}.select:invalid{--select-arrow-color:var(--color-critical)}.\!checkbox{outline:2px solid transparent;outline-offset:2px}.\!checkbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!checkbox{display:inline-flex;height:1.25rem;width:1.25rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-items:center;justify-content:center;border-radius:.25rem;border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);color:var(--color-white);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.checkbox{outline:2px solid transparent;outline-offset:2px}.checkbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.checkbox{display:inline-flex;height:1.25rem;width:1.25rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-items:center;justify-content:center;border-radius:.25rem;border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);color:var(--color-white);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!checkbox:hover,.checkbox:hover{border-color:var(--color-border)}.\!checkbox:disabled,.checkbox:disabled{cursor:not-allowed;border-color:var(--color-border-subtle);background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.\!checkbox:after{content:""!important}.checkbox:after{content:""}.\!checkbox:after,.checkbox:after{pointer-events:none;height:.5rem;width:.75rem;border-bottom-width:2px;border-right-width:2px;border-color:var(--color-white);opacity:0;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!checkbox:after{transform:rotate(45deg) translateY(-.125rem) scale(.85)!important}.checkbox:after{transform:rotate(45deg) translateY(-.125rem) scale(.85)}.\!checkbox:checked,.\!checkbox[aria-checked=true],.checkbox:checked,.checkbox[aria-checked=true]{border-color:var(--color-info-strong);background-color:var(--color-info-strong)}.\!checkbox:checked:after,.\!checkbox[aria-checked=true]:after,.checkbox:checked:after,.checkbox[aria-checked=true]:after{opacity:1}.checkbox:checked:after,.checkbox[aria-checked=true]:after{transform:rotate(45deg) translateY(-.125rem) scale(1)}.\!checkbox:checked:after,.\!checkbox[aria-checked=true]:after{transform:rotate(45deg) translateY(-.125rem) scale(1)!important}.switch{outline:2px solid transparent;outline-offset:2px}.switch:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.switch{position:relative;display:inline-flex;height:1.5rem;width:2.75rem;cursor:pointer;align-items:center;border-radius:var(--radius-full);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-border-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.switch,.switch:before{transition-duration:.15s;transition-duration:var(--motion-duration-base)}.switch:before{content:"";pointer-events:none;position:absolute;left:.125rem;top:50%;height:1.25rem;width:1.25rem;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:var(--radius-full);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.switch:before,.switch:disabled{background-color:var(--color-surface)}.switch:disabled{cursor:not-allowed;border-color:var(--color-border-subtle);color:var(--color-muted);opacity:.6}.switch.is-on,.switch[aria-checked=true]{border-color:var(--color-info-strong);background-color:var(--color-info-strong)}.switch.is-on:before,.switch[aria-checked=true]:before{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-reduced-motion:reduce){.\!checkbox,.\!checkbox:after,.checkbox,.checkbox:after,.form-control,.menu__item,.popover__panel,.switch,.switch:before{transition:none!important}}#playerModal.bv-modal{display:flex}.bv-modal{position:fixed;inset:0;z-index:var(--z-modal-root);display:flex;align-items:center;justify-content:center;padding:1.5rem}@media (min-width:640px){.bv-modal{padding:2rem}}.bv-modal.hidden,.bv-modal[hidden]{display:none!important}.bv-modal__panel{outline:2px solid transparent;outline-offset:2px}.bv-modal__panel:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.bv-modal__panel{position:relative;z-index:var(--z-modal-content);width:100%;max-width:38rem;border-radius:1.75rem;border-width:1px;border-color:var(--color-border-translucent);padding:1.75rem 2rem 2rem;text-align:left;color:var(--color-text);--tw-shadow:var(--shadow-modal);--tw-shadow-colored:var(--shadow-modal);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--color-modal-surface,var(--color-overlay-panel))}.bv-modal__panel:focus-visible{border-color:var(--color-border-translucent-bright)}.bv-modal-backdrop{position:absolute;inset:0;z-index:var(--z-modal-overlay);--tw-backdrop-saturate:saturate(1.5);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background-color:var(--color-modal-backdrop,var(--color-overlay-muted));backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px)}.bv-modal-backdrop[data-variant=veil]{--tw-backdrop-blur:blur(64px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background-color:var(--color-overlay-veil)}.bv-modal-backdrop[data-variant=muted]{background-color:var(--color-overlay-muted)}.modal-sheet{outline:2px solid transparent;outline-offset:2px}.modal-sheet:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.modal-sheet{z-index:var(--z-modal-content);max-width:38rem;border-radius:1.75rem;border-width:1px;border-color:var(--color-border-translucent);padding:1.75rem 2rem 2rem;text-align:left;color:var(--color-text);--tw-shadow:var(--shadow-modal);--tw-shadow-colored:var(--shadow-modal);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--color-modal-surface,var(--color-overlay-panel))}.modal-sheet:focus-visible{border-color:var(--color-border-translucent-bright)}#playerModal>.modal-sheet{max-width:none;width:100%;height:100%;padding:0;border-radius:0;box-shadow:none;border:none;background:transparent;display:flex;align-items:stretch}#modalContainer>[id$=Modal]:not(#playerModal) .modal-sheet{z-index:var(--z-modal-content)}.modal-sheet{position:relative;margin-top:0;margin-bottom:0;width:100%;max-width:90%;overflow:hidden}@media (min-width:1024px){.modal-sheet{max-width:56rem}}#playerModal.modal-header,.modal-header{display:flex}.modal-header{align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:1.75rem 2rem 1rem;background:transparent;border:0}.modal-header[data-variant=flush]{padding:0;background:transparent}.modal-close{outline:2px solid transparent;outline-offset:2px}.modal-close:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}#playerModal.modal-close{display:flex}.modal-close{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:var(--radius-full);background-color:var(--color-overlay-black);--tw-bg-opacity:0.4;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.modal-close:hover{background-color:var(--color-overlay-black);--tw-bg-opacity:0.6;color:var(--color-text)}.modal-body>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.modal-body{padding:.5rem 2rem 2rem;scrollbar-width:thin}.modal-body::-webkit-scrollbar{width:.4rem}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body::-webkit-scrollbar-thumb{background:var(--color-border-translucent);border-radius:9999px}#playerModal.modal-footer{display:flex}.modal-footer{display:flex;flex-direction:column;gap:.75rem;padding:1rem 2rem 2rem}#playerModal.modal-alert,.modal-alert{display:flex}.modal-alert{align-items:flex-start;gap:.75rem;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-warning-strong);--tw-border-opacity:0.6;padding:.75rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);backdrop-filter:blur(14px);background-color:var(--color-warning-glass)}.modal-alert,.modal-alert__icon{color:var(--color-warning-strong)}.modal-alert__icon{margin-top:.125rem;height:1.25rem;width:1.25rem;flex-shrink:0}.modal-tile{border-radius:var(--radius-xl);border-width:1px;border-color:var(--color-border-translucent);background-color:var(--color-overlay-panel-soft);padding:1rem 1.25rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text-frosted);background-color:var(--color-overlay-panel-glass-soft)}.modal-tile>h3{font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-text)}.modal-primary{outline:2px solid transparent;outline-offset:2px}.modal-primary:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.modal-primary{display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-info-strong);padding:.625rem 1.25rem;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-white);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-primary:hover{background-color:var(--color-info)}.modal-primary:focus-visible{background-color:var(--color-info-pressed)}.modal-primary:disabled{pointer-events:none;cursor:not-allowed;opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}body.iframe-form button.modal-primary{align-self:flex-start;margin-top:var(--space-md)}.modal-primary{width:100%;justify-content:center}@media (prefers-reduced-motion:reduce){.modal-primary{transition-property:none}}.grid-stack{display:grid;gap:var(--space-lg)}.grid-stack[data-variant=cards]{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.grid-stack[data-variant=cards]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1280px){.grid-stack[data-variant=cards]{grid-template-columns:repeat(3,minmax(0,1fr))}}#playerModal.grid-stack[data-orientation=vertical]{display:flex}.grid-stack[data-orientation=vertical]{display:flex;flex-direction:column;gap:var(--space-md)}#playerModal.bv-stack,.bv-stack{display:flex}.bv-stack{flex-direction:column;gap:var(--space-lg)}.bv-stack--tight{gap:var(--space-md)}.bv-grid-video{display:grid;gap:var(--space-xl);padding-top:var(--space-lg);padding-bottom:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}.\!card[data-alert=nsfw-owner],.card[data-alert=nsfw-owner]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-black)}.\!card[data-alert=nsfw-owner]:hover,.card[data-alert=nsfw-owner]:hover{--tw-border-opacity:0.6;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card img[data-thumbnail-state=blurred],.card img[data-thumbnail-state=blurred]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!card img[data-thumbnail-state=blurred]{filter:blur(18px)!important;transform:scale(1.05)!important}.card img[data-thumbnail-state=blurred]{filter:blur(18px);transform:scale(1.05)}.\!card[data-owner-is-viewer=true][data-url-health-state=offline][data-stream-health-state=unhealthy],.card[data-owner-is-viewer=true][data-url-health-state=offline][data-stream-health-state=unhealthy]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.video-visibility-toggle{display:inline-flex;align-items:center;gap:.25rem;border-radius:var(--radius-full);border-width:1px;border-color:var(--color-border);background-color:var(--color-panel);padding:.25rem}.video-visibility-toggle__option{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-panel);padding:.5rem .75rem;font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.video-visibility-toggle__option:not(.is-disabled):hover{background-color:var(--color-panel-hover);color:var(--color-text)}.video-visibility-toggle__option[data-active=true]{border-width:1px;border-color:var(--color-info);--tw-border-opacity:0.6;color:var(--color-text);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.video-visibility-toggle__option.is-disabled{cursor:not-allowed;opacity:.45}#playerModal.video-modal__container{display:flex}.video-modal__container{display:flex;height:100%;min-height:100vh;width:100%;flex:1 1 0%;flex-direction:column}#playerModal.player-modal__container{display:flex}.player-modal__container{display:flex;height:100%;min-height:100vh;width:100%;flex:1 1 0%;flex-direction:column}#playerModal>.bv-modal__panel{max-width:none;height:100%;border-radius:0;background:transparent;align-items:stretch}#playerModal>.bv-modal__panel,.video-modal__panel{width:100%;padding:0;box-shadow:none;border:none;display:flex}.video-modal__panel{position:relative;z-index:var(--z-modal-content);flex:1 1 auto;min-height:100%;flex-direction:column;overflow:visible;margin:0;border-radius:0;background-color:var(--color-surface)}#playerModal .watch-container{width:100%;max-width:1100px;margin-inline:auto;padding-inline:clamp(1rem,3vw,2rem)}#playerModal .modal-info-panel{display:flex;flex-direction:column;gap:1.5rem}#playerModal h2#videoTitle{margin:0;font-size:clamp(1.5rem,1.25rem + .5vw,1.875rem);font-weight:600;line-height:1.3;color:var(--color-text)}#playerModal .modal-meta{font-size:.875rem;line-height:1.4;color:var(--color-text-muted)}#playerModal .modal-view-count{font-weight:600;color:var(--color-text)}#playerModal .channel-card{display:flex;align-items:center;gap:1rem;padding:1.25rem 1.5rem;border-radius:1rem;border:1px solid var(--color-border-translucent);background-color:var(--color-surface);box-shadow:var(--shadow-sm)}@media (max-width:480px){#playerModal .modal-nav .icon-button{width:2rem;height:2rem;min-width:2rem;min-height:2rem}#playerModal .watch-container{padding-inline:.75rem}#playerModal .channel-card{gap:.75rem;padding:.75rem 1rem}}#playerModal .channel-card__avatar{flex-shrink:0;width:3.5rem;height:3.5rem;border-radius:9999px;overflow:hidden;background-color:var(--color-border-subtle)}#playerModal .channel-card__avatar img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}#playerModal .channel-card__name{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}#playerModal .channel-card__npub{margin:0;font-size:.875rem;color:var(--color-text-muted)}#playerModal .description-panel{padding:1.25rem 1.5rem;border-radius:1rem;border:1px solid var(--color-border-translucent);background-color:var(--color-surface);box-shadow:var(--shadow-sm)}#playerModal .description-panel p{margin:0;font-size:.875rem;line-height:1.6;color:var(--color-text)}.player-modal__content{position:relative;z-index:var(--z-modal-content);display:flex;flex:1 1 auto;width:100%;min-height:100%;flex-direction:column;overflow:visible;padding:0;margin:0;border:none;border-radius:0;background-color:var(--color-surface);box-shadow:none}@media (prefers-reduced-motion:reduce){.player-modal__content{transition-property:none}}#playerModal .modal-nav{position:sticky;top:0;z-index:60;--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:var(--color-overlay-darker);background-image:linear-gradient(180deg,var(--color-overlay-panel-gradient-start) 0,var(--color-overlay-panel-gradient-end) 100%);border-bottom:1px solid var(--color-border-translucent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#playerModal#playerModal .modal-nav__bar{display:flex}#playerModal .modal-nav__bar{display:flex;width:100%;align-items:center;gap:.75rem;padding:.5rem}@media (min-width:640px){#playerModal .modal-nav__bar{padding-left:1rem;padding-right:1rem}}#playerModal .modal-nav__context{font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;letter-spacing:.025em;color:var(--color-muted)}#playerModal#playerModal .modal-nav .modal-actions{display:flex}#playerModal .modal-nav .modal-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}#playerModal .modal-nav .icon-button{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1);width:2.5rem;height:2.5rem;background:var(--color-surface-tint-subtle);border:1px solid var(--color-border-translucent-medium);color:var(--color-text-muted)}#playerModal .modal-nav .icon-button:focus-visible,#playerModal .modal-nav .icon-button:hover{background:var(--color-border-translucent-bright);border-color:var(--color-border-translucent-strong);color:var(--color-text)}.modal-nav--hidden{--tw-translate-y:-100%}.modal-nav--hidden,.modal-nav--visible{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.modal-nav--visible{--tw-translate-y:0px}.video-modal__layout{display:grid;gap:1.5rem}@media (min-width:1024px){.video-modal__layout{gap:2rem}}#playerModal.video-modal__primary{display:flex}.video-modal__primary{display:flex;flex-direction:column;gap:1.5rem}#playerModal.video-modal__secondary{display:flex}.video-modal__secondary{display:flex;flex-direction:column;gap:1rem}.video-modal__video{position:relative;background-color:var(--color-black);padding-block:clamp(.5rem,2.5vw,1.25rem)}@media (min-width:1024px){.video-modal__video{position:sticky;top:5rem}}#playerModal .video-modal__video video{border-radius:.75rem;box-shadow:0 1rem 2.25rem var(--color-shadow-elevated);max-height:min(80vh,56.25vw);-o-object-fit:contain;object-fit:contain}.video-modal__media{display:block;aspect-ratio:16/9;width:100%;-o-object-fit:contain;object-fit:contain}#playerModal.video-modal__details{display:flex}.video-modal__details{display:flex;flex-direction:column;gap:1.5rem}.video-modal__meta{border-bottom-width:1px;border-color:var(--color-border);--tw-border-opacity:0.2;padding-bottom:1rem}#playerModal.video-modal__actions-row{display:flex}.video-modal__actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.video-modal__action-button{display:inline-flex;height:2.75rem;min-width:2.75rem;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.3;background-color:var(--color-panel);padding-left:.75rem;padding-right:.75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:600;color:var(--color-text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.video-modal__action-button:hover{background-color:var(--color-panel-hover)}.bv-modal.video-modal__action-label,.profile-pane.video-modal__action-label,.video-modal__action-label{display:none}@media (min-width:640px){.video-modal__action-label{display:inline}}.video-modal__action-icon{height:1.25rem;width:1.25rem}.video-modal__channel,.video-modal__description,.video-modal__stats{border-radius:1rem;border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.2;background-color:var(--color-surface);padding:1.25rem 1.5rem;--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.video-modal__progress{height:.5rem;width:100%;overflow:hidden;border-radius:var(--radius-full);background-color:var(--color-border-subtle)}#playerModal.video-modal__stat-metrics{display:flex}.video-modal__stat-metrics{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-muted)}#playerModal.profile-pane{display:flex}.profile-pane{display:flex;flex-direction:column;gap:var(--space-lg)}.profile-pane.hidden{display:none}.torrent-download-anchor{display:none!important}.torrent-clipboard-textarea{position:fixed;top:0;left:-9999px;opacity:0;width:0;height:0;pointer-events:none}.ui-grid{position:relative;width:100%;border-radius:var(--radius-xl);border-width:1px;border-color:var(--color-border-translucent);background-color:var(--color-surface);font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);box-sizing:content-box;transform:translateZ(0);border-width:var(--grid-border-width)}.ui-grid-render-container{position:relative}.ui-grid-render-container:focus,.ui-grid-viewport:focus{outline:none}.ui-grid-vertical-bar{position:absolute;right:0;width:0}.ui-grid-cell:not(:last-child) .ui-grid-vertical-bar,.ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar{width:var(--grid-border-width);background-color:var(--color-border-translucent-medium)}.ui-grid-contents-wrapper{position:relative;height:100%;width:100%}.ui-grid-header{border-bottom:var(--grid-border-width) solid var(--color-border-translucent-medium);box-sizing:border-box}.ui-grid-top-panel{position:relative;overflow:hidden;font-weight:600;background-color:var(--color-surface-alt);color:var(--color-muted-strong)}.ui-grid-footer-viewport,.ui-grid-header-viewport{overflow:hidden}.ui-grid-footer-canvas,.ui-grid-header-canvas{display:table;width:100%}.ui-grid-footer-cell-wrapper,.ui-grid-header-cell-wrapper{position:relative;display:table;box-sizing:border-box;height:100%;width:100%}.ui-grid-footer-cell-row,.ui-grid-header-cell-row{display:table-row}.ui-grid-footer-cell,.ui-grid-header-cell{position:relative;display:table-cell;box-sizing:border-box;border-right:var(--grid-border-width) solid var(--color-border-translucent-medium);background-color:inherit;font-size:var(--grid-header-font-size);letter-spacing:var(--grid-header-letter-spacing);text-transform:uppercase;padding-block:var(--grid-cell-padding-block)}.ui-grid-header-cell{padding-inline:calc(var(--grid-cell-padding-inline) + var(--grid-sort-indicator-size))}.ui-grid-footer-cell{padding-inline:var(--grid-cell-padding-inline)}.ui-grid-footer-cell:last-child,.ui-grid-header-cell:last-child{border-right:0}.ui-grid-header-cell .sortable{cursor:pointer}.ui-grid-header-cell .ui-grid-sort-priority-number{margin-left:calc(var(--space-xs)*-1)}.ui-grid-sortarrow.down:before{transform:rotate(180deg)}.ui-grid-viewport{min-height:var(--grid-viewport-min-height);position:relative;overflow-y:auto;-webkit-overflow-scrolling:touch}.ui-grid-canvas{position:relative;padding-top:var(--grid-canvas-padding-top)}.ui-grid-row{border-bottom:var(--grid-border-width) solid var(--color-border-translucent)}.ui-grid-row:nth-child(odd) .ui-grid-cell{background-color:var(--color-surface)}.ui-grid-row:nth-child(2n) .ui-grid-cell{background-color:var(--color-surface-alt)}.ui-grid-row:last-child .ui-grid-cell{border-bottom:var(--grid-border-width) solid var(--color-border-translucent-medium)}.ui-grid-row:hover .ui-grid-cell{background-color:var(--color-panel-hover)}.ui-grid-row-selected>[ui-grid-row]>.ui-grid-cell{background-color:var(--color-info-glass);color:var(--color-text)}.ui-grid-cell{float:left;overflow:hidden;box-sizing:border-box;border-right:var(--grid-border-width) solid var(--color-border-translucent-medium)}.ui-grid-cell:last-child{border-right:0}.ui-grid-cell-contents{box-sizing:border-box;padding:var(--grid-cell-padding-block) var(--grid-cell-padding-inline);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;height:100%}.ui-grid-cell-contents-hidden{display:none;visibility:hidden;width:0;height:0}.ui-grid-cell-focus{outline:none;background-color:var(--color-info-glass)}.ui-grid-focuser{position:absolute;inset:0;z-index:-1;width:100%;height:100%}.ui-grid-focuser:focus{outline:none;box-shadow:0 0 0 var(--grid-border-width) var(--color-info-glass)}.ui-grid-offscreen{position:absolute;width:var(--grid-border-width);height:var(--grid-border-width);margin:calc(var(--grid-border-width)*-1);border:0;clip:rect(0 0 0 0);white-space:nowrap;overflow:hidden}.ui-grid-menu-button{inset-inline-end:0;inset-block-start:0;cursor:pointer;height:calc(var(--space-xl) + var(--space-xs));font-weight:400}.ui-grid-menu,.ui-grid-menu-button{z-index:2;position:absolute;background-color:var(--color-surface-alt);border:var(--grid-border-width) solid var(--color-border-translucent-medium)}.ui-grid-menu{padding:var(--space-xs) var(--space-sm) var(--space-md);box-sizing:border-box;border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.ui-grid-column-resizer{position:absolute;inset-block:0;width:var(--grid-resizer-width);cursor:col-resize}.ui-grid-column-resizer.left{inset-inline-start:0}.ui-grid-column-resizer.right{inset-inline-end:0}.ui-grid.column-resizing{cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none}.ui-grid.column-resizing .ui-grid-resize-overlay{position:absolute;inset-block:0;width:var(--grid-resize-overlay-width);background-color:var(--color-border-translucent-bright)}.ui-grid-row-saving .ui-grid-cell{color:var(--color-muted-strong)}.ui-grid-row-dirty .ui-grid-cell{color:var(--color-warning-strong)}.ui-grid-row-error .ui-grid-cell{color:var(--color-critical-strong)}.ui-grid-disable-selection{-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}@keyframes ui-grid-spin{to{transform:rotate(1turn)}}.ngn{pointer-events:none;position:fixed;inset-inline:0;display:none;z-index:var(--z-notify);padding:var(--notify-padding-block) var(--notify-padding-inline);text-align:center;font-size:var(--notify-font-size);font-weight:600;color:var(--color-text);text-shadow:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}.ngn.ngn-enter-active,.ngn.ngn-leave-active,.ngn.ngn-visible{pointer-events:auto}.ngn-top{inset-block-start:0}.ngn-bottom{inset-block-end:0}.ngn-dismiss{pointer-events:auto;display:none;margin-left:auto;margin-right:var(--space-md);border-radius:var(--notify-dismiss-radius);border:0;background-color:var(--notify-dismiss-background);color:var(--notify-dismiss-color);font-size:var(--notify-dismiss-font-size);font-weight:700;line-height:1;width:var(--notify-dismiss-size);height:var(--notify-dismiss-size);align-items:center;justify-content:center;transition:background-color var(--motion-duration-base) var(--motion-ease-out)}.ngn-sticky .ngn-dismiss{display:inline-flex}.ngn-dismiss:hover{background-color:var(--notify-dismiss-background-hover)}.ngn-dismiss:active{background-color:color-mix(in srgb,var(--notify-dismiss-background-hover) 80%,var(--color-panel) 20%)}.ngn-info{background-color:var(--color-info-strong)}.ngn-error{background-color:var(--color-critical-strong)}.ngn-success{background-color:var(--color-info)}.ngn-warn{background-color:var(--color-warning-strong);color:var(--color-text-strong)}.ngn-grimace{background-color:var(--color-secondary)}.ngn-prime{color:var(--color-text)}.ngn-prime.ngn-info{background-color:color-mix(in srgb,var(--color-info-strong) 85%,var(--color-surface-alt) 15%)}.ngn-prime.ngn-error{background-color:color-mix(in srgb,var(--color-critical-strong) 85%,var(--color-surface-alt) 15%)}.ngn-prime.ngn-success{background-color:color-mix(in srgb,var(--color-info) 85%,var(--color-surface-alt) 15%)}.ngn-prime.ngn-warn{background-color:color-mix(in srgb,var(--color-warning-strong) 85%,var(--color-surface-alt) 15%)}.ngn-prime.ngn-grimace{background-color:color-mix(in srgb,var(--color-secondary) 85%,var(--color-surface-alt) 15%)}.ngn-pastel{color:var(--color-text-strong)}.ngn-pastel.ngn-info{background-color:color-mix(in srgb,var(--color-info) 45%,var(--color-surface) 55%)}.ngn-pastel.ngn-error{background-color:color-mix(in srgb,var(--color-critical-strong) 45%,var(--color-surface) 55%)}.ngn-pastel.ngn-success{background-color:color-mix(in srgb,var(--color-info) 45%,var(--color-surface) 55%)}.ngn-pastel.ngn-warn{background-color:color-mix(in srgb,var(--color-warning-strong) 45%,var(--color-surface) 55%)}.ngn-pastel.ngn-grimace{background-color:color-mix(in srgb,var(--color-secondary) 45%,var(--color-surface) 55%)}.ngn-pitchy{color:var(--color-text)}.ngn-pitchy.ngn-info{background-color:color-mix(in srgb,var(--color-info-pressed) 75%,var(--color-surface-alt) 25%)}.ngn-pitchy.ngn-error{background-color:color-mix(in srgb,var(--color-critical-strong) 75%,var(--color-surface-alt) 25%)}.ngn-pitchy.ngn-success{background-color:color-mix(in srgb,var(--color-info) 75%,var(--color-surface-alt) 25%)}.ngn-pitchy.ngn-warn{background-color:color-mix(in srgb,var(--color-warning-strong) 75%,var(--color-surface-alt) 25%)}.ngn-pitchy.ngn-grimace{background-color:color-mix(in srgb,var(--color-secondary) 75%,var(--color-surface-alt) 25%)}@media (max-width:30rem){.ngn{font-size:var(--font-size-sm);padding:var(--space-sm) var(--space-lg)}.ngn-dismiss{width:var(--notify-dismiss-size-compact);height:var(--notify-dismiss-size-compact);font-size:var(--font-size-xs)}}.watch-history-card{outline:2px solid transparent;outline-offset:2px}.watch-history-card:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card{position:relative;border-radius:var(--radius-lg);border-width:1px;border-color:transparent;background-color:var(--color-card);color:var(--color-text);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card:focus-visible{border-color:var(--color-info);--tw-border-opacity:0.4;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card[data-state=critical]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.watch-history-card[data-state=private]{background-color:var(--color-card-private);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg)}.watch-history-card[data-state=disabled],.watch-history-card[data-state=private]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card[data-state=disabled]{opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.watch-history-card[data-alert=nsfw-owner]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-black)}.watch-history-card[data-alert=nsfw-owner]:hover{--tw-border-opacity:0.6;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card img[data-thumbnail-state=blurred]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1);filter:blur(18px);transform:scale(1.05)}.watch-history-card[data-owner-is-viewer=true][data-url-health-state=offline][data-stream-health-state=unhealthy]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.watch-history-card[data-motion=enter]{opacity:0;animation:card-motion-enter .22s ease-out forwards}#playerModal.watch-history-card{display:flex}.watch-history-card{display:flex;flex-wrap:wrap;align-items:stretch;gap:1.25rem;padding:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}@media (prefers-reduced-motion:reduce){.watch-history-card,.watch-history-card[data-motion=enter]{transition-property:none}.watch-history-card[data-motion=enter]{opacity:1;animation:none}}.watch-history-card:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width:640px){.watch-history-card{gap:1.5rem;padding:1.25rem}}.watch-history-card--private{border-color:var(--color-info);--tw-border-opacity:0.6}#playerModal.watch-history-card__primary{display:flex}.watch-history-card__primary{display:flex;min-width:0;flex:1 1 0%;flex-wrap:wrap;align-items:stretch;gap:1rem}@media (min-width:640px){.watch-history-card__primary{flex-wrap:nowrap}}.watch-history-card__thumbnail{display:block;flex:none;color:var(--color-text);text-decoration-line:none}@media (min-width:640px){.watch-history-card__thumbnail{width:14rem}}.watch-history-card__thumbnailInner{aspect-ratio:16/9;width:100%;overflow:hidden;border-radius:var(--radius-lg);background-color:var(--color-surface)}.watch-history-card__thumbnailInner img{height:100%;width:100%;-o-object-fit:cover;object-fit:cover}#playerModal.watch-history-card__details{display:flex}.watch-history-card__details{display:flex;min-width:0;flex:1 1 0%;flex-direction:column;justify-content:center;gap:var(--space-sm)}.watch-history-card__title{cursor:pointer;font-size:var(--font-size-lg);line-height:var(--line-height-base);font-weight:600;line-height:1.375;color:var(--color-text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.watch-history-card__title:focus,.watch-history-card__title:hover{color:var(--color-info)}.watch-history-card__created{font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-muted)}#playerModal.watch-history-card__meta{display:flex}.watch-history-card__meta{display:flex;min-width:0;flex-direction:column;justify-content:space-between;gap:1rem}@media (min-width:640px){.watch-history-card__meta{min-width:14rem;flex:0 0 16rem}}.watch-history-card__watched{font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-border-subtle)}#playerModal.watch-history-card__creator{display:flex}.watch-history-card__creator{display:flex;align-items:center;gap:.75rem}#playerModal.watch-history-card__creatorAvatar{display:flex}.watch-history-card__creatorAvatar{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:var(--radius-full);background-color:var(--color-panel);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card__creatorAvatar:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.5}.watch-history-card__creatorAvatar:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.5}.watch-history-card__creatorAvatar img{height:100%;width:100%;border-radius:var(--radius-full);-o-object-fit:cover;object-fit:cover}.watch-history-card__creatorName{cursor:pointer;background-color:transparent;padding:0;text-align:left;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:500;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card__creatorName:hover{color:var(--color-info)}.watch-history-card__creatorName:focus-visible{color:var(--color-info)}#playerModal.watch-history-card__actions{display:flex}.watch-history-card__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.watch-history-card__action{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-panel);padding:.5rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:500;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card__action:hover{border-color:var(--color-border);background-color:var(--color-surface-alt);color:var(--color-text)}.watch-history-card__action:focus-visible{border-color:var(--color-border);background-color:var(--color-surface-alt);color:var(--color-text)}.watch-history-card__action--primary{background-color:var(--color-info-strong);color:var(--color-white)}.watch-history-card__action--primary:hover{background-color:var(--color-info-pressed)}.watch-history-card__action--primary:focus-visible{background-color:var(--color-info-pressed)}.watch-history-card__action--danger{background-color:var(--color-critical);color:var(--color-white)}.watch-history-card__action--danger:hover{background-color:var(--color-critical-strong)}.watch-history-card__action--danger:focus-visible{background-color:var(--color-critical-strong)}.\!container{max-width:92.5rem!important;margin:0 auto!important;padding:1rem!important}.container{max-width:92.5rem;margin:0 auto;padding:1rem}.fade-in{opacity:0;animation:interface-fade-in .28s ease-out forwards;animation-delay:var(--fade-in-delay,0ms)}.fade-in-delay-100{--fade-in-delay:100ms}.fade-in-delay-200{--fade-in-delay:200ms}.fade-in-delay-300{--fade-in-delay:300ms}.\!card[data-motion=enter]{opacity:0!important;animation:card-motion-enter .22s ease-out forwards!important}.card[data-motion=enter]{opacity:0;animation:card-motion-enter .22s ease-out forwards}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;flex:0 0 2.5rem;line-height:0;background-color:var(--color-neutral-700);color:var(--color-white);border:none;border-radius:9999px;cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease}.icon-button:hover{background-color:var(--color-neutral-600)}.icon-button:active,.icon-button:focus{outline:none;box-shadow:0 0 0 .1875rem var(--color-ring-alert)}.icon-image{width:1.25rem;height:1.25rem;pointer-events:none}.modal-nav .icon-button{box-shadow:none;padding:0;gap:0;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;border:none}.modal-meta{gap:.5rem}.modal-meta,.modal-view-count{display:inline-flex;align-items:center}.modal-view-count{gap:.25rem;font-size:.875rem;line-height:1.25rem;color:var(--color-muted-alt);white-space:nowrap}.view-count-text{white-space:nowrap;color:var(--color-muted-strong)}.ratio-16-9{position:relative;width:100%;padding-top:56.25%;background-color:var(--color-card)}.ratio-16-9>img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}#modalContainer{position:fixed;inset:0;z-index:var(--z-modal-root);pointer-events:none;isolation:isolate}#modalContainer>*{pointer-events:auto}#modalContainer>[id$=Modal]:not(#playerModal){z-index:var(--z-modal-root)}#modalContainer>[id$=Modal]:not(#playerModal)>.bv-modal-backdrop{z-index:var(--z-modal-overlay)}#modalContainer>[id$=Modal]:not(#playerModal) .bv-modal__panel{z-index:var(--z-modal-content)}#modalContainer>#playerModal{z-index:var(--z-modal-player)}#modalContainer>#playerModal .player-modal__container,#modalContainer>#playerModal .player-modal__content{z-index:var(--z-modal-content)}#playerModal{position:fixed;inset:0;z-index:var(--z-modal-player);display:none;flex-direction:column;align-items:stretch;justify-content:stretch;width:100vw;height:100vh;background-color:var(--color-surface);color:var(--color-subtle-text);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#playerModal.flex{display:flex}#modalVideo{width:100%;aspect-ratio:16/9;background-color:var(--color-black)}.status-banner{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding:1rem;border-radius:.5rem;background-color:var(--color-overlay-panel);color:var(--color-subtle)}.status-banner .status-spinner{animation:spin 1s linear infinite;border-radius:9999px;border:.125rem solid var(--color-border-neutral-soft);border-top-color:var(--color-page-alt);height:1.25rem;width:1.25rem}.status-spinner--inline{animation:spin 1s linear infinite;border-radius:9999px;border:.125rem solid var(--color-border-info-soft);border-top-color:var(--color-info);display:inline-block;height:1rem;width:1rem}body.iframe-form{background-color:transparent;color:var(--color-text);font-family:var(--font-family-sans);margin:var(--space-lg)}body.iframe-form .container{width:100%;max-width:100%;margin:0;padding:0}body.iframe-form .\!container{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}body.iframe-form .form-container{background-color:var(--color-surface-alt);border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--color-text);display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg)}body.iframe-form .form-container>p{margin:0}body.iframe-form form{display:flex;flex-direction:column}body.iframe-form form>*+*{margin-top:var(--space-sm)}body.iframe-form form h1,body.iframe-form form h2{color:var(--color-text);margin-top:var(--space-md)}body.iframe-form label{color:var(--color-subtle-text);display:block;font-weight:600;margin-top:var(--space-sm)}body.iframe-form label+.form-control,body.iframe-form label+.select,body.iframe-form label+.textarea{margin-top:var(--space-xs)}body.iframe-form .checkbox-group,body.iframe-form .radio-group{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-xs)}body.iframe-form .checkbox-group label,body.iframe-form .radio-group label{align-items:center;color:var(--color-subtle-text);display:inline-flex;font-weight:500;gap:var(--space-xs);margin:0}body.iframe-form .checkbox-group input[type=checkbox],body.iframe-form .radio-group input[type=radio]{margin:0}body.iframe-form .radio-group input[type=radio]{accent-color:var(--color-info-strong)}body.iframe-form button.btn{align-self:flex-start;margin-top:var(--space-md)}body.iframe-form #status{background:var(--color-surface);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px var(--color-border-translucent);color:var(--color-subtle-text);min-height:5rem;padding:var(--space-sm);white-space:pre-wrap}body.iframe-form .status-line{color:var(--color-subtle-text);margin:var(--space-2xs) 0}body.iframe-form .status-line.error{color:var(--color-critical-strong)}body.iframe-form .status-line.\!error{color:var(--color-critical-strong)!important}body.iframe-form .status-line.success{color:var(--color-info-strong)}body.iframe-form .status-line.\!success{color:var(--color-info-strong)!important}body.iframe-form .status-line.warn{color:var(--color-warning-strong)}@media (max-width:640px){body.iframe-form{margin:var(--space-md)}body.iframe-form .form-container{padding:var(--space-md)}}#sidebarContainer{position:relative;overflow:visible}#sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);min-width:var(--sidebar-width);height:100vh;height:100dvh;color:var(--color-text-frosted-strong);overflow-x:visible;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;background:transparent;border-right:none;backdrop-filter:none;-webkit-backdrop-filter:none;transition:width .2s ease,transform .3s ease;z-index:var(--z-sidebar);box-shadow:none;isolation:isolate}#sidebar .sidebar__inner{padding:var(--space-sidebar-shell-block-start) var(--space-sidebar-shell-inline) var(--space-sidebar-shell-block-end);border-radius:var(--radius-sidebar-shell);border:1px solid var(--color-sidebar-border-strong);background:radial-gradient(140% 140% at 15% 10%,color-mix(in srgb,var(--color-sidebar-accent-start) 46%,transparent) 0,transparent 65%),radial-gradient(130% 130% at 82% 88%,color-mix(in srgb,var(--color-sidebar-accent-end) 42%,transparent) 0,transparent 70%),linear-gradient(160deg,color-mix(in srgb,var(--color-sidebar-surface) 92%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 98%,transparent) 100%);box-shadow:var(--shadow-sidebar-shell);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);isolation:isolate;transition:border-color .2s ease,box-shadow .22s ease,background .22s ease,backdrop-filter .22s ease}#sidebar .sidebar__inner,.sidebar-scroll{display:flex;flex-direction:column;height:100%;width:100%;overflow:visible}.sidebar-scroll{gap:var(--space-sidebar-scroll-gap);min-height:0;flex:1 1 auto}.sidebar-panel{position:relative;width:100%;display:flex;flex-direction:column;gap:var(--space-sidebar-panel-gap);padding:var(--space-sidebar-panel-padding-block) var(--space-sidebar-panel-padding-inline);border-radius:var(--radius-sidebar-panel);border:none;background:transparent;box-shadow:none;color:inherit;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:hidden;isolation:isolate;transition:border-color .2s ease,box-shadow .22s ease,background .22s ease}.sidebar-panel--primary{flex:1 1 auto;min-height:0}.sidebar-panel__header{display:none;justify-content:flex-end;margin-bottom:var(--space-md)}.sidebar-collapse-toggle{display:none;align-items:center;justify-content:center;width:var(--sidebar-control-size);height:var(--sidebar-control-size);border-radius:9999px;border:1px solid var(--color-border-translucent-medium);background:var(--color-surface-tint-subtle);color:inherit;cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease;flex-shrink:0;box-sizing:border-box}.sidebar-collapse-toggle:hover{background:var(--color-border-translucent);border-color:var(--color-border-translucent-stronger);color:var(--color-text)}.sidebar-collapse-toggle:focus-visible{outline:.125rem solid var(--color-secondary);outline-offset:.25rem}.sidebar-collapse-toggle__icon{width:1.125rem;height:1.125rem;transition:transform .2s ease}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-xs);opacity:1;transition:opacity .16s ease;width:100%}.sidebar-nav-link{--sidebar-nav-translate-x:0;--sidebar-nav-link-highlight-opacity:0;--sidebar-nav-link-highlight-scale:0.96;display:flex;align-items:center;gap:var(--space-sidebar-footer-gap);padding:var(--space-sidebar-nav-padding-block) var(--space-md);min-height:var(--sidebar-control-size);border-radius:var(--radius-sidebar-nav);font-size:var(--font-size-sidebar-nav);font-weight:600;letter-spacing:.015em;color:var(--color-text-frosted-strong);text-decoration:none;width:100%;position:relative;border:1px solid var(--color-sidebar-border);background:linear-gradient(155deg,color-mix(in srgb,var(--color-sidebar-surface) 72%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 48%,transparent) 100%);box-shadow:inset 0 0 0 .5px var(--color-sidebar-border);transform:translateX(var(--sidebar-nav-translate-x));transition:color .18s ease,border-color .2s ease,box-shadow .22s ease,transform .22s ease;overflow:hidden;isolation:isolate;backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%)}.sidebar-nav-link:after,.sidebar-nav-link:before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;transition:opacity .22s ease,transform .24s ease;z-index:-1}.sidebar-nav-link:before{background:linear-gradient(120deg,var(--color-sidebar-accent-start) 0,var(--color-sidebar-accent-end) 100%);opacity:var(--sidebar-nav-link-highlight-opacity);transform:scale(var(--sidebar-nav-link-highlight-scale));filter:saturate(140%)}.sidebar-nav-link:after{background:linear-gradient(105deg,var(--color-sidebar-hover) 0,transparent 75%);opacity:.22;mix-blend-mode:screen;z-index:-2}.sidebar-nav-link:focus-visible,.sidebar-nav-link:hover{--sidebar-nav-link-highlight-opacity:1;--sidebar-nav-link-highlight-scale:1.02;--sidebar-nav-translate-x:0.35rem;color:var(--color-white);border-color:var(--color-sidebar-hover-strong);box-shadow:0 0 0 1px var(--color-sidebar-hover-strong),var(--shadow-sidebar-accent)}.sidebar-nav-link:focus-visible{outline:none;box-shadow:var(--shadow-sidebar-focus-ring),var(--shadow-sidebar-accent)}.sidebar-nav-link:focus-visible:after,.sidebar-nav-link:hover:after{opacity:.35}.sidebar-nav-link--sub{font-size:var(--font-size-sidebar-subnav);font-weight:500;color:var(--color-sidebar-text-muted);padding-block:var(--space-sidebar-subnav-padding-block);letter-spacing:.02em;--sidebar-nav-link-highlight-opacity:0.25;--sidebar-nav-link-highlight-scale:1}.sidebar-icon{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem;flex-shrink:0;display:block}.sidebar-footer{flex-direction:column;margin-top:auto;z-index:2}.sidebar-dropup-trigger,.sidebar-footer{display:flex;gap:var(--space-sidebar-footer-gap);position:relative}.sidebar-dropup-trigger{align-items:center;justify-content:space-between;width:100%;padding:var(--space-sidebar-trigger-padding-block) var(--space-md);min-height:var(--sidebar-control-size);border-radius:var(--radius-sidebar-nav);border:1px solid var(--color-sidebar-border);background:linear-gradient(155deg,color-mix(in srgb,var(--color-sidebar-surface) 80%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 58%,transparent) 100%);color:var(--color-text-frosted);font-size:var(--font-size-sidebar-trigger);font-weight:600;cursor:pointer;box-sizing:border-box;flex-shrink:0;overflow:hidden;isolation:isolate;backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);box-shadow:inset 0 0 0 .5px var(--color-sidebar-border),var(--shadow-sidebar-trigger);transition:border-color .2s ease,color .2s ease,box-shadow .22s ease,background .22s ease}.sidebar-dropup-trigger:before{background:linear-gradient(120deg,var(--color-sidebar-accent-start) 0,var(--color-sidebar-accent-end) 100%);opacity:0;transform:scale(.96);transition:opacity .2s ease,transform .22s ease;z-index:-1;filter:saturate(140%)}.sidebar-dropup-trigger:after,.sidebar-dropup-trigger:before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none}.sidebar-dropup-trigger:after{background:linear-gradient(110deg,var(--color-sidebar-hover) 0,transparent 80%);opacity:.18;mix-blend-mode:screen;transition:opacity .2s ease;z-index:-2}.sidebar-dropup-trigger:focus-visible,.sidebar-dropup-trigger:hover{color:var(--color-white);border-color:var(--color-sidebar-hover-strong);box-shadow:0 0 0 1px var(--color-sidebar-hover-strong),var(--shadow-sidebar-dropup)}.sidebar-dropup-trigger:focus-visible:before,.sidebar-dropup-trigger:hover:before{opacity:1;transform:scale(1.02)}.sidebar-dropup-trigger:focus-visible:after,.sidebar-dropup-trigger:hover:after{opacity:.35}.sidebar-dropup-trigger:focus-visible{outline:none;box-shadow:var(--shadow-sidebar-focus-ring),var(--shadow-sidebar-dropup)}.sidebar-dropup-trigger__glyph{width:1.25rem;height:1.25rem;opacity:.9}.sidebar-dropup-trigger__chevron{width:1.125rem;height:1.125rem;transition:transform .18s ease}.sidebar-dropup-trigger[aria-expanded=true] .sidebar-dropup-trigger__chevron,.sidebar-dropup-trigger__chevron.is-rotated{transform:rotate(180deg)}.sidebar-dropup-panel{position:absolute;left:0;right:0;bottom:calc(100% + var(--space-sidebar-popover-offset));border-radius:1rem;border:1px solid var(--color-sidebar-border-strong);background:linear-gradient(160deg,color-mix(in srgb,var(--color-sidebar-surface) 88%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 68%,transparent) 100%);box-shadow:inset 0 0 0 .5px var(--color-sidebar-border),var(--shadow-sidebar-panel);padding:var(--space-sidebar-popover-padding-block) var(--space-sidebar-popover-padding-inline);color:var(--color-text-frosted);opacity:0;visibility:hidden;pointer-events:none;transform:translateY(var(--space-sm));transition:opacity .18s ease,transform .18s ease,visibility .18s ease,box-shadow .22s ease;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);z-index:5;isolation:isolate}.sidebar-dropup-panel[data-state=expanded]{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.sidebar-dropup-panel__inner{display:flex;flex-direction:column;gap:var(--space-sidebar-popover-gap)}#sidebar[data-footer-state=expanded] .sidebar-nav{opacity:0;pointer-events:none}#sidebar[data-footer-state=collapsed] .sidebar-nav{opacity:1}#sidebar.sidebar-open{box-shadow:var(--shadow-sidebar-shell),0 0 0 1px var(--color-sidebar-border-strong)}#sidebarOverlay{position:fixed;inset:0;background:var(--color-overlay-muted);opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:var(--z-sidebar-overlay)}body.sidebar-open #sidebarOverlay{opacity:1;pointer-events:auto}.sidebar-loading-wrapper{display:flex;justify-content:center;align-items:center;padding:3rem 0;width:100%;grid-column:1/-1}.sidebar-loading-indicator{display:inline-flex;align-items:center;gap:.75rem;color:var(--color-muted-strong);font-size:.875rem;font-weight:500;letter-spacing:.01em}.sidebar-loading-text{white-space:nowrap}.locked-input{background-color:var(--color-overlay-panel-soft)!important;border-color:var(--color-border-sidebar-strong)!important;color:var(--color-muted)!important;cursor:default}.locked-input:focus{outline:none;box-shadow:none}@media (max-width:767px){#sidebar{transform:translate3d(-100%,0,0);width:min(var(--sidebar-width-expanded),calc(100vw - 3rem))}#sidebar.sidebar-open{transform:translateZ(0)}body.sidebar-open{overflow:hidden}}@media (min-width:768px){.sidebar-panel__header{display:flex}.sidebar-collapse-toggle{display:inline-flex}#sidebar{transform:translateX(0)!important;width:var(--sidebar-width);overflow:visible}#sidebar.sidebar-open{box-shadow:none}#sidebarOverlay{display:none}#app{box-sizing:border-box;transition:margin-left .2s ease,width .2s ease,max-width .2s ease}#app[data-sidebar-state=collapsed]{margin-left:calc(var(--sidebar-width-collapsed) + var(--sidebar-content-gap));width:calc(100vw - var(--sidebar-width-collapsed) - var(--sidebar-content-gap));max-width:calc(100vw - var(--sidebar-width-collapsed) - var(--sidebar-content-gap))}#app[data-sidebar-state=expanded]{margin-left:calc(var(--sidebar-width-expanded) + var(--sidebar-content-gap));width:calc(100vw - var(--sidebar-width-expanded) - var(--sidebar-content-gap));max-width:calc(100vw - var(--sidebar-width-expanded) - var(--sidebar-content-gap))}#app.sidebar-collapsed,#sidebar.sidebar-collapsed,body.sidebar-collapsed{--sidebar-width:var(--sidebar-width-collapsed)}#app.sidebar-expanded,#sidebar.sidebar-expanded,body.sidebar-expanded{--sidebar-width:var(--sidebar-width-expanded)}#sidebar.sidebar-collapsed .sidebar-nav-link,body.sidebar-collapsed #sidebar .sidebar-nav-link{justify-content:center;width:var(--sidebar-control-size);padding:0;margin-inline:auto;border-radius:9999px;--sidebar-nav-translate-x:0;--sidebar-nav-link-highlight-scale:1}#sidebar.sidebar-expanded .sidebar-nav-link,body.sidebar-expanded #sidebar .sidebar-nav-link{justify-content:flex-start}#sidebar.sidebar-collapsed .sidebar-text,body.sidebar-collapsed #sidebar .sidebar-text{display:none}#sidebar.sidebar-collapsed .sidebar__inner,body.sidebar-collapsed #sidebar .sidebar__inner{padding-inline:.25rem}#sidebar.sidebar-collapsed .sidebar-panel,body.sidebar-collapsed #sidebar .sidebar-panel{padding-inline:.375rem}#sidebar.sidebar-collapsed .sidebar-panel__header,body.sidebar-collapsed #sidebar .sidebar-panel__header{justify-content:center}#sidebar.sidebar-collapsed .sidebar-collapse-toggle,body.sidebar-collapsed #sidebar .sidebar-collapse-toggle{margin-inline:auto}#sidebar .sidebar-toggle-icon--rotated{transform:rotate(180deg)}#sidebar.sidebar-collapsed .sidebar-toggle-icon--rotated,body.sidebar-collapsed #sidebar .sidebar-toggle-icon--rotated{transform:rotate(0deg)}#sidebar.sidebar-collapsed .sidebar-dropup-trigger,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger{justify-content:center;width:var(--sidebar-control-size);height:var(--sidebar-control-size);padding:0;margin-inline:auto;border-radius:9999px}#sidebar.sidebar-collapsed .sidebar-dropup-trigger .sidebar-text,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger .sidebar-text,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger__chevron{display:none}#sidebar.sidebar-collapsed .sidebar-dropup-trigger__glyph,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger__glyph{margin:0}#sidebar.sidebar-collapsed .sidebar-nav-link:focus-visible,#sidebar.sidebar-collapsed .sidebar-nav-link:hover,body.sidebar-collapsed #sidebar .sidebar-nav-link:focus-visible,body.sidebar-collapsed #sidebar .sidebar-nav-link:hover{--sidebar-nav-translate-x:0}}@keyframes card-motion-enter{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes video-thumbnail-fade-in{0%{opacity:0}to{opacity:1}}@keyframes interface-fade-in{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:translateY(1.25rem)}to{opacity:1;transform:translateY(0)}}.ui-grid-row{border-bottom:1px solid var(--color-border-subtle,#d1d5db)}.status-line{margin-top:.25rem;margin-bottom:.25rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);line-height:1.375;color:var(--color-text)}.status-line.error{color:var(--color-critical-strong)}.status-line.\!error{color:var(--color-critical-strong)!important}.status-line.success{color:var(--color-blog-green-500)}.status-line.\!success{color:var(--color-blog-green-500)!important}.status-line.warn{color:var(--color-warning-strong)}.blog-html{font-size:var(--blog-font-size-root)}@media (max-width:768px){.blog-html{font-size:var(--font-size-lg)}}.blog-body{margin:0;padding:0}.dark .blog-body{background-color:var(--color-text-strong);color:var(--color-blog-gray-220)}.blog-app-root{box-sizing:border-box;font-family:var(--font-family-sans);color:var(--color-text-strong)}.dark .blog-app-root{background-color:var(--color-text-strong);color:var(--color-blog-gray-170)}.blog-app-root a,.blog-app-root a:visited{color:var(--color-text-strong)}.dark .blog-app-root a,.dark .blog-app-root a:visited{color:var(--color-blog-neutral-100)}.blog-app-root ol,.blog-app-root ul{padding-left:var(--space-md);margin:0}.blog-app-root ol li,.blog-app-root ul li{margin-bottom:var(--space-md)}.blog-app-root blockquote{margin:0;padding-left:var(--space-md);border-left:var(--space-xs) solid var(--color-blog-gray-170)}.blog-app-root code{font-size:var(--blog-font-size-body);background-color:var(--color-blog-neutral-120)}.blog-app-root pre code{overflow:scroll;display:block;padding:var(--space-md) var(--space-xs)}.blog-app-root .unfinished-setup{width:var(--blog-layout-fluid-width);margin:0 auto;text-align:center}.blog-app-root .header.home h1{font-size:var(--blog-font-size-display)}.blog-app-root .header .external-link{text-align:right;margin-top:calc(var(--space-md)*-1);font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-220)}@media (max-width:768px){.blog-app-root .header .external-link{margin-bottom:var(--space-md);margin-right:var(--blog-space-inline-lg)}}.blog-app-root .header .external-link a{text-decoration:underline;color:var(--color-blog-gray-220)}.blog-app-root .header .picture-container{position:relative;display:inline-block;width:var(--blog-avatar-size);height:var(--blog-avatar-size);overflow:hidden;border-radius:50%;margin-bottom:calc(var(--space-2xs)*-1)}.blog-app-root .header .picture-container img{position:absolute;top:50%;left:50%;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transform:translate(-50%,-50%);clip-path:circle(50%)}.blog-app-root .header.note .picture-container{width:var(--blog-avatar-size-compact);height:var(--blog-avatar-size-compact);margin-bottom:calc(var(--blog-space-snug)*-1)}.blog-app-root .header a{text-decoration:none}.blog-app-root .header a span{text-decoration:underline}.dark .blog-app-root .header a:visited{color:var(--color-blog-gray-220)}.dark .blog-app-root .header .external-link,.dark .blog-app-root .header .external-link a{color:var(--color-blog-gray-440)}.blog-app-root .topic-wrapper{margin-bottom:1.5rem;display:flex;flex-direction:row;flex-wrap:wrap;row-gap:1rem}.blog-app-root .topic-wrapper div{display:inline-grid;margin-right:1rem}.blog-app-root .topic-wrapper div a{padding:.4rem 1rem;background-color:var(--color-blog-gray-190);text-decoration:none;border-radius:4px}.blog-app-root .topic-wrapper div a:hover{background-color:var(--color-blog-gray-170)}.blog-app-root .topic-wrapper div a.selected{background-color:var(--color-text-strong);color:var(--color-blog-neutral-100)}.dark .blog-app-root .topic-wrapper div a{background-color:var(--color-blog-gray-440);color:var(--color-text-strong)}.dark .blog-app-root .topic-wrapper div a:hover{background-color:var(--color-blog-neutral-100)}.dark .blog-app-root .topic-wrapper div a.selected{background-color:var(--color-blog-gray-220)}.blog-app-root .externalLink{display:block;text-align:right;margin-top:-1rem;font-size:.8em}.blog-app-root .externalLink,.blog-app-root .externalLink a{color:var(--color-blog-gray-220)}.blog-app-root .about{margin-bottom:var(--space-xl);padding-bottom:var(--space-md);border-bottom:var(--space-xs) solid var(--color-blog-gray-170)}.dark .blog-app-root .about{border-bottom:var(--space-xs) solid var(--color-card)}.blog-app-root .separator{margin-bottom:var(--space-xl);border-bottom:var(--space-xs) solid var(--color-blog-gray-170)}.dark .blog-app-root .separator{border-bottom:var(--space-xs) solid var(--color-card)}.blog-app-root .top-notes{display:flex;color:var(--color-blog-gray-440);flex-wrap:wrap;justify-content:space-between;gap:2rem;width:100%;margin-bottom:var(--space-md);padding-bottom:var(--space-xl);border-bottom:var(--space-xs) solid var(--color-blog-neutral-100)}@media (max-width:768px){.blog-app-root .top-notes{display:block;padding-bottom:0}}.blog-app-root .top-notes .note{flex:1 1 calc(50% - 2rem);box-sizing:border-box}@media (max-width:768px){.blog-app-root .top-notes .note{margin-bottom:var(--space-xl)}}.blog-app-root .top-notes .note a{text-decoration:none}.blog-app-root .top-notes .note img{width:100%;height:200px;-o-object-fit:cover;object-fit:cover;margin-bottom:var(--space-xs);border-radius:var(--radius-sm)}.blog-app-root .top-notes .note .title{display:block;margin-bottom:var(--blog-space-snug);font-size:var(--blog-font-size-title);font-weight:bolder}.blog-app-root .top-notes .note .\!title{display:block!important;margin-bottom:var(--blog-space-snug)!important;font-size:var(--blog-font-size-title)!important;font-weight:bolder!important}.blog-app-root .top-notes .note .summary{margin-bottom:var(--blog-space-snug);font-size:var(--blog-font-size-body)}.blog-app-root .top-notes .note .date{font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275)}.dark .blog-app-root .top-notes{color:var(--color-blog-gray-220);border-bottom:var(--space-xs) solid var(--color-card)}.blog-app-root .short-notes{border-bottom:var(--space-xs) solid var(--color-blog-neutral-100);padding-bottom:var(--space-md);margin-bottom:var(--space-xl)}.blog-app-root .short-notes .splide__slide{font-size:var(--blog-font-size-body);overflow-wrap:break-word}.blog-app-root .short-notes .splide__slide a{text-decoration:none}.blog-app-root .short-notes .splide__slide .date{font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275);margin-bottom:var(--blog-space-compact)}.blog-app-root .short-notes .splide__arrow--prev{left:-3em}.blog-app-root .short-notes .splide__arrow--next{right:-3em}@media (max-width:768px){.blog-app-root .short-notes .splide__arrow--next,.blog-app-root .short-notes .splide__arrow--prev{display:none}}.blog-app-root .short-notes .splide__arrow{background:none}.blog-app-root .short-notes .splide__arrow svg{fill:var(--color-blog-gray-275)}.dark .blog-app-root .short-notes{border-bottom:var(--space-xs) solid var(--color-card)}.dark .blog-app-root .short-notes a{color:var(--color-blog-gray-220)}.blog-app-root .listing-notes{margin-top:var(--space-md);color:var(--color-blog-gray-440)}.blog-app-root .listing-notes.short-feed-full li{margin-bottom:var(--space-xl)}.blog-app-root .listing-notes.short-feed-full .summary{color:var(--color-text-strong)}.blog-app-root .listing-notes ul{list-style-type:none;padding:0;margin:0}.blog-app-root .listing-notes ul li{margin-bottom:var(--space-md)}.blog-app-root .listing-notes ul li h2{font-size:var(--blog-font-size-title);margin-bottom:var(--space-xs)}.blog-app-root .listing-notes ul li h2 a{display:block;font-size:var(--blog-font-size-title)}.blog-app-root .listing-notes ul li .summary{margin-bottom:var(--blog-space-snug);overflow-wrap:break-word}.blog-app-root .listing-notes ul li .summary p{margin:0}.blog-app-root .listing-notes ul li .summary img{display:block;margin:var(--space-xl) auto;max-width:100%;border-radius:var(--radius-sm)}.blog-app-root .listing-notes ul li .summary audio,.blog-app-root .listing-notes ul li .summary video{width:100%;margin:var(--space-xl) auto}.blog-app-root .listing-notes ul li .date{font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275)}.dark .blog-app-root .listing-notes{color:var(--color-blog-gray-220)}.dark .blog-app-root .listing-notes.short-feed-full .summary{color:var(--color-white)}.blog-app-root h1{font-size:var(--font-size-2xl);line-height:var(--blog-line-height-tight);margin-top:0}@media (max-width:768px){.blog-app-root h1{font-size:var(--blog-font-size-h1-mobile)}}.blog-app-root .note-wrapper{position:relative;margin-top:var(--space-xl);overflow-wrap:break-word}.blog-app-root .note-wrapper h1,.blog-app-root .note-wrapper h2,.blog-app-root .note-wrapper h3{margin-top:var(--blog-space-heading-stack);margin-bottom:var(--blog-space-heading-gap)}.blog-app-root .note-wrapper h1:first-of-type{margin-top:0}.blog-app-root .note-wrapper .content{margin-top:var(--space-lg)}.blog-app-root .note-wrapper .\!content{margin-top:var(--space-lg)!important}.blog-app-root .note-wrapper p{line-height:var(--blog-line-height-body);margin-top:0}.blog-app-root .note-wrapper .date{display:block;margin-bottom:var(--space-xs);font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275)}.blog-app-root .note-wrapper img{display:block;margin:var(--space-xl) auto;max-width:100%;border-radius:var(--radius-sm)}.blog-app-root .note-wrapper img.note-banner{margin:var(--blog-space-media-stack-start) auto var(--blog-space-media-stack-end);transform:scale(1.1)}.blog-app-root .note-wrapper audio,.blog-app-root .note-wrapper video{width:100%;margin:var(--space-xl) auto}.blog-app-root .footer{margin-top:var(--blog-space-stack-xxl);padding-top:var(--space-xl);margin-bottom:var(--space-xl);border-top:var(--space-xs) solid var(--color-blog-gray-170);font-size:var(--blog-font-size-meta);text-align:center}.blog-app-root .footer,.blog-app-root .footer a{color:var(--color-blog-gray-220)}.dark .blog-app-root .footer{border-top:var(--space-xs) solid var(--color-card)}.dark .blog-app-root .footer,.dark .blog-app-root .footer a,.dark .blog-app-root .footer a:visited{color:var(--color-blog-gray-440)}.blog-app-root zap-threads{font-size:var(--ztr-font-size)}.blog-app-root #ztr-content,.blog-app-root #ztr-content img{max-width:100%}.blog-app-root #ztr-root{display:flex;flex-direction:column;font-family:var(--ztr-font);font-size:var(--ztr-font-size);color:var(--ztr-text-color);border:1px solid transparent;word-wrap:break-word;margin-top:4em;line-height:1.2em}.blog-app-root #ztr-subtitle{font-size:1.2em;color:var(--color-blog-gray-500)}.blog-app-root #ztr-root a{color:var(--ztr-link-color);text-decoration:none}.blog-app-root .ztr-comment{position:relative;margin:0;padding:0;background-color:var(--ztr-background-color)}.blog-app-root .ztr-comment:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.blog-app-root .ztr-comment:last-child{border-bottom-left-radius:.3em;border-bottom-right-radius:.3em}.blog-app-root .ztr-comment-body{padding:1em}.blog-app-root .ztr-comment-info-wrapper{display:flex;justify-content:space-between;align-items:center}.blog-app-root .ztr-comment-info{display:flex;align-items:center}.blog-app-root .ztr-comment-info-picture{width:3.5em}.blog-app-root ul.ztr-comment-info-items{display:flex;align-items:center;list-style:none;margin:0;padding:0;font-size:.9em}.blog-app-root ul.ztr-comment-info-items li{display:inline-block;cursor:default;padding-right:.5em}.blog-app-root ul.ztr-comment-info-items li a{font-weight:600}.blog-app-root .ztr-comment-info-author a{font-size:1.2em;padding-right:.2em}.blog-app-root .ztr-comment-info-dots{cursor:pointer}.blog-app-root .ztr-comment-info-separator{width:.5em}.blog-app-root .ztr-comment-info-picture img{width:2em;height:2em;border-radius:50%;padding:.5em;position:relative;display:block;-o-object-fit:cover;object-fit:cover}.blog-app-root #ztr-content,.blog-app-root .ztr-comment-text{margin-bottom:.75em;padding:0 .8em 0 3.5em;line-height:1.5em;line-break:loose;word-break:break-word;overflow:hidden;max-width:750px}.blog-app-root .ztr-comment-text p{margin:0 0 .5em}.blog-app-root .ztr-comment-text code{font-size:1.1em;margin:0 .2em}.blog-app-root .ztr-comment-text pre,.blog-app-root .ztr-info-pane pre{white-space:pre-wrap;white-space:-moz-pre-wrap;word-wrap:break-word}.blog-app-root .ztr-comment-text a:hover{text-decoration:underline}.blog-app-root .ztr-comment-text img{max-width:100%}.blog-app-root .ztr-comment-text .warning{margin-top:0;font-size:.8em;display:flex;align-items:center}.blog-app-root .ztr-comment-text .warning svg{height:1.2em;fill:var(--color-blog-amber-500);padding-right:.7em}.blog-app-root .ztr-comment-replies{margin-left:2em}.blog-app-root .highlight p{background:var(--color-blog-amber-400);color:var(--color-blog-gray-800);display:inline;padding:.2em}.blog-app-root .ztr-comment-expand{display:flex;justify-content:center}.blog-app-root .ztr-comment-expand span{margin:1em 0 1em .35em;cursor:pointer}.blog-app-root .ztr-comment-expand,.blog-app-root ul.ztr-comment-actions{display:flex;align-items:center;list-style:none;margin:0;padding:0 0 0 3.5em;font-weight:600;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root ul.ztr-comment-actions li{display:inline-flex;align-items:center;text-align:center;padding:0 2em 0 0;cursor:pointer}.blog-app-root ul.ztr-comment-actions li span{padding:.25em .25em 0;color:var(--ztr-icon-color)}.blog-app-root #ztr-root svg{fill:var(--ztr-icon-color);width:1.1em;height:1.1em}.blog-app-root .ztr-comment-action-reply:hover svg{fill:var(--color-blog-purple-accent)}.blog-app-root .ztr-comment-action-reply:hover span{color:var(--color-blog-purple-accent)}.blog-app-root .ztr-comment-action-zap:hover svg{fill:var(--color-blog-amber-500)}.blog-app-root .ztr-comment-action-zap:hover span{color:var(--color-blog-amber-500)}.blog-app-root .ztr-comment-action-like:hover svg{fill:var(--color-blog-orange-600)}.blog-app-root .ztr-comment-action-like:hover span{color:var(--color-blog-orange-600)}.blog-app-root .ztr-reply-form{padding:0 .5em 0 3.5em}.blog-app-root .ztr-reply-form textarea{font-family:var(--ztr-font);font-size:1.1em;line-height:1.4;color:var(--color-blog-gray-800);background-color:var(--color-blog-neutral-50);border:1px solid var(--color-blog-gray-220);outline:none;width:calc(100% - 1.5em);padding:.7em;margin:.5em 0;height:4em;border-radius:.2em;min-height:4em;resize:vertical}.blog-app-root .ztr-reply-form:disabled{opacity:65%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root .ztr-reply-controls{display:flex;align-items:center;justify-content:flex-end}.blog-app-root .ztr-reply-controls span{font-weight:700;font-size:.85em;margin-right:1em;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}.blog-app-root .ztr-reply-error{color:var(--color-blog-error)}.blog-app-root .ztr-reply-controls button{font-family:var(--ztr-font);-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;padding:.5em 1em;border-radius:.2em;font-size:.85em;font-weight:600;cursor:pointer}.blog-app-root .ztr-reply-login-button{color:var(--color-white);background-color:var(--ztr-login-button-color);margin-left:1em}.blog-app-root .ztr-reply-button{color:var(--ztr-text-color);display:flex;align-items:center;background-color:var(--ztr-background-color)}.blog-app-root .ztr-info-pane{padding:0 .5em 1em 3.5em}.blog-app-root .ztr-info-pane pre{font-size:.8em}.blog-app-root .ztr-spinner{width:1.2em;height:1.2em;padding:.9em;animation:ztr-rotate 4s linear infinite}.blog-app-root .ztr-reply-button:disabled{opacity:65%;pointer-events:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root .ztr-spinner .path{stroke:var(--ztr-text-color);stroke-linecap:round;animation:ztr-dash 1.5s ease-in-out infinite}@keyframes ztr-rotate{to{transform:rotate(1turn)}}@keyframes ztr-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.blog-app-root .ztr-comment-new .ztr-reply-form{margin:.5em 0;padding:0}.blog-app-root .ztr-comment-new .ztr-comment-body{padding:0}.blog-app-root .ztr-comment-new .ztr-comment-actions{font-size:1.1em;padding:0}@media (prefers-color-scheme:dark){.blog-app-root .ztr-spinner .path{stroke:var(--ztr-text-color,var(--color-blog-gray-200))}.blog-app-root .ztr-comment,.blog-app-root .ztr-reply-button{background-color:var(--ztr-background-color,hsla(0,0%,100%,.06))}.blog-app-root .ztr-reply-login-button{color:var(--color-blog-gray-800);background-color:var(--ztr-login-button-color,var(--color-blog-gray-200))}.blog-app-root #ztr-root svg{fill:var(--ztr-icon-color,var(--color-blog-gray-200))}.blog-app-root ul.ztr-comment-actions li span{color:var(--ztr-icon-color)}.blog-app-root .ztr-comment-action-reply:hover svg{fill:var(--color-blog-purple-muted)}.blog-app-root .ztr-comment-action-reply:hover span{color:var(--color-blog-purple-muted)}}.blog-app-root .splide__container{box-sizing:border-box;position:relative}.blog-app-root .splide__list{backface-visibility:hidden;display:flex;height:100%;margin:0!important;padding:0!important}.blog-app-root .splide.is-initialized:not(.is-active) .splide__list{display:block}.blog-app-root .splide__pagination{align-items:center;display:flex;flex-wrap:wrap;justify-content:center;margin:0;pointer-events:none}.blog-app-root .splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.blog-app-root .splide:not(.is-overflow) .splide__pagination{display:none}.blog-app-root .splide__progress__bar{width:0}.blog-app-root .splide{position:relative;visibility:hidden}.blog-app-root .splide.is-initialized,.blog-app-root .splide.is-rendered{visibility:visible}.blog-app-root .splide__slide{backface-visibility:hidden;box-sizing:border-box;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.blog-app-root .splide__slide img{vertical-align:bottom}.blog-app-root .splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid var(--color-blog-gray-300);border-left:2px solid transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.blog-app-root .splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.blog-app-root .splide__toggle.is-active .splide__toggle__play,.blog-app-root .splide__toggle__pause{display:none}.blog-app-root .splide__toggle.is-active .splide__toggle__pause{display:inline}.blog-app-root .splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.blog-app-root .splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root .splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.blog-app-root .splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.blog-app-root .splide--rtl{direction:rtl}.blog-app-root .splide__track--ttb>.splide__list{display:block}.blog-app-root .splide__arrow{align-items:center;background:var(--color-blog-gray-210);border:0;border-radius:50%;cursor:pointer;display:flex;height:2em;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.blog-app-root .splide__arrow svg{fill:var(--color-black);height:1.2em;width:1.2em}.blog-app-root .splide__arrow:hover:not(:disabled){opacity:.9}.blog-app-root .splide__arrow:disabled{opacity:.3}.blog-app-root .splide__arrow:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__arrow--prev{left:1em}.blog-app-root .splide__arrow--prev svg{transform:scaleX(-1)}.blog-app-root .splide__arrow--next{right:1em}.blog-app-root .splide.is-focus-in .splide__arrow:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.blog-app-root .splide__pagination__page{background:var(--color-blog-gray-210);border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;position:relative;transition:transform .2s linear;width:8px}.blog-app-root .splide__pagination__page.is-active{background:var(--color-white);transform:scale(1.4);z-index:1}.blog-app-root .splide__pagination__page:hover{cursor:pointer;opacity:.9}.blog-app-root .splide__pagination__page:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide.is-focus-in .splide__pagination__page:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__progress__bar{background:var(--color-blog-gray-210);height:3px}.blog-app-root .splide__slide{-webkit-tap-highlight-color:rgba(0,0,0,0)}.blog-app-root .splide__slide:focus{outline:0}@supports (outline-offset:-3px){.blog-app-root .splide__slide:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.blog-app-root .splide__slide:focus-visible{border:3px solid var(--color-blog-sky-500)}}@supports (outline-offset:-3px){.blog-app-root .splide.is-focus-in .splide__slide:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.blog-app-root .splide.is-focus-in .splide__slide:focus{border:3px solid var(--color-blog-sky-500)}.blog-app-root .splide.is-focus-in .splide__track>.splide__list>.splide__slide:focus{border-color:var(--color-blog-sky-500)}}.blog-app-root .splide__toggle{cursor:pointer}.blog-app-root .splide__toggle:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide.is-focus-in .splide__toggle:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__track--nav>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.blog-app-root .splide__track--nav>.splide__list>.splide__slide.is-active{border:3px solid var(--color-black)}.blog-app-root .splide__arrows--rtl .splide__arrow--prev{left:auto;right:1em}.blog-app-root .splide__arrows--rtl .splide__arrow--prev svg{transform:scaleX(1)}.blog-app-root .splide__arrows--rtl .splide__arrow--next{left:1em;right:auto}.blog-app-root .splide__arrows--rtl .splide__arrow--next svg{transform:scaleX(-1)}.blog-app-root .splide__arrows--ttb .splide__arrow{left:50%;transform:translate(-50%)}.blog-app-root .splide__arrows--ttb .splide__arrow--prev{top:1em}.blog-app-root .splide__arrows--ttb .splide__arrow--prev svg{transform:rotate(-90deg)}.blog-app-root .splide__arrows--ttb .splide__arrow--next{bottom:1em;top:auto}.blog-app-root .splide__arrows--ttb .splide__arrow--next svg{transform:rotate(90deg)}.blog-app-root .splide__pagination--ttb{bottom:0;display:flex;flex-direction:column;left:auto;padding:1em 0;right:.5em;top:0}.blog-app-root .loader-container.svelte-181fgen{display:flex;align-items:center;justify-content:center}.blog-app-root .loader.svelte-181fgen{display:inline-block;width:92px;height:92px;opacity:0;animation:svelte-181fgen-fade-in .5s .4s forwards,svelte-181fgen-loader-animation 2s linear .4s infinite}.blog-app-root .loader.svelte-181fgen:after{content:" ";display:block;width:64px;height:64px;margin:8px;border-radius:50%;border:6px solid var(--color-blog-gray-275);border-color:var(--color-blog-gray-275) transparent var(--color-blog-gray-275) transparent;animation:svelte-181fgen-loader-animation 2s linear infinite}@keyframes svelte-181fgen-loader-animation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes svelte-181fgen-fade-in{to{opacity:1}}.dark .blog-app-root .loader.svelte-181fgen:after{border:6px solid var(--color-card);border-color:var(--color-card) transparent var(--color-card) transparent}.blog-body #theme-toggle.svelte-bxrhh.svelte-bxrhh{display:none}.blog-body #theme-toggle.svelte-bxrhh+label.svelte-bxrhh{display:inline-block;cursor:pointer;height:1rem;width:1rem;position:absolute;top:1rem;right:3rem;border-radius:9px;transition-duration:.3s;content:""}@media (max-width:768px){.blog-body #theme-toggle.svelte-bxrhh+label.svelte-bxrhh{right:1rem}}.blog-body #theme-toggle.svelte-bxrhh:not(:checked)+label.svelte-bxrhh{background-color:var(--color-blog-gray-180)}.blog-body #theme-toggle.svelte-bxrhh:checked+label.svelte-bxrhh{background-color:transparent;box-shadow:inset -6px -6px 1px 1px var(--color-card)}.blog-app-root .ztr-nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.bottom-4{bottom:1rem}.left-4{left:1rem}.right-4{right:1rem}.isolate{isolation:isolate}.z-10{z-index:10}.z-\[60\]{z-index:60}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-ml-2{margin-left:-.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-sm{margin-top:var(--space-sm)}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.\!grid{display:grid!important}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-16{height:4rem}.h-2{height:.5rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.max-h-\[420px\]{max-height:420px}.max-h-\[48vh\]{max-height:48vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[92vh\]{max-height:92vh}.max-h-\[calc\(92vh-4rem\)\]{max-height:calc(92vh - 4rem)}.min-h-\[320px\]{min-height:320px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.translate-x-1{--tw-translate-x:0.25rem}.translate-x-1,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.rotate-90{--tw-rotate:90deg}.rotate-90,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.resize-y{resize:vertical}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-sm{gap:var(--space-sm)}.gap-xl{gap:var(--space-xl)}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-border-translucent>:not([hidden])~:not([hidden]){border-color:var(--color-border-translucent)}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-amber-500\/40{border-color:rgba(245,158,11,.4)}.border-amber-500\/50{border-color:rgba(245,158,11,.5)}.border-amber-600\/70{border-color:rgba(217,119,6,.7)}.border-amber-700\/70{border-color:rgba(180,83,9,.7)}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-border{border-color:var(--color-border)}.border-border-translucent-bright{border-color:var(--color-border-translucent-bright)}.border-border-translucent-medium{border-color:var(--color-border-translucent-medium)}.border-emerald-700\/70{border-color:rgba(4,120,87,.7)}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.border-gray-800\/70{border-color:rgba(31,41,55,.7)}.border-green-500\/60{border-color:rgba(34,197,94,.6)}.border-info{border-color:var(--color-info)}.border-purple-600\/60{border-color:rgba(147,51,234,.6)}.border-red-700\/70{border-color:rgba(185,28,28,.7)}.border-red-800\/70{border-color:rgba(153,27,27,.7)}.border-slate-500\/50{border-color:rgba(100,116,139,.5)}.border-warning-strong{border-color:var(--color-warning-strong)}.border-opacity-20{--tw-border-opacity:0.2}.bg-amber-500\/10{background-color:rgba(245,158,11,.1)}.bg-amber-900\/30{background-color:rgba(120,53,15,.3)}.bg-amber-900\/40{background-color:rgba(120,53,15,.4)}.bg-black{background-color:var(--color-black)}.bg-blog-neutral-100{background-color:var(--color-blog-neutral-100)}.bg-blog-neutral-50{background-color:var(--color-blog-neutral-50)}.bg-blue-500\/20{background-color:rgba(59,130,246,.2)}.bg-border-subtle{background-color:var(--color-border-subtle)}.bg-emerald-900\/40{background-color:rgba(6,78,59,.4)}.bg-gray-800\/60{background-color:rgba(31,41,55,.6)}.bg-gray-800\/70{background-color:rgba(31,41,55,.7)}.bg-gray-800\/80{background-color:rgba(31,41,55,.8)}.bg-green-500\/10{background-color:rgba(34,197,94,.1)}.bg-info{background-color:var(--color-info)}.bg-panel{background-color:var(--color-panel)}.bg-purple-900\/40{background-color:rgba(88,28,135,.4)}.bg-red-900\/30{background-color:rgba(127,29,29,.3)}.bg-red-900\/40{background-color:rgba(127,29,29,.4)}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-surface{background-color:var(--color-surface)}.bg-surface-alt{background-color:var(--color-surface-alt)}.bg-transparent{background-color:transparent}.bg-warning-surface{background-color:var(--color-warning-surface)}.bg-white{background-color:var(--color-white)}.bg-opacity-50{--tw-bg-opacity:0.5}.stroke-border-translucent{stroke:var(--color-border-translucent)}.stroke-current{stroke:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-lg{padding:var(--space-lg)}.p-md{padding:var(--space-md)}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-8{padding-bottom:2rem}.pe-1{padding-inline-end:.25rem}.pr-1{padding-right:.25rem}.pt-1{padding-top:.25rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.align-top{vertical-align:top}.font-mono{font-family:var(--font-family-mono)}.font-sans{font-family:var(--font-family-sans)}.text-2xl{font-size:var(--font-size-2xl);line-height:var(--line-height-relaxed)}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[11px\]{font-size:11px}.text-base{font-size:var(--font-size-base)}.text-base,.text-lg{line-height:var(--line-height-base)}.text-lg{font-size:var(--font-size-lg)}.text-sm{font-size:var(--font-size-sm);line-height:var(--line-height-snug)}.text-xl{font-size:var(--font-size-xl);line-height:var(--line-height-relaxed)}.text-xs{font-size:var(--font-size-xs);line-height:var(--line-height-tight)}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.text-amber-200\/90{color:hsla(48,97%,77%,.9)}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-blog-gray-500{color:var(--color-blog-gray-500)}.text-blog-gray-700{color:var(--color-blog-gray-700)}.text-blog-gray-800{color:var(--color-blog-gray-800)}.text-blog-gray-900{color:var(--color-blog-gray-900)}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-critical{color:var(--color-critical)}.text-critical-strong{color:var(--color-critical-strong)}.text-emerald-200\/90{color:rgba(167,243,208,.9)}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-info{color:var(--color-info)}.text-info-strong{color:var(--color-info-strong)}.text-muted{color:var(--color-muted)}.text-muted-strong{color:var(--color-muted-strong)}.text-purple-200\/90{color:rgba(233,213,255,.9)}.text-red-200\/80{color:hsla(0,96%,89%,.8)}.text-red-200\/90{color:hsla(0,96%,89%,.9)}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-text{color:var(--color-text)}.text-text-frosted{color:var(--color-text-frosted)}.text-text-strong{color:var(--color-text-strong)}.text-warning-strong{color:var(--color-warning-strong)}.text-white{color:var(--color-white)}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow-lg{--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-fast{transition-duration:var(--motion-duration-fast)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (max-width:40rem){.bv-grid-video{gap:var(--space-md);grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){:root{--motion-duration-fast:0s;--motion-duration-base:0s;--motion-duration-slow:0s;--modal-motion-duration:0s}*,:after,:before{animation-delay:0s!important;animation-duration:0s!important;animation-iteration-count:1!important;animation-timing-function:linear!important;transition-delay:0s!important;transition-duration:0s!important;transition-timing-function:linear!important}#app,#playerModal .player-modal__content,#sidebar,#sidebarOverlay,.btn,.btn-ghost,.card,.card[data-motion=enter],.fade-in,.icon-button,.menu__item,.modal-nav,.popover__panel,.progress-bar-fill,.sidebar-collapse-toggle,.sidebar-collapse-toggle__icon,.sidebar-dropup-panel,.sidebar-dropup-trigger,.sidebar-dropup-trigger__chevron,.sidebar-loading-indicator,.sidebar-loading-wrapper,.sidebar-nav,.sidebar-nav-link,.status-banner .status-spinner,.status-spinner--inline,.video-modal__panel,.watch-history-card,.watch-history-card__action,.watch-history-card__creatorAvatar,.watch-history-card__creatorName,.watch-history-card__title{transition-property:none!important}.popover__panel{transform:none!important}.popover__panel[data-state=open]{opacity:1}.popover__panel[data-state=closed]{opacity:0}.card[data-motion=enter],.fade-in,[data-video-thumbnail][data-thumbnail-loaded=true]{opacity:1;animation:none!important}.status-banner .status-spinner,.status-spinner--inline{animation:none!important}}@media (min-width:768px){.md\:hidden .bv-modal{display:none!important}.md\:hidden.profile-pane{display:none}.md\:flex#playerModal{display:flex}}.last\:border-b-0:last-child{border-bottom-width:0}.invalid\:grid:invalid{display:grid}.hover\:bg-gray-700\/70:hover{background-color:rgba(55,65,81,.7)}.hover\:bg-panel-hover:hover{background-color:var(--color-panel-hover)}.hover\:bg-red-900\/40:hover{background-color:rgba(127,29,29,.4)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\:text-info-strong:hover{color:var(--color-info-strong)}.hover\:text-text:hover{color:var(--color-text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\:ring-green-500\/80:focus{--tw-ring-color:rgba(34,197,94,.8)}.focus\:ring-info:focus{--tw-ring-color:var(--color-info)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-offset-gray-900:focus{--tw-ring-offset-color:#111827}.focus-visible\:bg-primary:focus-visible{background-color:var(--color-primary)}@media (min-width:640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:self-end{align-self:flex-end}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-0{padding-top:0;padding-bottom:0}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-64{height:16rem}.md\:w-\[var\(--blog-layout-fluid-width\)\]{width:var(--blog-layout-fluid-width)}.md\:max-w-\[var\(--blog-layout-max-width\)\]{max-width:var(--blog-layout-max-width)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-md{gap:var(--space-md)}.md\:px-0{padding-left:0;padding-right:0}}@media (min-width:1024px){.lg\:max-w-4xl{max-width:56rem}.lg\:max-w-5xl{max-width:64rem}.lg\:max-w-6xl{max-width:72rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\2c 1\.85fr\)_minmax\(260px\2c 1fr\)\]{grid-template-columns:minmax(0,1.85fr) minmax(260px,1fr)}.lg\:grid-cols-\[minmax\(240px\2c 280px\)_1fr\]{grid-template-columns:minmax(240px,280px) 1fr}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-right{text-align:right}}@media (prefers-color-scheme:dark){.dark\:text-blog-gray-200{color:var(--color-blog-gray-200)}.dark\:text-blog-gray-300{color:var(--color-blog-gray-300)}} \ No newline at end of file +/*! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:var(--font-family-sans);font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--font-family-mono);font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{font-size:100%}@media (min-width:1024px){html{font-size:75%}}*,:after,:before{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}::-webkit-scrollbar{width:var(--scrollbar-width);height:var(--scrollbar-width)}::-webkit-scrollbar-track{background:var(--scrollbar-track)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:.25rem}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}body{font-family:var(--font-family-sans);background-color:var(--color-page);color:var(--color-text-strong);line-height:1.5;margin:0;padding:0;overflow-x:hidden}#editNip71TagsFieldset>legend,#nip71TagsFieldset>legend{margin-left:0;padding:0}#app{background-color:var(--color-page);color:inherit}body.modal-open,html.modal-open{overflow:hidden;height:100%}body.modal-open #app{overflow:hidden}body.modal-open #sidebar,body.modal-open #sidebarOverlay{pointer-events:none;opacity:0;visibility:hidden}body.modal-open #sidebar{z-index:var(--z-sidebar-overlay)}body.modal-open #sidebarOverlay{z-index:calc(var(--z-sidebar-overlay) - 1)}.ng-cloak,.ng-hide:not(.ng-hide-animate),.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}ng\:form{display:block}.ng-animate-shim{visibility:hidden}.ng-anchor{position:absolute}.\!container{width:100%!important}.container{width:100%}@media (min-width:640px){.\!container{max-width:640px!important}.container{max-width:640px}}@media (min-width:768px){.\!container{max-width:768px!important}.container{max-width:768px}}@media (min-width:1024px){.\!container{max-width:1024px!important}.container{max-width:1024px}}@media (min-width:1280px){.\!container{max-width:1280px!important}.container{max-width:1280px}}@media (min-width:1536px){.\!container{max-width:1536px!important}.container{max-width:1536px}}#playerModal.ds-header{display:flex}.ds-header{display:flex;align-items:center;justify-content:flex-start;padding-top:var(--space-md);padding-bottom:var(--space-md)}.focus-ring{outline:2px solid transparent;outline-offset:2px}.focus-ring:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.bv-logo{--logo-wordmark-color:var(--color-logo-wordmark);--logo-accent-color:var(--color-logo-accent);--logo-background-color:var(--color-logo-background)}.bv-logo[data-variant=inverse]{--logo-wordmark-color:var(--color-logo-wordmark-inverse);--logo-background-color:var(--color-logo-background-inverse)}.bv-logo[data-wordmark=current]{--logo-wordmark-color:currentColor}.bv-logo[data-accent=current]{--logo-accent-color:currentColor}.bv-logo[data-background=transparent]{--logo-background-color:transparent}.markdown-prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:1rem}.markdown-prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.markdown-prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-primary);text-decoration:none;font-weight:500}.markdown-prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.markdown-prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.markdown-prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.markdown-prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.markdown-prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.markdown-prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.markdown-prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.markdown-prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.markdown-prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.markdown-prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.markdown-prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.markdown-prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em}.markdown-prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.markdown-prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.markdown-prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.markdown-prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--color-border-subtle);border-top-width:1px;margin-top:2rem;margin-bottom:2rem}.markdown-prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--color-muted);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"\201C""\201D""\2018""\2019";margin-top:1rem;margin-bottom:1rem;padding-inline-start:1em;border-left-width:4px;border-left-color:var(--color-border-subtle);padding-left:1rem}.markdown-prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.markdown-prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.markdown-prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:var(--font-size-2xl);margin-top:.5rem;margin-bottom:1rem;line-height:1.1111111}.markdown-prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.markdown-prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:var(--font-size-xl);margin-top:1.25rem;margin-bottom:.75rem;line-height:1.3333333}.markdown-prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.markdown-prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:var(--font-size-lg);margin-top:1rem;margin-bottom:.75rem;line-height:1.6}.markdown-prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.markdown-prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.markdown-prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.markdown-prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:1rem;border-radius:var(--radius-md);max-width:100%;height:auto}.markdown-prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.markdown-prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.markdown-prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);font-size:.875em;border-radius:.3125rem;padding-top:.1875em;padding-inline-end:.375em;padding-bottom:.1875em;padding-inline-start:.375em}.markdown-prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-secondary);font-weight:500;font-size:var(--font-size-sm);background-color:var(--color-page-alt);padding:.2rem .4rem;border-radius:var(--radius-md);font-family:var(--font-family-mono)}.markdown-prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.markdown-prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.markdown-prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.markdown-prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.markdown-prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.markdown-prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--color-text-strong);background-color:var(--color-page-alt);overflow-x:auto;font-weight:400;font-size:var(--font-size-sm);line-height:1.7142857;margin-top:0;margin-bottom:1rem;border-radius:var(--radius-md);padding-inline-end:1.1428571em;padding-inline-start:1.1428571em;padding:1rem;font-family:var(--font-family-mono)}.markdown-prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.markdown-prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.markdown-prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.markdown-prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.markdown-prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.markdown-prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.markdown-prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.markdown-prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.markdown-prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.markdown-prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.markdown-prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.markdown-prose :where(th,td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start}.markdown-prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.markdown-prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.markdown-prose{--tw-prose-body:var(--color-text-strong);--tw-prose-headings:var(--color-text-strong);--tw-prose-lead:#4b5563;--tw-prose-links:var(--color-primary);--tw-prose-bold:var(--color-text-strong);--tw-prose-counters:var(--color-text-strong);--tw-prose-bullets:var(--color-border-subtle);--tw-prose-hr:var(--color-border-subtle);--tw-prose-quotes:var(--color-muted);--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:rgba(17,24,39,.1);--tw-prose-code:var(--color-secondary);--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:var(--color-border-subtle);--tw-prose-td-borders:var(--color-border-subtle);--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:hsla(0,0%,100%,.1);--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;font-size:1rem;line-height:1.6}.markdown-prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.markdown-prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5rem;margin-bottom:.5rem}.markdown-prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.markdown-prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.markdown-prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.markdown-prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.markdown-prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.markdown-prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.markdown-prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.markdown-prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.markdown-prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.markdown-prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.markdown-prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.markdown-prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.markdown-prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.5714286em;padding-inline-end:.5714286em;padding-bottom:.5714286em;padding-inline-start:.5714286em}.markdown-prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.markdown-prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-end:0}.markdown-prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.markdown-prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.markdown-prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.markdown-prose{font-family:var(--font-family-sans)}.markdown-prose :where(h4,h5,h6):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:600;margin-top:.75rem;margin-bottom:.5rem}.markdown-prose :where(ul,ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:1rem;padding-left:1.25rem}.markdown-prose :where(a:hover):not(:where([class~=not-prose],[class~=not-prose] *)){text-decoration:underline}.markdown-prose{max-width:none;line-height:1.625;color:var(--color-text-strong)}.markdown-prose :where(pre,code){font-family:var(--font-family-mono)}.popover{position:relative;display:inline-flex}.popover__panel{outline:2px solid transparent;outline-offset:2px}.popover__panel:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.popover__panel{pointer-events:none;position:absolute;left:0;top:100%;z-index:70;margin-top:.5rem;min-width:12rem;transform-origin:top;--tw-scale-x:.95;--tw-scale-y:.95;border-radius:var(--radius-lg);border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.4;background-color:var(--color-panel);padding:.75rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);opacity:0;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:transform;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:var(--motion-ease-out)}.popover__panel,.popover__panel[data-state=open]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.popover__panel[data-state=open]{pointer-events:auto;--tw-scale-x:1;--tw-scale-y:1;opacity:1}.popover__panel[data-variant=zap]{background:var(--color-overlay-veil);color:var(--color-subtle);border:1px solid var(--color-border-translucent-stronger);box-shadow:0 22px 48px -18px var(--color-shadow-intense);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn{outline:2px solid transparent;outline-offset:2px}.btn:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-info-strong);padding:.625rem 1.25rem;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-white);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn:hover{background-color:var(--color-info)}.btn:focus-visible{background-color:var(--color-info-pressed)}.btn:disabled{pointer-events:none;cursor:not-allowed;opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-ghost{outline:2px solid transparent;outline-offset:2px}.btn-ghost:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-color:transparent;background-color:var(--color-info-strong);padding:.625rem 1.25rem;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-white);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.btn-ghost:hover{background-color:var(--color-info)}.btn-ghost:focus-visible{background-color:var(--color-info-pressed)}.btn-ghost:disabled{cursor:not-allowed;opacity:.6}body.iframe-form button.btn-ghost{align-self:flex-start;margin-top:var(--space-md)}.btn-ghost{border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.6;background-color:transparent;color:var(--color-text);--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (prefers-reduced-motion:reduce){.btn-ghost{transition-property:none}}.btn-ghost:hover{background-color:var(--color-panel-hover);color:var(--color-text)}.btn-ghost:focus-visible{background-color:var(--color-panel-hover)}.btn-ghost:disabled{pointer-events:none;opacity:.5;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-ghost[data-variant=critical]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.6;color:var(--color-critical)}.btn-ghost[data-variant=critical]:focus-visible,.btn-ghost[data-variant=critical]:hover{background-color:var(--color-critical);--tw-bg-opacity:0.2;color:var(--color-critical-strong)}.btn-ghost[aria-pressed=true],.btn-ghost[data-state=active]{border-color:transparent;background-color:var(--color-primary);color:var(--color-white);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.btn-ghost[aria-pressed=true]:focus-visible,.btn-ghost[aria-pressed=true]:hover,.btn-ghost[data-state=active]:focus-visible,.btn-ghost[data-state=active]:hover{background-color:var(--color-info-strong)}.modal-progress{width:var(--progress-width,0)}.cloudflare-progress__fill,.modal-progress{transition:width var(--motion-duration-base,.16s) var(--motion-ease-out,ease-out)}.cloudflare-progress__fill{width:var(--cloudflare-progress-width,0)}.blog-embed-shell{height:var(--blog-embed-height)}.blog-ztr-watermark{float:right;opacity:.2}.\!badge,.badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:var(--radius-full);background-color:var(--color-panel);padding:.25rem .75rem;font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;letter-spacing:.025em;color:var(--color-muted-strong)}.\!badge[data-variant=critical],.badge[data-variant=critical]{background-color:var(--color-critical);--tw-bg-opacity:0.2;color:var(--color-critical-strong)}.\!badge[data-variant=info],.badge[data-variant=info]{background-color:var(--color-info);--tw-bg-opacity:0.2;color:var(--color-info-strong)}.\!badge[data-variant=neutral],.badge[data-variant=neutral]{background-color:var(--color-border);--tw-bg-opacity:0.4;color:var(--color-muted-strong)}#playerModal.\!menu{display:flex}.\!menu{display:flex;flex-direction:column;gap:.25rem;padding-top:.5rem;padding-bottom:.5rem}#playerModal.menu,.menu{display:flex}.menu{flex-direction:column;gap:.25rem;padding-top:.5rem;padding-bottom:.5rem}.menu__heading{padding-left:1rem;padding-right:1rem;padding-bottom:.5rem;font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;letter-spacing:.025em;color:var(--color-muted)}.menu__separator{margin-top:.5rem;margin-bottom:.5rem;height:1px;background-color:var(--color-border);--tw-bg-opacity:0.2}.menu__item{outline:2px solid transparent;outline-offset:2px}.menu__item:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}#playerModal.menu__item{display:flex}.menu__item{position:relative;display:flex;width:100%;align-items:center;gap:.75rem;border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:500;color:var(--color-text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:var(--motion-ease-in-out)}.menu__item:hover{background-color:var(--color-panel-hover);color:var(--color-text)}.menu__item[data-state=active]{background-color:var(--color-info);--tw-bg-opacity:0.2;color:var(--color-info-strong)}.menu__item[data-variant=critical]{color:var(--color-critical-strong)}.menu__item[data-variant=critical]:hover{background-color:var(--color-critical);--tw-bg-opacity:0.2}.menu__item:disabled,.menu__item[aria-disabled=true]{cursor:not-allowed;opacity:.6}.menu__item:disabled,.menu__item:disabled:hover,.menu__item[aria-disabled=true],.menu__item[aria-disabled=true]:hover{background-color:transparent;color:var(--color-muted)}.\!card{outline:2px solid transparent;outline-offset:2px}.\!card:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!card{position:relative;border-radius:var(--radius-lg);border-width:1px;border-color:transparent;background-color:var(--color-card);color:var(--color-text);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.card{outline:2px solid transparent;outline-offset:2px}.card:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.card{position:relative;border-radius:var(--radius-lg);border-width:1px;border-color:transparent;background-color:var(--color-card);color:var(--color-text);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!card:hover,.card:hover{--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card:focus-visible{border-color:var(--color-info);--tw-border-opacity:0.4;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.card:focus-visible{border-color:var(--color-info);--tw-border-opacity:0.4;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card[data-state=critical],.card[data-state=critical]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.\!card[data-state=private],.card[data-state=private]{background-color:var(--color-card-private);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card[data-state=disabled],.card[data-state=disabled]{opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.form-control{outline:2px solid transparent;outline-offset:2px}.form-control:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.form-control{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.form-control::-moz-placeholder{color:var(--color-muted)}.form-control::placeholder{color:var(--color-muted)}.form-control:hover{border-color:var(--color-border)}.form-control:focus-visible{border-color:var(--color-info-strong)}.form-control:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.form-control:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}.\!input{outline:2px solid transparent;outline-offset:2px}.\!input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!input{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!input::-moz-placeholder{color:var(--color-muted)}.\!input::placeholder{color:var(--color-muted)}.\!input:hover{border-color:var(--color-border)}.\!input:focus-visible{border-color:var(--color-info-strong)}.\!input:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.\!input:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.\!input{transition:none}}body.iframe-form label+.\!input{margin-top:var(--space-xs)}.input{outline:2px solid transparent;outline-offset:2px}.input:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.input{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.input::-moz-placeholder{color:var(--color-muted)}.input::placeholder{color:var(--color-muted)}.input:hover{border-color:var(--color-border)}.input:focus-visible{border-color:var(--color-info-strong)}.input:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.input:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.input{transition:none}}body.iframe-form label+.input{margin-top:var(--space-xs)}.textarea{outline:2px solid transparent;outline-offset:2px}.textarea:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.textarea{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.textarea::-moz-placeholder{color:var(--color-muted)}.textarea::placeholder{color:var(--color-muted)}.textarea:hover{border-color:var(--color-border)}.textarea:focus-visible{border-color:var(--color-info-strong)}.textarea:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.textarea:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.textarea{transition:none}}body.iframe-form label+.textarea{margin-top:var(--space-xs)}.textarea{min-height:8rem;resize:vertical}.select{outline:2px solid transparent;outline-offset:2px}.select:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.select{display:block;width:100%;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);padding:.5rem .75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text);--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.select::-moz-placeholder{color:var(--color-muted)}.select::placeholder{color:var(--color-muted)}.select:hover{border-color:var(--color-border)}.select:focus-visible{border-color:var(--color-info-strong)}.select:disabled{cursor:not-allowed;background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.select:invalid{border-color:var(--color-critical);--tw-border-opacity:0.6}@media (prefers-reduced-motion:reduce){.select{transition:none}}body.iframe-form label+.select{margin-top:var(--space-xs)}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:2.5rem;background-image:linear-gradient(135deg,transparent 50%,var(--select-arrow-color) 50%),linear-gradient(45deg,var(--select-arrow-color) 50%,transparent 50%),linear-gradient(to right,var(--color-border-subtle),var(--color-border-subtle));background-position:right .75rem center,right .4rem center,right 2.5rem center;background-size:.6rem .6rem,.6rem .6rem,1px 60%;background-repeat:no-repeat}.select,.select:hover{--select-arrow-color:var(--color-border)}.select:focus-visible{--select-arrow-color:var(--color-info-strong)}.select:disabled{--select-arrow-color:var(--color-border-subtle)}.select:invalid{--select-arrow-color:var(--color-critical)}.\!checkbox{outline:2px solid transparent;outline-offset:2px}.\!checkbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.\!checkbox{display:inline-flex;height:1.25rem;width:1.25rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-items:center;justify-content:center;border-radius:.25rem;border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);color:var(--color-white);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.checkbox{outline:2px solid transparent;outline-offset:2px}.checkbox:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.checkbox{display:inline-flex;height:1.25rem;width:1.25rem;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;align-items:center;justify-content:center;border-radius:.25rem;border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-surface-alt);color:var(--color-white);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!checkbox:hover,.checkbox:hover{border-color:var(--color-border)}.\!checkbox:disabled,.checkbox:disabled{cursor:not-allowed;border-color:var(--color-border-subtle);background-color:var(--color-surface);color:var(--color-muted);opacity:.6}.\!checkbox:after{content:""!important}.checkbox:after{content:""}.\!checkbox:after,.checkbox:after{pointer-events:none;height:.5rem;width:.75rem;border-bottom-width:2px;border-right-width:2px;border-color:var(--color-white);opacity:0;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!checkbox:after{transform:rotate(45deg) translateY(-.125rem) scale(.85)!important}.checkbox:after{transform:rotate(45deg) translateY(-.125rem) scale(.85)}.\!checkbox:checked,.\!checkbox[aria-checked=true],.checkbox:checked,.checkbox[aria-checked=true]{border-color:var(--color-info-strong);background-color:var(--color-info-strong)}.\!checkbox:checked:after,.\!checkbox[aria-checked=true]:after,.checkbox:checked:after,.checkbox[aria-checked=true]:after{opacity:1}.checkbox:checked:after,.checkbox[aria-checked=true]:after{transform:rotate(45deg) translateY(-.125rem) scale(1)}.\!checkbox:checked:after,.\!checkbox[aria-checked=true]:after{transform:rotate(45deg) translateY(-.125rem) scale(1)!important}.switch{outline:2px solid transparent;outline-offset:2px}.switch:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.switch{position:relative;display:inline-flex;height:1.5rem;width:2.75rem;cursor:pointer;align-items:center;border-radius:var(--radius-full);border-width:1px;border-color:var(--color-border-subtle);background-color:var(--color-border-subtle);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1)}.switch,.switch:before{transition-duration:.15s;transition-duration:var(--motion-duration-base)}.switch:before{content:"";pointer-events:none;position:absolute;left:.125rem;top:50%;height:1.25rem;width:1.25rem;--tw-translate-y:-50%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));border-radius:var(--radius-full);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.switch:before,.switch:disabled{background-color:var(--color-surface)}.switch:disabled{cursor:not-allowed;border-color:var(--color-border-subtle);color:var(--color-muted);opacity:.6}.switch.is-on,.switch[aria-checked=true]{border-color:var(--color-info-strong);background-color:var(--color-info-strong)}.switch.is-on:before,.switch[aria-checked=true]:before{--tw-translate-x:1.25rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@media (prefers-reduced-motion:reduce){.\!checkbox,.\!checkbox:after,.checkbox,.checkbox:after,.form-control,.menu__item,.popover__panel,.switch,.switch:before{transition:none!important}}#playerModal.bv-modal{display:flex}.bv-modal{position:fixed;inset:0;z-index:var(--z-modal-root);display:flex;align-items:center;justify-content:center;padding:1.5rem}@media (min-width:640px){.bv-modal{padding:2rem}}.bv-modal.hidden,.bv-modal[hidden]{display:none!important}.bv-modal__panel{outline:2px solid transparent;outline-offset:2px}.bv-modal__panel:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.bv-modal__panel{position:relative;z-index:var(--z-modal-content);width:100%;max-width:38rem;border-radius:1.75rem;border-width:1px;border-color:var(--color-border-translucent);padding:1.75rem 2rem 2rem;text-align:left;color:var(--color-text);--tw-shadow:var(--shadow-modal);--tw-shadow-colored:var(--shadow-modal);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--color-modal-surface,var(--color-overlay-panel))}.bv-modal__panel:focus-visible{border-color:var(--color-border-translucent-bright)}.bv-modal-backdrop{position:absolute;inset:0;z-index:var(--z-modal-overlay);--tw-backdrop-saturate:saturate(1.5);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background-color:var(--color-modal-backdrop,var(--color-overlay-muted));backdrop-filter:blur(28px);-webkit-backdrop-filter:blur(28px)}.bv-modal-backdrop[data-variant=veil]{--tw-backdrop-blur:blur(64px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background-color:var(--color-overlay-veil)}.bv-modal-backdrop[data-variant=muted]{background-color:var(--color-overlay-muted)}.modal-sheet{outline:2px solid transparent;outline-offset:2px}.modal-sheet:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.modal-sheet{z-index:var(--z-modal-content);max-width:38rem;border-radius:1.75rem;border-width:1px;border-color:var(--color-border-translucent);padding:1.75rem 2rem 2rem;text-align:left;color:var(--color-text);--tw-shadow:var(--shadow-modal);--tw-shadow-colored:var(--shadow-modal);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--color-modal-surface,var(--color-overlay-panel))}.modal-sheet:focus-visible{border-color:var(--color-border-translucent-bright)}#playerModal>.modal-sheet{max-width:none;width:100%;height:100%;padding:0;border-radius:0;box-shadow:none;border:none;background:transparent;display:flex;align-items:stretch}#modalContainer>[id$=Modal]:not(#playerModal) .modal-sheet{z-index:var(--z-modal-content)}.modal-sheet{position:relative;margin-top:0;margin-bottom:0;width:100%;max-width:90%;overflow:hidden}@media (min-width:1024px){.modal-sheet{max-width:56rem}}#playerModal.modal-header,.modal-header{display:flex}.modal-header{align-items:flex-start;justify-content:space-between;gap:var(--space-md);padding:1.75rem 2rem 1rem;background:transparent;border:0}.modal-header[data-variant=flush]{padding:0;background:transparent}.modal-close{outline:2px solid transparent;outline-offset:2px}.modal-close:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}#playerModal.modal-close{display:flex}.modal-close{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:var(--radius-full);background-color:var(--color-overlay-black);--tw-bg-opacity:0.4;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.modal-close:hover{background-color:var(--color-overlay-black);--tw-bg-opacity:0.6;color:var(--color-text)}.modal-body>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.modal-body{padding:.5rem 2rem 2rem;scrollbar-width:thin}.modal-body::-webkit-scrollbar{width:.4rem}.modal-body::-webkit-scrollbar-track{background:transparent}.modal-body::-webkit-scrollbar-thumb{background:var(--color-border-translucent);border-radius:9999px}#playerModal.modal-footer{display:flex}.modal-footer{display:flex;flex-direction:column;gap:.75rem;padding:1rem 2rem 2rem}#playerModal.modal-alert,.modal-alert{display:flex}.modal-alert{align-items:flex-start;gap:.75rem;border-radius:var(--radius-md);border-width:1px;border-color:var(--color-warning-strong);--tw-border-opacity:0.6;padding:.75rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);backdrop-filter:blur(14px);background-color:var(--color-warning-glass)}.modal-alert,.modal-alert__icon{color:var(--color-warning-strong)}.modal-alert__icon{margin-top:.125rem;height:1.25rem;width:1.25rem;flex-shrink:0}.modal-tile{border-radius:var(--radius-xl);border-width:1px;border-color:var(--color-border-translucent);background-color:var(--color-overlay-panel-soft);padding:1rem 1.25rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-text-frosted);background-color:var(--color-overlay-panel-glass-soft)}.modal-tile>h3{font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-text)}.modal-primary{outline:2px solid transparent;outline-offset:2px}.modal-primary:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.modal-primary{display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-info-strong);padding:.625rem 1.25rem;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:600;color:var(--color-white);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.modal-primary:hover{background-color:var(--color-info)}.modal-primary:focus-visible{background-color:var(--color-info-pressed)}.modal-primary:disabled{pointer-events:none;cursor:not-allowed;opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}body.iframe-form button.modal-primary{align-self:flex-start;margin-top:var(--space-md)}.modal-primary{width:100%;justify-content:center}@media (prefers-reduced-motion:reduce){.modal-primary{transition-property:none}}.grid-stack{display:grid;gap:var(--space-lg)}.grid-stack[data-variant=cards]{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.grid-stack[data-variant=cards]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1280px){.grid-stack[data-variant=cards]{grid-template-columns:repeat(3,minmax(0,1fr))}}#playerModal.grid-stack[data-orientation=vertical]{display:flex}.grid-stack[data-orientation=vertical]{display:flex;flex-direction:column;gap:var(--space-md)}#playerModal.bv-stack,.bv-stack{display:flex}.bv-stack{flex-direction:column;gap:var(--space-lg)}.bv-stack--tight{gap:var(--space-md)}.bv-grid-video{display:grid;gap:var(--space-xl);padding-top:var(--space-lg);padding-bottom:var(--space-lg);grid-template-columns:repeat(auto-fill,minmax(20rem,1fr))}.\!card[data-alert=nsfw-owner],.card[data-alert=nsfw-owner]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-black)}.\!card[data-alert=nsfw-owner]:hover,.card[data-alert=nsfw-owner]:hover{--tw-border-opacity:0.6;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.\!card img[data-thumbnail-state=blurred],.card img[data-thumbnail-state=blurred]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.\!card img[data-thumbnail-state=blurred]{filter:blur(18px)!important;transform:scale(1.05)!important}.card img[data-thumbnail-state=blurred]{filter:blur(18px);transform:scale(1.05)}.\!card[data-owner-is-viewer=true][data-url-health-state=offline][data-stream-health-state=unhealthy],.card[data-owner-is-viewer=true][data-url-health-state=offline][data-stream-health-state=unhealthy]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.video-visibility-toggle{display:inline-flex;align-items:center;gap:.25rem;border-radius:var(--radius-full);border-width:1px;border-color:var(--color-border);background-color:var(--color-panel);padding:.25rem}.video-visibility-toggle__option{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-panel);padding:.5rem .75rem;font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1)}.video-visibility-toggle__option:not(.is-disabled):hover{background-color:var(--color-panel-hover);color:var(--color-text)}.video-visibility-toggle__option[data-active=true]{border-width:1px;border-color:var(--color-info);--tw-border-opacity:0.6;color:var(--color-text);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.video-visibility-toggle__option.is-disabled{cursor:not-allowed;opacity:.45}#playerModal.video-modal__container{display:flex}.video-modal__container{display:flex;height:100%;min-height:100vh;width:100%;flex:1 1 0%;flex-direction:column}#playerModal.player-modal__container{display:flex}.player-modal__container{display:flex;height:100%;min-height:100vh;width:100%;flex:1 1 0%;flex-direction:column}#playerModal>.bv-modal__panel{max-width:none;height:100%;border-radius:0;background:transparent;align-items:stretch}#playerModal>.bv-modal__panel,.video-modal__panel{width:100%;padding:0;box-shadow:none;border:none;display:flex}.video-modal__panel{position:relative;z-index:var(--z-modal-content);flex:1 1 auto;min-height:100%;flex-direction:column;overflow:visible;margin:0;border-radius:0;background-color:var(--color-surface)}#playerModal .watch-container{width:100%;max-width:1100px;margin-inline:auto;padding-inline:clamp(1rem,3vw,2rem)}#playerModal .modal-info-panel{display:flex;flex-direction:column;gap:1.5rem}#playerModal h2#videoTitle{margin:0;font-size:clamp(1.5rem,1.25rem + .5vw,1.875rem);font-weight:600;line-height:1.3;color:var(--color-text)}#playerModal .modal-meta{font-size:.875rem;line-height:1.4;color:var(--color-text-muted)}#playerModal .modal-view-count{font-weight:600;color:var(--color-text)}#playerModal .channel-card{display:flex;align-items:center;gap:1rem;padding:1.25rem 1.5rem;border-radius:1rem;border:1px solid var(--color-border-translucent);background-color:var(--color-surface);box-shadow:var(--shadow-sm)}@media (max-width:480px){#playerModal .modal-nav .icon-button{width:2rem;height:2rem;min-width:2rem;min-height:2rem}#playerModal .watch-container{padding-inline:.75rem}#playerModal .channel-card{gap:.75rem;padding:.75rem 1rem}}#playerModal .channel-card__avatar{flex-shrink:0;width:3.5rem;height:3.5rem;border-radius:9999px;overflow:hidden;background-color:var(--color-border-subtle)}#playerModal .channel-card__avatar img{display:block;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}#playerModal .channel-card__name{margin:0;font-size:1.125rem;font-weight:600;color:var(--color-text)}#playerModal .channel-card__npub{margin:0;font-size:.875rem;color:var(--color-text-muted)}#playerModal .description-panel{padding:1.25rem 1.5rem;border-radius:1rem;border:1px solid var(--color-border-translucent);background-color:var(--color-surface);box-shadow:var(--shadow-sm)}#playerModal .description-panel p{margin:0;font-size:.875rem;line-height:1.6;color:var(--color-text)}.player-modal__content{position:relative;z-index:var(--z-modal-content);display:flex;flex:1 1 auto;width:100%;min-height:100%;flex-direction:column;overflow:visible;padding:0;margin:0;border:none;border-radius:0;background-color:var(--color-surface);box-shadow:none}@media (prefers-reduced-motion:reduce){.player-modal__content{transition-property:none}}#playerModal .modal-nav{position:sticky;top:0;z-index:60;--tw-translate-y:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:var(--color-overlay-darker);background-image:linear-gradient(180deg,var(--color-overlay-panel-gradient-start) 0,var(--color-overlay-panel-gradient-end) 100%);border-bottom:1px solid var(--color-border-translucent);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}#playerModal#playerModal .modal-nav__bar{display:flex}#playerModal .modal-nav__bar{display:flex;width:100%;align-items:center;gap:.75rem;padding:.5rem}@media (min-width:640px){#playerModal .modal-nav__bar{padding-left:1rem;padding-right:1rem}}#playerModal .modal-nav__context{font-size:var(--font-size-xs);line-height:var(--line-height-tight);font-weight:600;text-transform:uppercase;letter-spacing:.025em;color:var(--color-muted)}#playerModal#playerModal .modal-nav .modal-actions{display:flex}#playerModal .modal-nav .modal-actions{display:flex;align-items:center;gap:.5rem;margin-left:auto}#playerModal .modal-nav .icon-button{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-full);color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-timing-function:cubic-bezier(0,0,.2,1);width:2.5rem;height:2.5rem;background:var(--color-surface-tint-subtle);border:1px solid var(--color-border-translucent-medium);color:var(--color-text-muted)}#playerModal .modal-nav .icon-button:focus-visible,#playerModal .modal-nav .icon-button:hover{background:var(--color-border-translucent-bright);border-color:var(--color-border-translucent-strong);color:var(--color-text)}.modal-nav--hidden{--tw-translate-y:-100%}.modal-nav--hidden,.modal-nav--visible{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.modal-nav--visible{--tw-translate-y:0px}.video-modal__layout{display:grid;gap:1.5rem}@media (min-width:1024px){.video-modal__layout{gap:2rem}}#playerModal.video-modal__primary{display:flex}.video-modal__primary{display:flex;flex-direction:column;gap:1.5rem}#playerModal.video-modal__secondary{display:flex}.video-modal__secondary{display:flex;flex-direction:column;gap:1rem}.video-modal__video{position:relative;background-color:var(--color-black);padding-block:clamp(.5rem,2.5vw,1.25rem)}@media (min-width:1024px){.video-modal__video{position:sticky;top:5rem}}#playerModal .video-modal__video video{border-radius:.75rem;box-shadow:0 1rem 2.25rem var(--color-shadow-elevated);max-height:min(80vh,56.25vw);-o-object-fit:contain;object-fit:contain}.video-modal__media{display:block;aspect-ratio:16/9;width:100%;-o-object-fit:contain;object-fit:contain}#playerModal.video-modal__details{display:flex}.video-modal__details{display:flex;flex-direction:column;gap:1.5rem}.video-modal__meta{border-bottom-width:1px;border-color:var(--color-border);--tw-border-opacity:0.2;padding-bottom:1rem}#playerModal.video-modal__actions-row{display:flex}.video-modal__actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.video-modal__action-button{display:inline-flex;height:2.75rem;min-width:2.75rem;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.3;background-color:var(--color-panel);padding-left:.75rem;padding-right:.75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:600;color:var(--color-text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.video-modal__action-button:hover{background-color:var(--color-panel-hover)}.bv-modal.video-modal__action-label,.profile-pane.video-modal__action-label,.video-modal__action-label{display:none}@media (min-width:640px){.video-modal__action-label{display:inline}}.video-modal__action-icon{height:1.25rem;width:1.25rem}.video-modal__channel,.video-modal__description,.video-modal__stats{border-radius:1rem;border-width:1px;border-color:var(--color-border);--tw-border-opacity:0.2;background-color:var(--color-surface);padding:1.25rem 1.5rem;--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.video-modal__progress{height:.5rem;width:100%;overflow:hidden;border-radius:var(--radius-full);background-color:var(--color-border-subtle)}#playerModal.video-modal__stat-metrics{display:flex}.video-modal__stat-metrics{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-muted)}#playerModal.profile-pane{display:flex}.profile-pane{display:flex;flex-direction:column;gap:var(--space-lg)}.profile-pane.hidden{display:none}.torrent-download-anchor{display:none!important}.torrent-clipboard-textarea{position:fixed;top:0;left:-9999px;opacity:0;width:0;height:0;pointer-events:none}.torrent-toast-motion{transition-property:opacity,transform;will-change:opacity,transform}.torrent-toast{pointer-events:auto;width:100%;max-width:28rem;border-radius:var(--radius-lg);padding:.75rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:500;letter-spacing:-.025em;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow);--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-inset:inset}.torrent-toast--info{border-width:1px;border-color:var(--color-border-translucent);background-color:var(--color-surface);color:var(--color-text)}.torrent-toast--success{border-width:1px;border-color:var(--color-info);--tw-border-opacity:0.6;background-color:var(--color-info);color:var(--color-white)}.torrent-toast--error{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.6;background-color:var(--color-critical);color:var(--color-white)}.torrent-toast--warn{border-width:1px;border-color:var(--color-warning-strong);--tw-border-opacity:0.7;background-color:var(--color-warning-strong);color:var(--color-warning-strong)}.watch-history-card{outline:2px solid transparent;outline-offset:2px}.watch-history-card:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.7;--tw-ring-offset-width:2px;--tw-ring-offset-color:var(--color-surface);transition-property:box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-fast);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card{position:relative;border-radius:var(--radius-lg);border-width:1px;border-color:transparent;background-color:var(--color-card);color:var(--color-text);--tw-shadow:var(--shadow-md);--tw-shadow-colored:var(--shadow-md);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card:focus-visible{border-color:var(--color-info);--tw-border-opacity:0.4;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card[data-state=critical]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.watch-history-card[data-state=private]{background-color:var(--color-card-private);--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg)}.watch-history-card[data-state=disabled],.watch-history-card[data-state=private]{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card[data-state=disabled]{opacity:.6;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000}.watch-history-card[data-alert=nsfw-owner]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-black)}.watch-history-card[data-alert=nsfw-owner]:hover{--tw-border-opacity:0.6;--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.watch-history-card img[data-thumbnail-state=blurred]{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(.4,0,.2,1);filter:blur(18px);transform:scale(1.05)}.watch-history-card[data-owner-is-viewer=true][data-url-health-state=offline][data-stream-health-state=unhealthy]{border-width:1px;border-color:var(--color-critical);--tw-border-opacity:0.4;background-color:var(--color-card-critical)}.watch-history-card[data-motion=enter]{opacity:0;animation:card-motion-enter .22s ease-out forwards}#playerModal.watch-history-card{display:flex}.watch-history-card{display:flex;flex-wrap:wrap;align-items:stretch;gap:1.25rem;padding:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}@media (prefers-reduced-motion:reduce){.watch-history-card,.watch-history-card[data-motion=enter]{transition-property:none}.watch-history-card[data-motion=enter]{opacity:1;animation:none}}.watch-history-card:hover{--tw-translate-y:-0.125rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}@media (min-width:640px){.watch-history-card{gap:1.5rem;padding:1.25rem}}.watch-history-card--private{border-color:var(--color-info);--tw-border-opacity:0.6}#playerModal.watch-history-card__primary{display:flex}.watch-history-card__primary{display:flex;min-width:0;flex:1 1 0%;flex-wrap:wrap;align-items:stretch;gap:1rem}@media (min-width:640px){.watch-history-card__primary{flex-wrap:nowrap}}.watch-history-card__thumbnail{display:block;flex:none;color:var(--color-text);text-decoration-line:none}@media (min-width:640px){.watch-history-card__thumbnail{width:14rem}}.watch-history-card__thumbnailInner{aspect-ratio:16/9;width:100%;overflow:hidden;border-radius:var(--radius-lg);background-color:var(--color-surface)}.watch-history-card__thumbnailInner img{height:100%;width:100%;-o-object-fit:cover;object-fit:cover}#playerModal.watch-history-card__details{display:flex}.watch-history-card__details{display:flex;min-width:0;flex:1 1 0%;flex-direction:column;justify-content:center;gap:var(--space-sm)}.watch-history-card__title{cursor:pointer;font-size:var(--font-size-lg);line-height:var(--line-height-base);font-weight:600;line-height:1.375;color:var(--color-text);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.watch-history-card__title:focus,.watch-history-card__title:hover{color:var(--color-info)}.watch-history-card__created{font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-muted)}#playerModal.watch-history-card__meta{display:flex}.watch-history-card__meta{display:flex;min-width:0;flex-direction:column;justify-content:space-between;gap:1rem}@media (min-width:640px){.watch-history-card__meta{min-width:14rem;flex:0 0 16rem}}.watch-history-card__watched{font-size:var(--font-size-sm);line-height:var(--line-height-snug);color:var(--color-border-subtle)}#playerModal.watch-history-card__creator{display:flex}.watch-history-card__creator{display:flex;align-items:center;gap:.75rem}#playerModal.watch-history-card__creatorAvatar{display:flex}.watch-history-card__creatorAvatar{display:flex;height:2.5rem;width:2.5rem;align-items:center;justify-content:center;border-radius:var(--radius-full);background-color:var(--color-panel);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card__creatorAvatar:hover{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.5}.watch-history-card__creatorAvatar:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000);--tw-ring-color:var(--color-info);--tw-ring-opacity:0.5}.watch-history-card__creatorAvatar img{height:100%;width:100%;border-radius:var(--radius-full);-o-object-fit:cover;object-fit:cover}.watch-history-card__creatorName{cursor:pointer;background-color:transparent;padding:0;text-align:left;font-size:var(--font-size-base);line-height:var(--line-height-base);font-weight:500;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card__creatorName:hover{color:var(--color-info)}.watch-history-card__creatorName:focus-visible{color:var(--color-info)}#playerModal.watch-history-card__actions{display:flex}.watch-history-card__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.watch-history-card__action{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;border-radius:var(--radius-full);border-width:1px;border-color:transparent;background-color:var(--color-panel);padding:.5rem 1rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);font-weight:500;color:var(--color-muted);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;transition-duration:var(--motion-duration-base);transition-timing-function:cubic-bezier(0,0,.2,1)}.watch-history-card__action:hover{border-color:var(--color-border);background-color:var(--color-surface-alt);color:var(--color-text)}.watch-history-card__action:focus-visible{border-color:var(--color-border);background-color:var(--color-surface-alt);color:var(--color-text)}.watch-history-card__action--primary{background-color:var(--color-info-strong);color:var(--color-white)}.watch-history-card__action--primary:hover{background-color:var(--color-info-pressed)}.watch-history-card__action--primary:focus-visible{background-color:var(--color-info-pressed)}.watch-history-card__action--danger{background-color:var(--color-critical);color:var(--color-white)}.watch-history-card__action--danger:hover{background-color:var(--color-critical-strong)}.watch-history-card__action--danger:focus-visible{background-color:var(--color-critical-strong)}.\!container{max-width:92.5rem!important;margin:0 auto!important;padding:1rem!important}.container{max-width:92.5rem;margin:0 auto;padding:1rem}.fade-in{opacity:0;animation:interface-fade-in .28s ease-out forwards;animation-delay:var(--fade-in-delay,0ms)}.fade-in-delay-100{--fade-in-delay:100ms}.fade-in-delay-200{--fade-in-delay:200ms}.fade-in-delay-300{--fade-in-delay:300ms}.\!card[data-motion=enter]{opacity:0!important;animation:card-motion-enter .22s ease-out forwards!important}.card[data-motion=enter]{opacity:0;animation:card-motion-enter .22s ease-out forwards}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;flex:0 0 2.5rem;line-height:0;background-color:var(--color-neutral-700);color:var(--color-white);border:none;border-radius:9999px;cursor:pointer;transition:background-color .2s ease,box-shadow .2s ease}.icon-button:hover{background-color:var(--color-neutral-600)}.icon-button:active,.icon-button:focus{outline:none;box-shadow:0 0 0 .1875rem var(--color-ring-alert)}.icon-image{width:1.25rem;height:1.25rem;pointer-events:none}.modal-nav .icon-button{box-shadow:none;padding:0;gap:0;width:2.5rem;height:2.5rem;min-width:2.5rem;min-height:2.5rem;border:none}.modal-meta{gap:.5rem}.modal-meta,.modal-view-count{display:inline-flex;align-items:center}.modal-view-count{gap:.25rem;font-size:.875rem;line-height:1.25rem;color:var(--color-muted-alt);white-space:nowrap}.view-count-text{white-space:nowrap;color:var(--color-muted-strong)}.ratio-16-9{position:relative;width:100%;padding-top:56.25%;background-color:var(--color-card)}.ratio-16-9>img{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}#modalContainer{position:fixed;inset:0;z-index:var(--z-modal-root);pointer-events:none;isolation:isolate}#modalContainer>*{pointer-events:auto}#modalContainer>[id$=Modal]:not(#playerModal){z-index:var(--z-modal-root)}#modalContainer>[id$=Modal]:not(#playerModal)>.bv-modal-backdrop{z-index:var(--z-modal-overlay)}#modalContainer>[id$=Modal]:not(#playerModal) .bv-modal__panel{z-index:var(--z-modal-content)}#modalContainer>#playerModal{z-index:var(--z-modal-player)}#modalContainer>#playerModal .player-modal__container,#modalContainer>#playerModal .player-modal__content{z-index:var(--z-modal-content)}#playerModal{position:fixed;inset:0;z-index:var(--z-modal-player);display:none;flex-direction:column;align-items:stretch;justify-content:stretch;width:100vw;height:100vh;background-color:var(--color-surface);color:var(--color-subtle-text);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}#playerModal.flex{display:flex}#modalVideo{width:100%;aspect-ratio:16/9;background-color:var(--color-black)}.status-banner{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;padding:1rem;border-radius:.5rem;background-color:var(--color-overlay-panel);color:var(--color-subtle)}.status-banner .status-spinner{animation:spin 1s linear infinite;border-radius:9999px;border:.125rem solid var(--color-border-neutral-soft);border-top-color:var(--color-page-alt);height:1.25rem;width:1.25rem}.status-spinner--inline{animation:spin 1s linear infinite;border-radius:9999px;border:.125rem solid var(--color-border-info-soft);border-top-color:var(--color-info);display:inline-block;height:1rem;width:1rem}body.iframe-form{background-color:transparent;color:var(--color-text);font-family:var(--font-family-sans);margin:var(--space-lg)}body.iframe-form .container{width:100%;max-width:100%;margin:0;padding:0}body.iframe-form .\!container{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important}body.iframe-form .form-container{background-color:var(--color-surface-alt);border-radius:var(--radius-md);box-shadow:var(--shadow-md);color:var(--color-text);display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-lg)}body.iframe-form .form-container>p{margin:0}body.iframe-form form{display:flex;flex-direction:column}body.iframe-form form>*+*{margin-top:var(--space-sm)}body.iframe-form form h1,body.iframe-form form h2{color:var(--color-text);margin-top:var(--space-md)}body.iframe-form label{color:var(--color-subtle-text);display:block;font-weight:600;margin-top:var(--space-sm)}body.iframe-form label+.form-control,body.iframe-form label+.select,body.iframe-form label+.textarea{margin-top:var(--space-xs)}body.iframe-form .checkbox-group,body.iframe-form .radio-group{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-top:var(--space-xs)}body.iframe-form .checkbox-group label,body.iframe-form .radio-group label{align-items:center;color:var(--color-subtle-text);display:inline-flex;font-weight:500;gap:var(--space-xs);margin:0}body.iframe-form .checkbox-group input[type=checkbox],body.iframe-form .radio-group input[type=radio]{margin:0}body.iframe-form .radio-group input[type=radio]{accent-color:var(--color-info-strong)}body.iframe-form button.btn{align-self:flex-start;margin-top:var(--space-md)}body.iframe-form #status{background:var(--color-surface);border-radius:var(--radius-sm);box-shadow:inset 0 0 0 1px var(--color-border-translucent);color:var(--color-subtle-text);min-height:5rem;padding:var(--space-sm);white-space:pre-wrap}body.iframe-form .status-line{color:var(--color-subtle-text);margin:var(--space-2xs) 0}body.iframe-form .status-line.error{color:var(--color-critical-strong)}body.iframe-form .status-line.\!error{color:var(--color-critical-strong)!important}body.iframe-form .status-line.success{color:var(--color-info-strong)}body.iframe-form .status-line.\!success{color:var(--color-info-strong)!important}body.iframe-form .status-line.warn{color:var(--color-warning-strong)}@media (max-width:640px){body.iframe-form{margin:var(--space-md)}body.iframe-form .form-container{padding:var(--space-md)}}#sidebarContainer{position:relative;overflow:visible}#sidebar{position:fixed;top:0;left:0;width:var(--sidebar-width);min-width:var(--sidebar-width);height:100vh;height:100dvh;color:var(--color-text-frosted-strong);overflow-x:visible;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;scrollbar-gutter:stable both-edges;background:transparent;border-right:none;backdrop-filter:none;-webkit-backdrop-filter:none;transition:width .2s ease,transform .3s ease;z-index:var(--z-sidebar);box-shadow:none;isolation:isolate}#sidebar .sidebar__inner{padding:var(--space-sidebar-shell-block-start) var(--space-sidebar-shell-inline) var(--space-sidebar-shell-block-end);border-radius:var(--radius-sidebar-shell);border:1px solid var(--color-sidebar-border-strong);background:radial-gradient(140% 140% at 15% 10%,color-mix(in srgb,var(--color-sidebar-accent-start) 46%,transparent) 0,transparent 65%),radial-gradient(130% 130% at 82% 88%,color-mix(in srgb,var(--color-sidebar-accent-end) 42%,transparent) 0,transparent 70%),linear-gradient(160deg,color-mix(in srgb,var(--color-sidebar-surface) 92%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 98%,transparent) 100%);box-shadow:var(--shadow-sidebar-shell);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);isolation:isolate;transition:border-color .2s ease,box-shadow .22s ease,background .22s ease,backdrop-filter .22s ease}#sidebar .sidebar__inner,.sidebar-scroll{display:flex;flex-direction:column;height:100%;width:100%;overflow:visible}.sidebar-scroll{gap:var(--space-sidebar-scroll-gap);min-height:0;flex:1 1 auto}.sidebar-panel{position:relative;width:100%;display:flex;flex-direction:column;gap:var(--space-sidebar-panel-gap);padding:var(--space-sidebar-panel-padding-block) var(--space-sidebar-panel-padding-inline);border-radius:var(--radius-sidebar-panel);border:none;background:transparent;box-shadow:none;color:inherit;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:hidden;isolation:isolate;transition:border-color .2s ease,box-shadow .22s ease,background .22s ease}.sidebar-panel--primary{flex:1 1 auto;min-height:0}.sidebar-panel__header{display:none;justify-content:flex-end;margin-bottom:var(--space-md)}.sidebar-collapse-toggle{display:none;align-items:center;justify-content:center;width:var(--sidebar-control-size);height:var(--sidebar-control-size);border-radius:9999px;border:1px solid var(--color-border-translucent-medium);background:var(--color-surface-tint-subtle);color:inherit;cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease;flex-shrink:0;box-sizing:border-box}.sidebar-collapse-toggle:hover{background:var(--color-border-translucent);border-color:var(--color-border-translucent-stronger);color:var(--color-text)}.sidebar-collapse-toggle:focus-visible{outline:.125rem solid var(--color-secondary);outline-offset:.25rem}.sidebar-collapse-toggle__icon{width:1.125rem;height:1.125rem;transition:transform .2s ease}.sidebar-nav{display:flex;flex-direction:column;gap:var(--space-xs);opacity:1;transition:opacity .16s ease;width:100%}.sidebar-nav-link{--sidebar-nav-translate-x:0;--sidebar-nav-link-highlight-opacity:0;--sidebar-nav-link-highlight-scale:0.96;display:flex;align-items:center;gap:var(--space-sidebar-footer-gap);padding:var(--space-sidebar-nav-padding-block) var(--space-md);min-height:var(--sidebar-control-size);border-radius:var(--radius-sidebar-nav);font-size:var(--font-size-sidebar-nav);font-weight:600;letter-spacing:.015em;color:var(--color-text-frosted-strong);text-decoration:none;width:100%;position:relative;border:1px solid var(--color-sidebar-border);background:linear-gradient(155deg,color-mix(in srgb,var(--color-sidebar-surface) 72%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 48%,transparent) 100%);box-shadow:inset 0 0 0 .5px var(--color-sidebar-border);transform:translateX(var(--sidebar-nav-translate-x));transition:color .18s ease,border-color .2s ease,box-shadow .22s ease,transform .22s ease;overflow:hidden;isolation:isolate;backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%)}.sidebar-nav-link:after,.sidebar-nav-link:before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none;transition:opacity .22s ease,transform .24s ease;z-index:-1}.sidebar-nav-link:before{background:linear-gradient(120deg,var(--color-sidebar-accent-start) 0,var(--color-sidebar-accent-end) 100%);opacity:var(--sidebar-nav-link-highlight-opacity);transform:scale(var(--sidebar-nav-link-highlight-scale));filter:saturate(140%)}.sidebar-nav-link:after{background:linear-gradient(105deg,var(--color-sidebar-hover) 0,transparent 75%);opacity:.22;mix-blend-mode:screen;z-index:-2}.sidebar-nav-link:focus-visible,.sidebar-nav-link:hover{--sidebar-nav-link-highlight-opacity:1;--sidebar-nav-link-highlight-scale:1.02;--sidebar-nav-translate-x:0.35rem;color:var(--color-white);border-color:var(--color-sidebar-hover-strong);box-shadow:0 0 0 1px var(--color-sidebar-hover-strong),var(--shadow-sidebar-accent)}.sidebar-nav-link:focus-visible{outline:none;box-shadow:var(--shadow-sidebar-focus-ring),var(--shadow-sidebar-accent)}.sidebar-nav-link:focus-visible:after,.sidebar-nav-link:hover:after{opacity:.35}.sidebar-nav-link--sub{font-size:var(--font-size-sidebar-subnav);font-weight:500;color:var(--color-sidebar-text-muted);padding-block:var(--space-sidebar-subnav-padding-block);letter-spacing:.02em;--sidebar-nav-link-highlight-opacity:0.25;--sidebar-nav-link-highlight-scale:1}.sidebar-icon{width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem;flex-shrink:0;display:block}.sidebar-footer{flex-direction:column;margin-top:auto;z-index:2}.sidebar-dropup-trigger,.sidebar-footer{display:flex;gap:var(--space-sidebar-footer-gap);position:relative}.sidebar-dropup-trigger{align-items:center;justify-content:space-between;width:100%;padding:var(--space-sidebar-trigger-padding-block) var(--space-md);min-height:var(--sidebar-control-size);border-radius:var(--radius-sidebar-nav);border:1px solid var(--color-sidebar-border);background:linear-gradient(155deg,color-mix(in srgb,var(--color-sidebar-surface) 80%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 58%,transparent) 100%);color:var(--color-text-frosted);font-size:var(--font-size-sidebar-trigger);font-weight:600;cursor:pointer;box-sizing:border-box;flex-shrink:0;overflow:hidden;isolation:isolate;backdrop-filter:blur(18px) saturate(150%);-webkit-backdrop-filter:blur(18px) saturate(150%);box-shadow:inset 0 0 0 .5px var(--color-sidebar-border),var(--shadow-sidebar-trigger);transition:border-color .2s ease,color .2s ease,box-shadow .22s ease,background .22s ease}.sidebar-dropup-trigger:before{background:linear-gradient(120deg,var(--color-sidebar-accent-start) 0,var(--color-sidebar-accent-end) 100%);opacity:0;transform:scale(.96);transition:opacity .2s ease,transform .22s ease;z-index:-1;filter:saturate(140%)}.sidebar-dropup-trigger:after,.sidebar-dropup-trigger:before{content:"";position:absolute;inset:-1px;border-radius:inherit;pointer-events:none}.sidebar-dropup-trigger:after{background:linear-gradient(110deg,var(--color-sidebar-hover) 0,transparent 80%);opacity:.18;mix-blend-mode:screen;transition:opacity .2s ease;z-index:-2}.sidebar-dropup-trigger:focus-visible,.sidebar-dropup-trigger:hover{color:var(--color-white);border-color:var(--color-sidebar-hover-strong);box-shadow:0 0 0 1px var(--color-sidebar-hover-strong),var(--shadow-sidebar-dropup)}.sidebar-dropup-trigger:focus-visible:before,.sidebar-dropup-trigger:hover:before{opacity:1;transform:scale(1.02)}.sidebar-dropup-trigger:focus-visible:after,.sidebar-dropup-trigger:hover:after{opacity:.35}.sidebar-dropup-trigger:focus-visible{outline:none;box-shadow:var(--shadow-sidebar-focus-ring),var(--shadow-sidebar-dropup)}.sidebar-dropup-trigger__glyph{width:1.25rem;height:1.25rem;opacity:.9}.sidebar-dropup-trigger__chevron{width:1.125rem;height:1.125rem;transition:transform .18s ease}.sidebar-dropup-trigger[aria-expanded=true] .sidebar-dropup-trigger__chevron,.sidebar-dropup-trigger__chevron.is-rotated{transform:rotate(180deg)}.sidebar-dropup-panel{position:absolute;left:0;right:0;bottom:calc(100% + var(--space-sidebar-popover-offset));border-radius:1rem;border:1px solid var(--color-sidebar-border-strong);background:linear-gradient(160deg,color-mix(in srgb,var(--color-sidebar-surface) 88%,transparent) 0,color-mix(in srgb,var(--color-sidebar-surface-alt) 68%,transparent) 100%);box-shadow:inset 0 0 0 .5px var(--color-sidebar-border),var(--shadow-sidebar-panel);padding:var(--space-sidebar-popover-padding-block) var(--space-sidebar-popover-padding-inline);color:var(--color-text-frosted);opacity:0;visibility:hidden;pointer-events:none;transform:translateY(var(--space-sm));transition:opacity .18s ease,transform .18s ease,visibility .18s ease,box-shadow .22s ease;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);z-index:5;isolation:isolate}.sidebar-dropup-panel[data-state=expanded]{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.sidebar-dropup-panel__inner{display:flex;flex-direction:column;gap:var(--space-sidebar-popover-gap)}#sidebar[data-footer-state=expanded] .sidebar-nav{opacity:0;pointer-events:none}#sidebar[data-footer-state=collapsed] .sidebar-nav{opacity:1}#sidebar.sidebar-open{box-shadow:var(--shadow-sidebar-shell),0 0 0 1px var(--color-sidebar-border-strong)}#sidebarOverlay{position:fixed;inset:0;background:var(--color-overlay-muted);opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:var(--z-sidebar-overlay)}body.sidebar-open #sidebarOverlay{opacity:1;pointer-events:auto}.sidebar-loading-wrapper{display:flex;justify-content:center;align-items:center;padding:3rem 0;width:100%;grid-column:1/-1}.sidebar-loading-indicator{display:inline-flex;align-items:center;gap:.75rem;color:var(--color-muted-strong);font-size:.875rem;font-weight:500;letter-spacing:.01em}.sidebar-loading-text{white-space:nowrap}.locked-input{background-color:var(--color-overlay-panel-soft)!important;border-color:var(--color-border-sidebar-strong)!important;color:var(--color-muted)!important;cursor:default}.locked-input:focus{outline:none;box-shadow:none}@media (max-width:767px){#sidebar{transform:translate3d(-100%,0,0);width:min(var(--sidebar-width-expanded),calc(100vw - 3rem))}#sidebar.sidebar-open{transform:translateZ(0)}body.sidebar-open{overflow:hidden}}@media (min-width:768px){.sidebar-panel__header{display:flex}.sidebar-collapse-toggle{display:inline-flex}#sidebar{transform:translateX(0)!important;width:var(--sidebar-width);overflow:visible}#sidebar.sidebar-open{box-shadow:none}#sidebarOverlay{display:none}#app{box-sizing:border-box;transition:margin-left .2s ease,width .2s ease,max-width .2s ease}#app[data-sidebar-state=collapsed]{margin-left:calc(var(--sidebar-width-collapsed) + var(--sidebar-content-gap));width:calc(100vw - var(--sidebar-width-collapsed) - var(--sidebar-content-gap));max-width:calc(100vw - var(--sidebar-width-collapsed) - var(--sidebar-content-gap))}#app[data-sidebar-state=expanded]{margin-left:calc(var(--sidebar-width-expanded) + var(--sidebar-content-gap));width:calc(100vw - var(--sidebar-width-expanded) - var(--sidebar-content-gap));max-width:calc(100vw - var(--sidebar-width-expanded) - var(--sidebar-content-gap))}#app.sidebar-collapsed,#sidebar.sidebar-collapsed,body.sidebar-collapsed{--sidebar-width:var(--sidebar-width-collapsed)}#app.sidebar-expanded,#sidebar.sidebar-expanded,body.sidebar-expanded{--sidebar-width:var(--sidebar-width-expanded)}#sidebar.sidebar-collapsed .sidebar-nav-link,body.sidebar-collapsed #sidebar .sidebar-nav-link{justify-content:center;width:var(--sidebar-control-size);padding:0;margin-inline:auto;border-radius:9999px;--sidebar-nav-translate-x:0;--sidebar-nav-link-highlight-scale:1}#sidebar.sidebar-expanded .sidebar-nav-link,body.sidebar-expanded #sidebar .sidebar-nav-link{justify-content:flex-start}#sidebar.sidebar-collapsed .sidebar-text,body.sidebar-collapsed #sidebar .sidebar-text{display:none}#sidebar.sidebar-collapsed .sidebar__inner,body.sidebar-collapsed #sidebar .sidebar__inner{padding-inline:.25rem}#sidebar.sidebar-collapsed .sidebar-panel,body.sidebar-collapsed #sidebar .sidebar-panel{padding-inline:.375rem}#sidebar.sidebar-collapsed .sidebar-panel__header,body.sidebar-collapsed #sidebar .sidebar-panel__header{justify-content:center}#sidebar.sidebar-collapsed .sidebar-collapse-toggle,body.sidebar-collapsed #sidebar .sidebar-collapse-toggle{margin-inline:auto}#sidebar .sidebar-toggle-icon--rotated{transform:rotate(180deg)}#sidebar.sidebar-collapsed .sidebar-toggle-icon--rotated,body.sidebar-collapsed #sidebar .sidebar-toggle-icon--rotated{transform:rotate(0deg)}#sidebar.sidebar-collapsed .sidebar-dropup-trigger,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger{justify-content:center;width:var(--sidebar-control-size);height:var(--sidebar-control-size);padding:0;margin-inline:auto;border-radius:9999px}#sidebar.sidebar-collapsed .sidebar-dropup-trigger .sidebar-text,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger .sidebar-text,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger__chevron{display:none}#sidebar.sidebar-collapsed .sidebar-dropup-trigger__glyph,body.sidebar-collapsed #sidebar .sidebar-dropup-trigger__glyph{margin:0}#sidebar.sidebar-collapsed .sidebar-nav-link:focus-visible,#sidebar.sidebar-collapsed .sidebar-nav-link:hover,body.sidebar-collapsed #sidebar .sidebar-nav-link:focus-visible,body.sidebar-collapsed #sidebar .sidebar-nav-link:hover{--sidebar-nav-translate-x:0}}@keyframes card-motion-enter{0%{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes video-thumbnail-fade-in{0%{opacity:0}to{opacity:1}}@keyframes interface-fade-in{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0;transform:translateY(1.25rem)}to{opacity:1;transform:translateY(0)}}.status-line{margin-top:.25rem;margin-bottom:.25rem;font-size:var(--font-size-sm);line-height:var(--line-height-snug);line-height:1.375;color:var(--color-text)}.status-line.error{color:var(--color-critical-strong)}.status-line.\!error{color:var(--color-critical-strong)!important}.status-line.success{color:var(--color-blog-green-500)}.status-line.\!success{color:var(--color-blog-green-500)!important}.status-line.warn{color:var(--color-warning-strong)}.blog-html{font-size:var(--blog-font-size-root)}@media (max-width:768px){.blog-html{font-size:var(--font-size-lg)}}.blog-body{margin:0;padding:0}.dark .blog-body{background-color:var(--color-text-strong);color:var(--color-blog-gray-220)}.blog-app-root{box-sizing:border-box;font-family:var(--font-family-sans);color:var(--color-text-strong)}.dark .blog-app-root{background-color:var(--color-text-strong);color:var(--color-blog-gray-170)}.blog-app-root a,.blog-app-root a:visited{color:var(--color-text-strong)}.dark .blog-app-root a,.dark .blog-app-root a:visited{color:var(--color-blog-neutral-100)}.blog-app-root ol,.blog-app-root ul{padding-left:var(--space-md);margin:0}.blog-app-root ol li,.blog-app-root ul li{margin-bottom:var(--space-md)}.blog-app-root blockquote{margin:0;padding-left:var(--space-md);border-left:var(--space-xs) solid var(--color-blog-gray-170)}.blog-app-root code{font-size:var(--blog-font-size-body);background-color:var(--color-blog-neutral-120)}.blog-app-root pre code{overflow:scroll;display:block;padding:var(--space-md) var(--space-xs)}.blog-app-root .unfinished-setup{width:var(--blog-layout-fluid-width);margin:0 auto;text-align:center}.blog-app-root .header.home h1{font-size:var(--blog-font-size-display)}.blog-app-root .header .external-link{text-align:right;margin-top:calc(var(--space-md)*-1);font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-220)}@media (max-width:768px){.blog-app-root .header .external-link{margin-bottom:var(--space-md);margin-right:var(--blog-space-inline-lg)}}.blog-app-root .header .external-link a{text-decoration:underline;color:var(--color-blog-gray-220)}.blog-app-root .header .picture-container{position:relative;display:inline-block;width:var(--blog-avatar-size);height:var(--blog-avatar-size);overflow:hidden;border-radius:50%;margin-bottom:calc(var(--space-2xs)*-1)}.blog-app-root .header .picture-container img{position:absolute;top:50%;left:50%;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;transform:translate(-50%,-50%);clip-path:circle(50%)}.blog-app-root .header.note .picture-container{width:var(--blog-avatar-size-compact);height:var(--blog-avatar-size-compact);margin-bottom:calc(var(--blog-space-snug)*-1)}.blog-app-root .header a{text-decoration:none}.blog-app-root .header a span{text-decoration:underline}.dark .blog-app-root .header a:visited{color:var(--color-blog-gray-220)}.dark .blog-app-root .header .external-link,.dark .blog-app-root .header .external-link a{color:var(--color-blog-gray-440)}.blog-app-root .topic-wrapper{margin-bottom:1.5rem;display:flex;flex-direction:row;flex-wrap:wrap;row-gap:1rem}.blog-app-root .topic-wrapper div{display:inline-grid;margin-right:1rem}.blog-app-root .topic-wrapper div a{padding:.4rem 1rem;background-color:var(--color-blog-gray-190);text-decoration:none;border-radius:4px}.blog-app-root .topic-wrapper div a:hover{background-color:var(--color-blog-gray-170)}.blog-app-root .topic-wrapper div a.selected{background-color:var(--color-text-strong);color:var(--color-blog-neutral-100)}.dark .blog-app-root .topic-wrapper div a{background-color:var(--color-blog-gray-440);color:var(--color-text-strong)}.dark .blog-app-root .topic-wrapper div a:hover{background-color:var(--color-blog-neutral-100)}.dark .blog-app-root .topic-wrapper div a.selected{background-color:var(--color-blog-gray-220)}.blog-app-root .externalLink{display:block;text-align:right;margin-top:-1rem;font-size:.8em}.blog-app-root .externalLink,.blog-app-root .externalLink a{color:var(--color-blog-gray-220)}.blog-app-root .about{margin-bottom:var(--space-xl);padding-bottom:var(--space-md);border-bottom:var(--space-xs) solid var(--color-blog-gray-170)}.dark .blog-app-root .about{border-bottom:var(--space-xs) solid var(--color-card)}.blog-app-root .separator{margin-bottom:var(--space-xl);border-bottom:var(--space-xs) solid var(--color-blog-gray-170)}.dark .blog-app-root .separator{border-bottom:var(--space-xs) solid var(--color-card)}.blog-app-root .top-notes{display:flex;color:var(--color-blog-gray-440);flex-wrap:wrap;justify-content:space-between;gap:2rem;width:100%;margin-bottom:var(--space-md);padding-bottom:var(--space-xl);border-bottom:var(--space-xs) solid var(--color-blog-neutral-100)}@media (max-width:768px){.blog-app-root .top-notes{display:block;padding-bottom:0}}.blog-app-root .top-notes .note{flex:1 1 calc(50% - 2rem);box-sizing:border-box}@media (max-width:768px){.blog-app-root .top-notes .note{margin-bottom:var(--space-xl)}}.blog-app-root .top-notes .note a{text-decoration:none}.blog-app-root .top-notes .note img{width:100%;height:200px;-o-object-fit:cover;object-fit:cover;margin-bottom:var(--space-xs);border-radius:var(--radius-sm)}.blog-app-root .top-notes .note .title{display:block;margin-bottom:var(--blog-space-snug);font-size:var(--blog-font-size-title);font-weight:bolder}.blog-app-root .top-notes .note .\!title{display:block!important;margin-bottom:var(--blog-space-snug)!important;font-size:var(--blog-font-size-title)!important;font-weight:bolder!important}.blog-app-root .top-notes .note .summary{margin-bottom:var(--blog-space-snug);font-size:var(--blog-font-size-body)}.blog-app-root .top-notes .note .date{font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275)}.dark .blog-app-root .top-notes{color:var(--color-blog-gray-220);border-bottom:var(--space-xs) solid var(--color-card)}.blog-app-root .short-notes{border-bottom:var(--space-xs) solid var(--color-blog-neutral-100);padding-bottom:var(--space-md);margin-bottom:var(--space-xl)}.blog-app-root .short-notes .splide__slide{font-size:var(--blog-font-size-body);overflow-wrap:break-word}.blog-app-root .short-notes .splide__slide a{text-decoration:none}.blog-app-root .short-notes .splide__slide .date{font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275);margin-bottom:var(--blog-space-compact)}.blog-app-root .short-notes .splide__arrow--prev{left:-3em}.blog-app-root .short-notes .splide__arrow--next{right:-3em}@media (max-width:768px){.blog-app-root .short-notes .splide__arrow--next,.blog-app-root .short-notes .splide__arrow--prev{display:none}}.blog-app-root .short-notes .splide__arrow{background:none}.blog-app-root .short-notes .splide__arrow svg{fill:var(--color-blog-gray-275)}.dark .blog-app-root .short-notes{border-bottom:var(--space-xs) solid var(--color-card)}.dark .blog-app-root .short-notes a{color:var(--color-blog-gray-220)}.blog-app-root .listing-notes{margin-top:var(--space-md);color:var(--color-blog-gray-440)}.blog-app-root .listing-notes.short-feed-full li{margin-bottom:var(--space-xl)}.blog-app-root .listing-notes.short-feed-full .summary{color:var(--color-text-strong)}.blog-app-root .listing-notes ul{list-style-type:none;padding:0;margin:0}.blog-app-root .listing-notes ul li{margin-bottom:var(--space-md)}.blog-app-root .listing-notes ul li h2{font-size:var(--blog-font-size-title);margin-bottom:var(--space-xs)}.blog-app-root .listing-notes ul li h2 a{display:block;font-size:var(--blog-font-size-title)}.blog-app-root .listing-notes ul li .summary{margin-bottom:var(--blog-space-snug);overflow-wrap:break-word}.blog-app-root .listing-notes ul li .summary p{margin:0}.blog-app-root .listing-notes ul li .summary img{display:block;margin:var(--space-xl) auto;max-width:100%;border-radius:var(--radius-sm)}.blog-app-root .listing-notes ul li .summary audio,.blog-app-root .listing-notes ul li .summary video{width:100%;margin:var(--space-xl) auto}.blog-app-root .listing-notes ul li .date{font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275)}.dark .blog-app-root .listing-notes{color:var(--color-blog-gray-220)}.dark .blog-app-root .listing-notes.short-feed-full .summary{color:var(--color-white)}.blog-app-root h1{font-size:var(--font-size-2xl);line-height:var(--blog-line-height-tight);margin-top:0}@media (max-width:768px){.blog-app-root h1{font-size:var(--blog-font-size-h1-mobile)}}.blog-app-root .note-wrapper{position:relative;margin-top:var(--space-xl);overflow-wrap:break-word}.blog-app-root .note-wrapper h1,.blog-app-root .note-wrapper h2,.blog-app-root .note-wrapper h3{margin-top:var(--blog-space-heading-stack);margin-bottom:var(--blog-space-heading-gap)}.blog-app-root .note-wrapper h1:first-of-type{margin-top:0}.blog-app-root .note-wrapper .content{margin-top:var(--space-lg)}.blog-app-root .note-wrapper .\!content{margin-top:var(--space-lg)!important}.blog-app-root .note-wrapper p{line-height:var(--blog-line-height-body);margin-top:0}.blog-app-root .note-wrapper .date{display:block;margin-bottom:var(--space-xs);font-size:var(--blog-font-size-meta);color:var(--color-blog-gray-275)}.blog-app-root .note-wrapper img{display:block;margin:var(--space-xl) auto;max-width:100%;border-radius:var(--radius-sm)}.blog-app-root .note-wrapper img.note-banner{margin:var(--blog-space-media-stack-start) auto var(--blog-space-media-stack-end);transform:scale(1.1)}.blog-app-root .note-wrapper audio,.blog-app-root .note-wrapper video{width:100%;margin:var(--space-xl) auto}.blog-app-root .footer{margin-top:var(--blog-space-stack-xxl);padding-top:var(--space-xl);margin-bottom:var(--space-xl);border-top:var(--space-xs) solid var(--color-blog-gray-170);font-size:var(--blog-font-size-meta);text-align:center}.blog-app-root .footer,.blog-app-root .footer a{color:var(--color-blog-gray-220)}.dark .blog-app-root .footer{border-top:var(--space-xs) solid var(--color-card)}.dark .blog-app-root .footer,.dark .blog-app-root .footer a,.dark .blog-app-root .footer a:visited{color:var(--color-blog-gray-440)}.blog-app-root zap-threads{font-size:var(--ztr-font-size)}.blog-app-root #ztr-content,.blog-app-root #ztr-content img{max-width:100%}.blog-app-root #ztr-root{display:flex;flex-direction:column;font-family:var(--ztr-font);font-size:var(--ztr-font-size);color:var(--ztr-text-color);border:1px solid transparent;word-wrap:break-word;margin-top:4em;line-height:1.2em}.blog-app-root #ztr-subtitle{font-size:1.2em;color:var(--color-blog-gray-500)}.blog-app-root #ztr-root a{color:var(--ztr-link-color);text-decoration:none}.blog-app-root .ztr-comment{position:relative;margin:0;padding:0;background-color:var(--ztr-background-color)}.blog-app-root .ztr-comment:first-child{border-top-left-radius:.3em;border-top-right-radius:.3em}.blog-app-root .ztr-comment:last-child{border-bottom-left-radius:.3em;border-bottom-right-radius:.3em}.blog-app-root .ztr-comment-body{padding:1em}.blog-app-root .ztr-comment-info-wrapper{display:flex;justify-content:space-between;align-items:center}.blog-app-root .ztr-comment-info{display:flex;align-items:center}.blog-app-root .ztr-comment-info-picture{width:3.5em}.blog-app-root ul.ztr-comment-info-items{display:flex;align-items:center;list-style:none;margin:0;padding:0;font-size:.9em}.blog-app-root ul.ztr-comment-info-items li{display:inline-block;cursor:default;padding-right:.5em}.blog-app-root ul.ztr-comment-info-items li a{font-weight:600}.blog-app-root .ztr-comment-info-author a{font-size:1.2em;padding-right:.2em}.blog-app-root .ztr-comment-info-dots{cursor:pointer}.blog-app-root .ztr-comment-info-separator{width:.5em}.blog-app-root .ztr-comment-info-picture img{width:2em;height:2em;border-radius:50%;padding:.5em;position:relative;display:block;-o-object-fit:cover;object-fit:cover}.blog-app-root #ztr-content,.blog-app-root .ztr-comment-text{margin-bottom:.75em;padding:0 .8em 0 3.5em;line-height:1.5em;line-break:loose;word-break:break-word;overflow:hidden;max-width:750px}.blog-app-root .ztr-comment-text p{margin:0 0 .5em}.blog-app-root .ztr-comment-text code{font-size:1.1em;margin:0 .2em}.blog-app-root .ztr-comment-text pre,.blog-app-root .ztr-info-pane pre{white-space:pre-wrap;white-space:-moz-pre-wrap;word-wrap:break-word}.blog-app-root .ztr-comment-text a:hover{text-decoration:underline}.blog-app-root .ztr-comment-text img{max-width:100%}.blog-app-root .ztr-comment-text .warning{margin-top:0;font-size:.8em;display:flex;align-items:center}.blog-app-root .ztr-comment-text .warning svg{height:1.2em;fill:var(--color-blog-amber-500);padding-right:.7em}.blog-app-root .ztr-comment-replies{margin-left:2em}.blog-app-root .highlight p{background:var(--color-blog-amber-400);color:var(--color-blog-gray-800);display:inline;padding:.2em}.blog-app-root .ztr-comment-expand{display:flex;justify-content:center}.blog-app-root .ztr-comment-expand span{margin:1em 0 1em .35em;cursor:pointer}.blog-app-root .ztr-comment-expand,.blog-app-root ul.ztr-comment-actions{display:flex;align-items:center;list-style:none;margin:0;padding:0 0 0 3.5em;font-weight:600;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root ul.ztr-comment-actions li{display:inline-flex;align-items:center;text-align:center;padding:0 2em 0 0;cursor:pointer}.blog-app-root ul.ztr-comment-actions li span{padding:.25em .25em 0;color:var(--ztr-icon-color)}.blog-app-root #ztr-root svg{fill:var(--ztr-icon-color);width:1.1em;height:1.1em}.blog-app-root .ztr-comment-action-reply:hover svg{fill:var(--color-blog-purple-accent)}.blog-app-root .ztr-comment-action-reply:hover span{color:var(--color-blog-purple-accent)}.blog-app-root .ztr-comment-action-zap:hover svg{fill:var(--color-blog-amber-500)}.blog-app-root .ztr-comment-action-zap:hover span{color:var(--color-blog-amber-500)}.blog-app-root .ztr-comment-action-like:hover svg{fill:var(--color-blog-orange-600)}.blog-app-root .ztr-comment-action-like:hover span{color:var(--color-blog-orange-600)}.blog-app-root .ztr-reply-form{padding:0 .5em 0 3.5em}.blog-app-root .ztr-reply-form textarea{font-family:var(--ztr-font);font-size:1.1em;line-height:1.4;color:var(--color-blog-gray-800);background-color:var(--color-blog-neutral-50);border:1px solid var(--color-blog-gray-220);outline:none;width:calc(100% - 1.5em);padding:.7em;margin:.5em 0;height:4em;border-radius:.2em;min-height:4em;resize:vertical}.blog-app-root .ztr-reply-form:disabled{opacity:65%;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root .ztr-reply-controls{display:flex;align-items:center;justify-content:flex-end}.blog-app-root .ztr-reply-controls span{font-weight:700;font-size:.85em;margin-right:1em;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default}.blog-app-root .ztr-reply-error{color:var(--color-blog-error)}.blog-app-root .ztr-reply-controls button{font-family:var(--ztr-font);-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;padding:.5em 1em;border-radius:.2em;font-size:.85em;font-weight:600;cursor:pointer}.blog-app-root .ztr-reply-login-button{color:var(--color-white);background-color:var(--ztr-login-button-color);margin-left:1em}.blog-app-root .ztr-reply-button{color:var(--ztr-text-color);display:flex;align-items:center;background-color:var(--ztr-background-color)}.blog-app-root .ztr-info-pane{padding:0 .5em 1em 3.5em}.blog-app-root .ztr-info-pane pre{font-size:.8em}.blog-app-root .ztr-spinner{width:1.2em;height:1.2em;padding:.9em;animation:ztr-rotate 4s linear infinite}.blog-app-root .ztr-reply-button:disabled{opacity:65%;pointer-events:none;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root .ztr-spinner .path{stroke:var(--ztr-text-color);stroke-linecap:round;animation:ztr-dash 1.5s ease-in-out infinite}@keyframes ztr-rotate{to{transform:rotate(1turn)}}@keyframes ztr-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.blog-app-root .ztr-comment-new .ztr-reply-form{margin:.5em 0;padding:0}.blog-app-root .ztr-comment-new .ztr-comment-body{padding:0}.blog-app-root .ztr-comment-new .ztr-comment-actions{font-size:1.1em;padding:0}@media (prefers-color-scheme:dark){.blog-app-root .ztr-spinner .path{stroke:var(--ztr-text-color,var(--color-blog-gray-200))}.blog-app-root .ztr-comment,.blog-app-root .ztr-reply-button{background-color:var(--ztr-background-color,hsla(0,0%,100%,.06))}.blog-app-root .ztr-reply-login-button{color:var(--color-blog-gray-800);background-color:var(--ztr-login-button-color,var(--color-blog-gray-200))}.blog-app-root #ztr-root svg{fill:var(--ztr-icon-color,var(--color-blog-gray-200))}.blog-app-root ul.ztr-comment-actions li span{color:var(--ztr-icon-color)}.blog-app-root .ztr-comment-action-reply:hover svg{fill:var(--color-blog-purple-muted)}.blog-app-root .ztr-comment-action-reply:hover span{color:var(--color-blog-purple-muted)}}.blog-app-root .splide__container{box-sizing:border-box;position:relative}.blog-app-root .splide__list{backface-visibility:hidden;display:flex;height:100%;margin:0!important;padding:0!important}.blog-app-root .splide.is-initialized:not(.is-active) .splide__list{display:block}.blog-app-root .splide__pagination{align-items:center;display:flex;flex-wrap:wrap;justify-content:center;margin:0;pointer-events:none}.blog-app-root .splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.blog-app-root .splide:not(.is-overflow) .splide__pagination{display:none}.blog-app-root .splide__progress__bar{width:0}.blog-app-root .splide{position:relative;visibility:hidden}.blog-app-root .splide.is-initialized,.blog-app-root .splide.is-rendered{visibility:visible}.blog-app-root .splide__slide{backface-visibility:hidden;box-sizing:border-box;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.blog-app-root .splide__slide img{vertical-align:bottom}.blog-app-root .splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid var(--color-blog-gray-300);border-left:2px solid transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.blog-app-root .splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.blog-app-root .splide__toggle.is-active .splide__toggle__play,.blog-app-root .splide__toggle__pause{display:none}.blog-app-root .splide__toggle.is-active .splide__toggle__pause{display:inline}.blog-app-root .splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.blog-app-root .splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.blog-app-root .splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.blog-app-root .splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.blog-app-root .splide--rtl{direction:rtl}.blog-app-root .splide__track--ttb>.splide__list{display:block}.blog-app-root .splide__arrow{align-items:center;background:var(--color-blog-gray-210);border:0;border-radius:50%;cursor:pointer;display:flex;height:2em;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.blog-app-root .splide__arrow svg{fill:var(--color-black);height:1.2em;width:1.2em}.blog-app-root .splide__arrow:hover:not(:disabled){opacity:.9}.blog-app-root .splide__arrow:disabled{opacity:.3}.blog-app-root .splide__arrow:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__arrow--prev{left:1em}.blog-app-root .splide__arrow--prev svg{transform:scaleX(-1)}.blog-app-root .splide__arrow--next{right:1em}.blog-app-root .splide.is-focus-in .splide__arrow:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.blog-app-root .splide__pagination__page{background:var(--color-blog-gray-210);border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;position:relative;transition:transform .2s linear;width:8px}.blog-app-root .splide__pagination__page.is-active{background:var(--color-white);transform:scale(1.4);z-index:1}.blog-app-root .splide__pagination__page:hover{cursor:pointer;opacity:.9}.blog-app-root .splide__pagination__page:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide.is-focus-in .splide__pagination__page:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__progress__bar{background:var(--color-blog-gray-210);height:3px}.blog-app-root .splide__slide{-webkit-tap-highlight-color:rgba(0,0,0,0)}.blog-app-root .splide__slide:focus{outline:0}@supports (outline-offset:-3px){.blog-app-root .splide__slide:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.blog-app-root .splide__slide:focus-visible{border:3px solid var(--color-blog-sky-500)}}@supports (outline-offset:-3px){.blog-app-root .splide.is-focus-in .splide__slide:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.blog-app-root .splide.is-focus-in .splide__slide:focus{border:3px solid var(--color-blog-sky-500)}.blog-app-root .splide.is-focus-in .splide__track>.splide__list>.splide__slide:focus{border-color:var(--color-blog-sky-500)}}.blog-app-root .splide__toggle{cursor:pointer}.blog-app-root .splide__toggle:focus-visible{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide.is-focus-in .splide__toggle:focus{outline:3px solid var(--color-blog-sky-500);outline-offset:3px}.blog-app-root .splide__track--nav>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.blog-app-root .splide__track--nav>.splide__list>.splide__slide.is-active{border:3px solid var(--color-black)}.blog-app-root .splide__arrows--rtl .splide__arrow--prev{left:auto;right:1em}.blog-app-root .splide__arrows--rtl .splide__arrow--prev svg{transform:scaleX(1)}.blog-app-root .splide__arrows--rtl .splide__arrow--next{left:1em;right:auto}.blog-app-root .splide__arrows--rtl .splide__arrow--next svg{transform:scaleX(-1)}.blog-app-root .splide__arrows--ttb .splide__arrow{left:50%;transform:translate(-50%)}.blog-app-root .splide__arrows--ttb .splide__arrow--prev{top:1em}.blog-app-root .splide__arrows--ttb .splide__arrow--prev svg{transform:rotate(-90deg)}.blog-app-root .splide__arrows--ttb .splide__arrow--next{bottom:1em;top:auto}.blog-app-root .splide__arrows--ttb .splide__arrow--next svg{transform:rotate(90deg)}.blog-app-root .splide__pagination--ttb{bottom:0;display:flex;flex-direction:column;left:auto;padding:1em 0;right:.5em;top:0}.blog-app-root .loader-container.svelte-181fgen{display:flex;align-items:center;justify-content:center}.blog-app-root .loader.svelte-181fgen{display:inline-block;width:92px;height:92px;opacity:0;animation:svelte-181fgen-fade-in .5s .4s forwards,svelte-181fgen-loader-animation 2s linear .4s infinite}.blog-app-root .loader.svelte-181fgen:after{content:" ";display:block;width:64px;height:64px;margin:8px;border-radius:50%;border:6px solid var(--color-blog-gray-275);border-color:var(--color-blog-gray-275) transparent var(--color-blog-gray-275) transparent;animation:svelte-181fgen-loader-animation 2s linear infinite}@keyframes svelte-181fgen-loader-animation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes svelte-181fgen-fade-in{to{opacity:1}}.dark .blog-app-root .loader.svelte-181fgen:after{border:6px solid var(--color-card);border-color:var(--color-card) transparent var(--color-card) transparent}.blog-body #theme-toggle.svelte-bxrhh.svelte-bxrhh{display:none}.blog-body #theme-toggle.svelte-bxrhh+label.svelte-bxrhh{display:inline-block;cursor:pointer;height:1rem;width:1rem;position:absolute;top:1rem;right:3rem;border-radius:9px;transition-duration:.3s;content:""}@media (max-width:768px){.blog-body #theme-toggle.svelte-bxrhh+label.svelte-bxrhh{right:1rem}}.blog-body #theme-toggle.svelte-bxrhh:not(:checked)+label.svelte-bxrhh{background-color:var(--color-blog-gray-180)}.blog-body #theme-toggle.svelte-bxrhh:checked+label.svelte-bxrhh{background-color:transparent;box-shadow:inset -6px -6px 1px 1px var(--color-card)}.blog-app-root .ztr-nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.\!visible{visibility:visible!important}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.bottom-4{bottom:1rem}.left-4{left:1rem}.right-3{right:.75rem}.right-4{right:1rem}.top-3{top:.75rem}.top-4{top:1rem}.isolate{isolation:isolate}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.-ml-2{margin-left:-.5rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-sm{margin-top:var(--space-sm)}.line-clamp-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-1{height:.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-48{height:12rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[80vh\]{height:80vh}.h-auto{height:auto}.h-full{height:100%}.max-h-\[420px\]{max-height:420px}.max-h-\[48vh\]{max-height:48vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[92vh\]{max-height:92vh}.max-h-\[calc\(92vh-4rem\)\]{max-height:calc(92vh - 4rem)}.min-h-\[320px\]{min-height:320px}.min-h-screen{min-height:100vh}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-16{width:4rem}.w-20{width:5rem}.w-24{width:6rem}.w-4{width:1rem}.w-40{width:10rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-auto{width:auto}.w-full{width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-5xl{max-width:64rem}.max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.max-w-none{max-width:none}.max-w-sm{max-width:24rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.translate-x-1{--tw-translate-x:0.25rem}.translate-x-1,.translate-x-5{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-5{--tw-translate-x:1.25rem}.translate-y-3{--tw-translate-y:0.75rem}.rotate-90,.translate-y-3{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.animate-spin{animation:spin 1s linear infinite}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.cursor-wait{cursor:wait}.resize-y{resize:vertical}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-12{gap:3rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-sm{gap:var(--space-sm)}.gap-xl{gap:var(--space-xl)}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.75rem*var(--tw-space-x-reverse));margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem*var(--tw-space-x-reverse));margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem*var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem*var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem*var(--tw-space-y-reverse))}.space-y-8>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(2rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2rem*var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px*var(--tw-divide-y-reverse))}.divide-border-translucent>:not([hidden])~:not([hidden]){border-color:var(--color-border-translucent)}.self-start{align-self:flex-start}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:var(--radius-full)}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.border{border-width:1px}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-amber-500\/40{border-color:rgba(245,158,11,.4)}.border-amber-500\/50{border-color:rgba(245,158,11,.5)}.border-amber-600\/70{border-color:rgba(217,119,6,.7)}.border-amber-700\/70{border-color:rgba(180,83,9,.7)}.border-blue-500{--tw-border-opacity:1;border-color:rgb(59 130 246/var(--tw-border-opacity,1))}.border-border{border-color:var(--color-border)}.border-border-translucent{border-color:var(--color-border-translucent)}.border-border-translucent-bright{border-color:var(--color-border-translucent-bright)}.border-border-translucent-medium{border-color:var(--color-border-translucent-medium)}.border-emerald-700\/70{border-color:rgba(4,120,87,.7)}.border-gray-700{--tw-border-opacity:1;border-color:rgb(55 65 81/var(--tw-border-opacity,1))}.border-gray-800{--tw-border-opacity:1;border-color:rgb(31 41 55/var(--tw-border-opacity,1))}.border-gray-800\/70{border-color:rgba(31,41,55,.7)}.border-green-500\/60{border-color:rgba(34,197,94,.6)}.border-info{border-color:var(--color-info)}.border-purple-600\/60{border-color:rgba(147,51,234,.6)}.border-red-700\/70{border-color:rgba(185,28,28,.7)}.border-red-800\/70{border-color:rgba(153,27,27,.7)}.border-slate-500\/50{border-color:rgba(100,116,139,.5)}.border-warning-strong{border-color:var(--color-warning-strong)}.border-opacity-20{--tw-border-opacity:0.2}.bg-amber-500\/10{background-color:rgba(245,158,11,.1)}.bg-amber-900\/30{background-color:rgba(120,53,15,.3)}.bg-amber-900\/40{background-color:rgba(120,53,15,.4)}.bg-black{background-color:var(--color-black)}.bg-blog-neutral-100{background-color:var(--color-blog-neutral-100)}.bg-blog-neutral-50{background-color:var(--color-blog-neutral-50)}.bg-blue-500\/20{background-color:rgba(59,130,246,.2)}.bg-border-subtle{background-color:var(--color-border-subtle)}.bg-emerald-900\/40{background-color:rgba(6,78,59,.4)}.bg-gray-800\/60{background-color:rgba(31,41,55,.6)}.bg-gray-800\/70{background-color:rgba(31,41,55,.7)}.bg-gray-800\/80{background-color:rgba(31,41,55,.8)}.bg-green-500\/10{background-color:rgba(34,197,94,.1)}.bg-info{background-color:var(--color-info)}.bg-panel{background-color:var(--color-panel)}.bg-purple-900\/40{background-color:rgba(88,28,135,.4)}.bg-red-900\/30{background-color:rgba(127,29,29,.3)}.bg-red-900\/40{background-color:rgba(127,29,29,.4)}.bg-slate-900{--tw-bg-opacity:1;background-color:rgb(15 23 42/var(--tw-bg-opacity,1))}.bg-surface{background-color:var(--color-surface)}.bg-surface-alt{background-color:var(--color-surface-alt)}.bg-transparent{background-color:transparent}.bg-warning-surface{background-color:var(--color-warning-surface)}.bg-white{background-color:var(--color-white)}.bg-opacity-50{--tw-bg-opacity:0.5}.stroke-border-translucent{stroke:var(--color-border-translucent)}.stroke-current{stroke:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.p-0{padding:0}.p-1{padding:.25rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-lg{padding:var(--space-lg)}.p-md{padding:var(--space-md)}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-2{padding-bottom:.5rem}.pb-8{padding-bottom:2rem}.pr-1{padding-right:.25rem}.pt-1{padding-top:.25rem}.pt-4{padding-top:1rem}.pt-6{padding-top:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-top{vertical-align:top}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-family-mono)}.font-sans{font-family:var(--font-family-sans)}.text-2xl{font-size:var(--font-size-2xl);line-height:var(--line-height-relaxed)}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[0\.65rem\]{font-size:.65rem}.text-\[0\.75rem\]{font-size:.75rem}.text-\[0\.7rem\]{font-size:.7rem}.text-\[11px\]{font-size:11px}.text-base{font-size:var(--font-size-base)}.text-base,.text-lg{line-height:var(--line-height-base)}.text-lg{font-size:var(--font-size-lg)}.text-sm{font-size:var(--font-size-sm);line-height:var(--line-height-snug)}.text-xl{font-size:var(--font-size-xl);line-height:var(--line-height-relaxed)}.text-xs{font-size:var(--font-size-xs);line-height:var(--line-height-tight)}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.normal-case{text-transform:none}.ordinal{--tw-ordinal:ordinal}.ordinal,.tabular-nums{font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.tabular-nums{--tw-numeric-spacing:tabular-nums}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.text-amber-100{--tw-text-opacity:1;color:rgb(254 243 199/var(--tw-text-opacity,1))}.text-amber-200\/90{color:hsla(48,97%,77%,.9)}.text-amber-300{--tw-text-opacity:1;color:rgb(252 211 77/var(--tw-text-opacity,1))}.text-blog-gray-500{color:var(--color-blog-gray-500)}.text-blog-gray-700{color:var(--color-blog-gray-700)}.text-blog-gray-800{color:var(--color-blog-gray-800)}.text-blog-gray-900{color:var(--color-blog-gray-900)}.text-blue-100{--tw-text-opacity:1;color:rgb(219 234 254/var(--tw-text-opacity,1))}.text-blue-200{--tw-text-opacity:1;color:rgb(191 219 254/var(--tw-text-opacity,1))}.text-blue-400{--tw-text-opacity:1;color:rgb(96 165 250/var(--tw-text-opacity,1))}.text-critical{color:var(--color-critical)}.text-critical-strong{color:var(--color-critical-strong)}.text-emerald-200\/90{color:rgba(167,243,208,.9)}.text-gray-100{--tw-text-opacity:1;color:rgb(243 244 246/var(--tw-text-opacity,1))}.text-gray-200{--tw-text-opacity:1;color:rgb(229 231 235/var(--tw-text-opacity,1))}.text-gray-300{--tw-text-opacity:1;color:rgb(209 213 219/var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-green-100{--tw-text-opacity:1;color:rgb(220 252 231/var(--tw-text-opacity,1))}.text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.text-info{color:var(--color-info)}.text-info-strong{color:var(--color-info-strong)}.text-muted{color:var(--color-muted)}.text-muted-strong{color:var(--color-muted-strong)}.text-purple-200\/90{color:rgba(233,213,255,.9)}.text-red-200\/80{color:hsla(0,96%,89%,.8)}.text-red-200\/90{color:hsla(0,96%,89%,.9)}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-text{color:var(--color-text)}.text-text-frosted{color:var(--color-text-frosted)}.text-text-strong{color:var(--color-text-strong)}.text-warning-strong{color:var(--color-warning-strong)}.text-white{color:var(--color-white)}.text-yellow-400{--tw-text-opacity:1;color:rgb(250 204 21/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.opacity-0{opacity:0}.opacity-40{opacity:.4}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow-lg{--tw-shadow:var(--shadow-lg);--tw-shadow-colored:var(--shadow-lg)}.shadow-lg,.shadow-sm{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:var(--shadow-sm);--tw-shadow-colored:var(--shadow-sm)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.\!filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-none{transition-property:none}.transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150,.transition-transform{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-fast{transition-duration:var(--motion-duration-fast)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (max-width:40rem){.bv-grid-video{gap:var(--space-md);grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){:root{--motion-duration-fast:0s;--motion-duration-base:0s;--motion-duration-slow:0s;--modal-motion-duration:0s}*,:after,:before{animation-delay:0s!important;animation-duration:0s!important;animation-iteration-count:1!important;animation-timing-function:linear!important;transition-delay:0s!important;transition-duration:0s!important;transition-timing-function:linear!important}#app,#playerModal .player-modal__content,#sidebar,#sidebarOverlay,.btn,.btn-ghost,.card,.card[data-motion=enter],.fade-in,.icon-button,.menu__item,.modal-nav,.popover__panel,.progress-bar-fill,.sidebar-collapse-toggle,.sidebar-collapse-toggle__icon,.sidebar-dropup-panel,.sidebar-dropup-trigger,.sidebar-dropup-trigger__chevron,.sidebar-loading-indicator,.sidebar-loading-wrapper,.sidebar-nav,.sidebar-nav-link,.status-banner .status-spinner,.status-spinner--inline,.video-modal__panel,.watch-history-card,.watch-history-card__action,.watch-history-card__creatorAvatar,.watch-history-card__creatorName,.watch-history-card__title{transition-property:none!important}.popover__panel{transform:none!important}.popover__panel[data-state=open]{opacity:1}.popover__panel[data-state=closed]{opacity:0}.card[data-motion=enter],.fade-in,[data-video-thumbnail][data-thumbnail-loaded=true]{opacity:1;animation:none!important}.status-banner .status-spinner,.status-spinner--inline{animation:none!important}}@media (min-width:768px){.md\:hidden .bv-modal{display:none!important}.md\:hidden.profile-pane{display:none}.md\:flex#playerModal{display:flex}}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:bg-gray-700\/70:hover{background-color:rgba(55,65,81,.7)}.hover\:bg-panel-hover:hover{background-color:var(--color-panel-hover)}.hover\:bg-red-900\/40:hover{background-color:rgba(127,29,29,.4)}.hover\:bg-transparent:hover{background-color:transparent}.hover\:text-blue-300:hover{--tw-text-opacity:1;color:rgb(147 197 253/var(--tw-text-opacity,1))}.hover\:text-current:hover{color:currentColor}.hover\:text-info-strong:hover{color:var(--color-info-strong)}.hover\:text-text:hover{color:var(--color-text)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-90:hover{opacity:.9}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity:1;--tw-ring-color:rgb(59 130 246/var(--tw-ring-opacity,1))}.focus\:ring-green-500\/80:focus{--tw-ring-color:rgba(34,197,94,.8)}.focus\:ring-info:focus{--tw-ring-color:var(--color-info)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-offset-gray-900:focus{--tw-ring-offset-color:#111827}.focus-visible\:bg-primary:focus-visible{background-color:var(--color-primary)}.focus-visible\:outline:focus-visible{outline-style:solid}.focus-visible\:outline-2:focus-visible{outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-info:focus-visible{outline-color:var(--color-info)}@media (min-width:640px){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:w-1\/3{width:33.333333%}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-start{align-items:flex-start}.sm\:items-end{align-items:flex-end}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}.sm\:justify-between{justify-content:space-between}.sm\:self-end{align-self:flex-end}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:py-0{padding-top:0;padding-bottom:0}}@media (min-width:768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-64{height:16rem}.md\:w-\[var\(--blog-layout-fluid-width\)\]{width:var(--blog-layout-fluid-width)}.md\:max-w-\[var\(--blog-layout-max-width\)\]{max-width:var(--blog-layout-max-width)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-end{align-items:flex-end}.md\:items-center{align-items:center}.md\:justify-end{justify-content:flex-end}.md\:gap-md{gap:var(--space-md)}.md\:px-0{padding-left:0;padding-right:0}}@media (min-width:1024px){.lg\:max-w-4xl{max-width:56rem}.lg\:max-w-5xl{max-width:64rem}.lg\:max-w-6xl{max-width:72rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\2c 1\.85fr\)_minmax\(260px\2c 1fr\)\]{grid-template-columns:minmax(0,1.85fr) minmax(260px,1fr)}.lg\:grid-cols-\[minmax\(240px\2c 280px\)_1fr\]{grid-template-columns:minmax(240px,280px) 1fr}.lg\:flex-row{flex-direction:row}.lg\:flex-col{flex-direction:column}.lg\:items-start{align-items:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:text-right{text-align:right}}@media (prefers-color-scheme:dark){.dark\:text-blog-gray-200{color:var(--color-blog-gray-200)}.dark\:text-blog-gray-300{color:var(--color-blog-gray-300)}} \ No newline at end of file diff --git a/css/tailwind.source.css b/css/tailwind.source.css index bab6676b..d35a19dc 100644 --- a/css/tailwind.source.css +++ b/css/tailwind.source.css @@ -1155,566 +1155,29 @@ pointer-events: none; } - /* Angular UI Grid theming */ - .ui-grid { - @apply relative w-full rounded-xl border border-border-translucent bg-surface text-sm text-text shadow-sm; - box-sizing: content-box; - transform: translateZ(0); - border-width: var(--grid-border-width); + .torrent-toast-motion { + transition-property: opacity, transform; + will-change: opacity, transform; } - .ui-grid-render-container { - position: relative; + .torrent-toast { + @apply pointer-events-auto w-full max-w-md rounded-lg px-4 py-3 text-sm font-medium tracking-tight shadow-lg ring-1 ring-inset; } - .ui-grid-render-container:focus, - .ui-grid-viewport:focus { - outline: none; + .torrent-toast--info { + @apply border border-border-translucent bg-surface text-text; } - .ui-grid-vertical-bar { - position: absolute; - right: 0; - width: 0; + .torrent-toast--success { + @apply border border-info border-opacity-60 bg-info text-white; } - .ui-grid-header-cell:not(:last-child) .ui-grid-vertical-bar, - .ui-grid-cell:not(:last-child) .ui-grid-vertical-bar { - width: var(--grid-border-width); - background-color: var(--color-border-translucent-medium); + .torrent-toast--error { + @apply border border-critical border-opacity-60 bg-critical text-white; } - .ui-grid-contents-wrapper { - position: relative; - height: 100%; - width: 100%; - } - - .ui-grid-top-panel-background, - .ui-grid-footer-panel-background { - background-color: var(--color-surface-alt); - } - - .ui-grid-header { - border-bottom: var(--grid-border-width) solid var(--color-border-translucent-medium); - box-sizing: border-box; - } - - .ui-grid-top-panel { - position: relative; - overflow: hidden; - font-weight: 600; - background-color: var(--color-surface-alt); - color: var(--color-muted-strong); - } - - .ui-grid-header-viewport, - .ui-grid-footer-viewport { - overflow: hidden; - } - - .ui-grid-header-canvas, - .ui-grid-footer-canvas { - display: table; - width: 100%; - } - - .ui-grid-header-cell-wrapper, - .ui-grid-footer-cell-wrapper { - position: relative; - display: table; - box-sizing: border-box; - height: 100%; - width: 100%; - } - - .ui-grid-header-cell-row, - .ui-grid-footer-cell-row { - display: table-row; - } - - .ui-grid-header-cell, - .ui-grid-footer-cell { - position: relative; - display: table-cell; - box-sizing: border-box; - border-right: var(--grid-border-width) solid var(--color-border-translucent-medium); - background-color: inherit; - font-size: var(--grid-header-font-size); - letter-spacing: var(--grid-header-letter-spacing); - text-transform: uppercase; - padding-block: var(--grid-cell-padding-block); - } - - .ui-grid-header-cell { - padding-inline: calc(var(--grid-cell-padding-inline) + var(--grid-sort-indicator-size)); - } - - .ui-grid-footer-cell { - padding-inline: var(--grid-cell-padding-inline); - } - - .ui-grid-header-cell:last-child, - .ui-grid-footer-cell:last-child { - border-right: 0; - } - - .ui-grid-header-cell .sortable { - cursor: pointer; - } - - .ui-grid-header-cell .ui-grid-sort-priority-number { - margin-left: calc(var(--space-xs) * -1); - } - - .ui-grid-sortarrow { - position: absolute; - inset-block: 0; - inset-inline-end: var(--grid-sort-indicator-offset); - width: var(--grid-sort-indicator-size); - display: flex; - align-items: center; - justify-content: center; - pointer-events: none; - } - - .ui-grid-sortarrow::before { - content: ""; - border-style: solid; - border-width: 0 var(--grid-sort-indicator-stroke) var(--grid-sort-indicator-stroke) - var(--grid-sort-indicator-stroke); - border-color: transparent transparent var(--color-muted-strong) transparent; - transition: transform var(--motion-duration-base) var(--motion-ease-out); - transform-origin: center; - } - - .ui-grid-sortarrow.down::before { - transform: rotate(180deg); - } - - .ui-grid-viewport { - min-height: var(--grid-viewport-min-height); - position: relative; - overflow-y: auto; - -webkit-overflow-scrolling: touch; - } - - .ui-grid-canvas { - position: relative; - padding-top: var(--grid-canvas-padding-top); - } - - .ui-grid-row { - border-bottom: var(--grid-border-width) solid var(--color-border-translucent); - } - - .ui-grid-row:nth-child(odd) .ui-grid-cell { - background-color: var(--color-surface); - } - - .ui-grid-row:nth-child(even) .ui-grid-cell { - background-color: var(--color-surface-alt); - } - - .ui-grid-row:last-child .ui-grid-cell { - border-bottom: var(--grid-border-width) solid var(--color-border-translucent-medium); - } - - .ui-grid-row:hover .ui-grid-cell { - background-color: var(--color-panel-hover); - } - - .ui-grid-row-selected > [ui-grid-row] > .ui-grid-cell { - background-color: var(--color-info-glass); - color: var(--color-text); - } - - .ui-grid-cell { - float: left; - overflow: hidden; - box-sizing: border-box; - border-right: var(--grid-border-width) solid var(--color-border-translucent-medium); - } - - .ui-grid-cell:last-child { - border-right: 0; - } - - .ui-grid-cell-contents { - box-sizing: border-box; - padding: var(--grid-cell-padding-block) var(--grid-cell-padding-inline); - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; - height: 100%; - } - - .ui-grid-cell-contents-hidden { - display: none; - visibility: hidden; - width: 0; - height: 0; - } - - .ui-grid-cell-focus { - outline: none; - background-color: var(--color-info-glass); - } - - .ui-grid-focuser { - position: absolute; - inset: 0; - z-index: -1; - width: 100%; - height: 100%; - } - - .ui-grid-focuser:focus { - outline: none; - box-shadow: 0 0 0 var(--grid-border-width) var(--color-info-glass); - } - - .ui-grid-offscreen { - position: absolute; - width: var(--grid-border-width); - height: var(--grid-border-width); - margin: calc(var(--grid-border-width) * -1); - border: 0; - clip: rect(0 0 0 0); - white-space: nowrap; - overflow: hidden; - } - - .ui-grid-no-row-overlay { - position: absolute; - inset: 0; - margin: var(--grid-overlay-margin); - padding: var(--grid-overlay-padding-block) var(--grid-overlay-padding-inline); - display: grid; - place-items: center; - background-color: var(--color-surface-alt); - border-radius: var(--grid-overlay-radius); - border: var(--grid-border-width) solid var(--color-border-translucent-medium); - font-size: var(--grid-overlay-font-size); - text-align: center; - } - - .ui-grid-no-row-overlay > * { - opacity: var(--grid-overlay-text-opacity); - } - - .ui-grid-menu-button { - z-index: 2; - position: absolute; - inset-inline-end: 0; - inset-block-start: 0; - background-color: var(--color-surface-alt); - border: var(--grid-border-width) solid var(--color-border-translucent-medium); - cursor: pointer; - height: calc(var(--space-xl) + var(--space-xs)); - font-weight: normal; - } - - .ui-grid-menu { - z-index: 2; - position: absolute; - padding: var(--space-xs) var(--space-sm) var(--space-md); - box-sizing: border-box; - background-color: var(--color-surface-alt); - border: var(--grid-border-width) solid var(--color-border-translucent-medium); - border-radius: var(--radius-md); - box-shadow: var(--shadow-lg); - } - - .ui-grid-column-resizer { - position: absolute; - inset-block: 0; - width: var(--grid-resizer-width); - cursor: col-resize; - } - - .ui-grid-column-resizer.left { - inset-inline-start: 0; - } - - .ui-grid-column-resizer.right { - inset-inline-end: 0; - } - - .ui-grid.column-resizing { - cursor: col-resize; - user-select: none; - } - - .ui-grid.column-resizing .ui-grid-resize-overlay { - position: absolute; - inset-block: 0; - width: var(--grid-resize-overlay-width); - background-color: var(--color-border-translucent-bright); - } - - .ui-grid-row-saving .ui-grid-cell { - color: var(--color-muted-strong); - } - - .ui-grid-row-dirty .ui-grid-cell { - color: var(--color-warning-strong); - } - - .ui-grid-row-error .ui-grid-cell { - color: var(--color-critical-strong); - } - - .ui-grid-disable-selection { - user-select: none; - cursor: default; - } - - .ui-grid-animate-spin { - display: inline-block; - animation: ui-grid-spin var(--motion-duration-slow) linear infinite; - } - - @keyframes ui-grid-spin { - to { - transform: rotate(360deg); - } - } - - /* ng-notify overrides */ - .ngn { - pointer-events: none; - position: fixed; - inset-inline: 0; - display: none; - z-index: var(--z-notify); - padding: var(--notify-padding-block) var(--notify-padding-inline); - text-align: center; - font-size: var(--notify-font-size); - font-weight: 600; - color: var(--color-text); - text-shadow: none; - user-select: none; - cursor: default; - } - - .ngn.ngn-visible, - .ngn.ngn-enter-active, - .ngn.ngn-leave-active { - pointer-events: auto; - } - - .ngn-component { - position: absolute; - } - - .ngn-top { - inset-block-start: 0; - } - - .ngn-bottom { - inset-block-end: 0; - } - - .ngn-dismiss { - pointer-events: auto; - display: none; - margin-left: auto; - margin-right: var(--space-md); - border-radius: var(--notify-dismiss-radius); - border: 0; - background-color: var(--notify-dismiss-background); - color: var(--notify-dismiss-color); - font-size: var(--notify-dismiss-font-size); - font-weight: 700; - line-height: 1; - width: var(--notify-dismiss-size); - height: var(--notify-dismiss-size); - align-items: center; - justify-content: center; - transition: background-color var(--motion-duration-base) var(--motion-ease-out); - } - - .ngn-sticky .ngn-dismiss { - display: inline-flex; - } - - .ngn-dismiss:hover { - background-color: var(--notify-dismiss-background-hover); - } - - .ngn-dismiss:active { - background-color: color-mix( - in srgb, - var(--notify-dismiss-background-hover) 80%, - var(--color-panel) 20% - ); - } - - .ngn-info { - background-color: var(--color-info-strong); - } - - .ngn-error { - background-color: var(--color-critical-strong); - } - - .ngn-success { - background-color: var(--color-info); - } - - .ngn-warn { - background-color: var(--color-warning-strong); - color: var(--color-text-strong); - } - - .ngn-grimace { - background-color: var(--color-secondary); - } - - .ngn-prime { - color: var(--color-text); - } - - .ngn-prime.ngn-info { - background-color: color-mix( - in srgb, - var(--color-info-strong) 85%, - var(--color-surface-alt) 15% - ); - } - - .ngn-prime.ngn-error { - background-color: color-mix( - in srgb, - var(--color-critical-strong) 85%, - var(--color-surface-alt) 15% - ); - } - - .ngn-prime.ngn-success { - background-color: color-mix( - in srgb, - var(--color-info) 85%, - var(--color-surface-alt) 15% - ); - } - - .ngn-prime.ngn-warn { - background-color: color-mix( - in srgb, - var(--color-warning-strong) 85%, - var(--color-surface-alt) 15% - ); - } - - .ngn-prime.ngn-grimace { - background-color: color-mix( - in srgb, - var(--color-secondary) 85%, - var(--color-surface-alt) 15% - ); - } - - .ngn-pastel { - color: var(--color-text-strong); - } - - .ngn-pastel.ngn-info { - background-color: color-mix( - in srgb, - var(--color-info) 45%, - var(--color-surface) 55% - ); - } - - .ngn-pastel.ngn-error { - background-color: color-mix( - in srgb, - var(--color-critical-strong) 45%, - var(--color-surface) 55% - ); - } - - .ngn-pastel.ngn-success { - background-color: color-mix( - in srgb, - var(--color-info) 45%, - var(--color-surface) 55% - ); - } - - .ngn-pastel.ngn-warn { - background-color: color-mix( - in srgb, - var(--color-warning-strong) 45%, - var(--color-surface) 55% - ); - } - - .ngn-pastel.ngn-grimace { - background-color: color-mix( - in srgb, - var(--color-secondary) 45%, - var(--color-surface) 55% - ); - } - - .ngn-pitchy { - color: var(--color-text); - } - - .ngn-pitchy.ngn-info { - background-color: color-mix( - in srgb, - var(--color-info-pressed) 75%, - var(--color-surface-alt) 25% - ); - } - - .ngn-pitchy.ngn-error { - background-color: color-mix( - in srgb, - var(--color-critical-strong) 75%, - var(--color-surface-alt) 25% - ); - } - - .ngn-pitchy.ngn-success { - background-color: color-mix( - in srgb, - var(--color-info) 75%, - var(--color-surface-alt) 25% - ); - } - - .ngn-pitchy.ngn-warn { - background-color: color-mix( - in srgb, - var(--color-warning-strong) 75%, - var(--color-surface-alt) 25% - ); - } - - .ngn-pitchy.ngn-grimace { - background-color: color-mix( - in srgb, - var(--color-secondary) 75%, - var(--color-surface-alt) 25% - ); - } - - @media (max-width: 30rem) { - .ngn { - font-size: var(--font-size-sm); - padding: var(--space-sm) var(--space-lg); - } - - .ngn-dismiss { - width: var(--notify-dismiss-size-compact); - height: var(--notify-dismiss-size-compact); - font-size: var(--font-size-xs); - } + .torrent-toast--warn { + @apply border border-warning-strong border-opacity-70 bg-warning-strong text-warning-strong; } .profile-switcher { diff --git a/package-lock.json b/package-lock.json index f236fff6..cfbdb820 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,10 +12,8 @@ "angular": "^1.8.3", "angular-route": "^1.8.3", "angular-sanitize": "^1.8.3", - "angular-ui-grid": "^4.12.7", "moment": "^2.30.1", "ng-file-upload": "^12.2.13", - "ng-notify": "^0.7.1", "webtorrent": "^1.9.7" }, "devDependencies": { @@ -1051,15 +1049,6 @@ "deprecated": "For the actively supported Angular, see https://www.npmjs.com/package/@angular/core. AngularJS support has officially ended. For extended AngularJS support options, see https://goo.gle/angularjs-path-forward.", "license": "MIT" }, - "node_modules/angular-ui-grid": { - "version": "4.12.7", - "resolved": "https://registry.npmjs.org/angular-ui-grid/-/angular-ui-grid-4.12.7.tgz", - "integrity": "sha512-l00dhM2/48xfnPcIaQZgxVoK4oAVA2erxHjjYke8Xli0Q06VYf/LJ41SQfNp3tGk7NCk2mBdSFD2GXfHakXHlA==", - "license": "MIT", - "dependencies": { - "angular": ">=1.4.0" - } - }, "node_modules/ansi-regex": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", @@ -3805,12 +3794,6 @@ "integrity": "sha512-YFjxwmVcNssYc8hq8eCbtYSliPnrObozSZRC9yg4GoDtI0xGKUeHgEcOh+nsMF/9cTzMB/lQZAYdf29oyQgF0g==", "license": "MIT" }, - "node_modules/ng-notify": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/ng-notify/-/ng-notify-0.7.1.tgz", - "integrity": "sha512-uju3NfrOW+Hg4u39yeiBG/kPRGVPX9f9z3dEEoKoBO7GqS0glSIeW78LLy9AEr7CAu8f/RHJGJzrZKMUwDmsew==", - "license": "MIT" - }, "node_modules/node-gyp-build": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.4.tgz", diff --git a/package.json b/package.json index c3dfe26e..6ebc8924 100644 --- a/package.json +++ b/package.json @@ -39,10 +39,8 @@ "angular": "^1.8.3", "angular-route": "^1.8.3", "angular-sanitize": "^1.8.3", - "angular-ui-grid": "^4.12.7", "moment": "^2.30.1", "ng-file-upload": "^12.2.13", - "ng-notify": "^0.7.1", "webtorrent": "^1.9.7" } } diff --git a/tests/torrent/style-helpers.test.mjs b/tests/torrent/style-helpers.test.mjs index 1097d804..9c7faf30 100644 --- a/tests/torrent/style-helpers.test.mjs +++ b/tests/torrent/style-helpers.test.mjs @@ -70,6 +70,7 @@ describe("torrent/ui/styleHelpers", () => { beaconDynamicFallbackClasses.clipboard, "torrent-clipboard-textarea", ); + assert.equal(beaconDynamicFallbackClasses.toast, "torrent-toast-motion"); }); it("applies dynamic styles and fallback classes", () => { diff --git a/tests/torrent/toast-service.test.mjs b/tests/torrent/toast-service.test.mjs new file mode 100644 index 00000000..55778c3f --- /dev/null +++ b/tests/torrent/toast-service.test.mjs @@ -0,0 +1,51 @@ +import { strict as assert } from "node:assert"; +import { afterEach, beforeEach, describe, it } from "node:test"; +import { JSDOM } from "jsdom"; + +import { createToastManager } from "../../torrent/ui/toastService.js"; + +let dom; + +describe("torrent/ui/toastService", () => { + beforeEach(() => { + dom = new JSDOM("", { + pretendToBeVisual: true, + }); + }); + + afterEach(() => { + if (dom) { + dom.window.close(); + dom = null; + } + }); + + it("renders a toast with Tailwind token classes and removes it on dismiss", async () => { + const documentRef = dom.window.document; + const toastManager = createToastManager(documentRef); + const handle = toastManager.success("Magnet copied", { sticky: true }); + + const container = documentRef.getElementById("beacon-toast-container"); + assert.ok(container, "toast container should be created"); + assert.equal(container.classList.contains("flex"), true); + + const wrapper = container.firstElementChild; + assert.ok(wrapper, "toast wrapper should exist"); + assert.equal(wrapper.classList.contains("torrent-toast-motion"), true); + + const toast = wrapper.querySelector("div[role='status']"); + assert.ok(toast, "toast element should be present"); + assert.equal(toast.textContent.includes("Magnet copied"), true); + assert.equal(toast.classList.contains("torrent-toast"), true); + assert.equal(toast.classList.contains("torrent-toast--success"), true); + + const closeButton = toast.querySelector("button[aria-label='Dismiss notification']"); + assert.ok(closeButton, "close button should be rendered"); + + handle.dismiss(); + + await new Promise((resolve) => setTimeout(resolve, 250)); + + assert.equal(container.childElementCount, 0); + }); +}); diff --git a/torrent/app.js b/torrent/app.js index a3e72ef3..5d305bb2 100644 --- a/torrent/app.js +++ b/torrent/app.js @@ -1,5 +1,7 @@ /* global WebTorrent, angular, moment */ import { applyBeaconDynamicStyles } from "./ui/styleHelpers.js"; +import { registerBeaconToast } from "./ui/toastService.js"; +import { registerTorrentTable } from "./ui/torrentTable.js"; const VERSION = "1.1"; @@ -22,14 +24,10 @@ function dbg(msg) { const client = new WebTorrent({ tracker: trackerOpts }); // Angular app definition. -const app = angular.module("BTorrent", [ - "ngRoute", - "ui.grid", - "ui.grid.resizeColumns", - "ui.grid.selection", - "ngFileUpload", - "ngNotify", -]); +const app = angular.module("BTorrent", ["ngRoute", "ngFileUpload"]); + +registerBeaconToast(app); +registerTorrentTable(app); // Configure Angular routes. app.config([ @@ -81,12 +79,12 @@ app.controller("BTorrentCtrl", [ "$rootScope", "$http", "$log", - "ngNotify", - function ($scope, $rootScope, $http, $log, ngNotify) { + "beaconToast", + function ($scope, $rootScope, $http, $log, beaconToast) { dbg("Starting app.js version " + VERSION); if (!WebTorrent.WEBRTC_SUPPORT) { - ngNotify.set("Please use a browser with WebRTC support.", "error"); + beaconToast.error("Please use a browser with WebRTC support.", { sticky: true }); } $rootScope.client = client; @@ -96,7 +94,7 @@ app.controller("BTorrentCtrl", [ // Global error handler. client.on("error", (err) => { dbg("Torrent client error: " + err); - ngNotify.set(err.message || err, "error"); + beaconToast.error(err.message || err); $rootScope.processing = false; }); @@ -108,7 +106,7 @@ app.controller("BTorrentCtrl", [ $rootScope.processing = false; if (!isSeed) { - ngNotify.set(`Received ${torrent.name} metadata`); + beaconToast.info(`Received ${torrent.name} metadata`); } if (!$rootScope.selectedTorrent) { $rootScope.selectedTorrent = torrent; @@ -216,11 +214,11 @@ app.controller("BTorrentCtrl", [ navigator.clipboard .writeText(magnetURI) .then(() => - ngNotify.set("Magnet URI copied to clipboard!", "success") + beaconToast.success("Magnet URI copied to clipboard!") ) .catch((err) => { console.error("Clipboard error:", err); - ngNotify.set("Failed to copy magnet URI", "error"); + beaconToast.error("Failed to copy magnet URI"); }); } else { try { @@ -242,10 +240,10 @@ app.controller("BTorrentCtrl", [ textarea.select(); document.execCommand("copy"); document.body.removeChild(textarea); - ngNotify.set("Magnet URI copied (fallback)!", "success"); + beaconToast.success("Magnet URI copied (fallback)!"); } catch (err) { console.error("Clipboard fallback error:", err); - ngNotify.set("Failed to copy magnet URI", "error"); + beaconToast.error("Failed to copy magnet URI"); } } }; @@ -268,13 +266,13 @@ app.controller("BTorrentCtrl", [ }, ]); -// FullCtrl: sets up the ui-grid and magnet input for /full route. +// FullCtrl: handles the magnet input and torrent table for /full route. app.controller("FullCtrl", [ "$scope", "$rootScope", "$location", - "ngNotify", - function ($scope, $rootScope, $location, ngNotify) { + "$interval", + function ($scope, $rootScope, $location, $interval) { // Handle magnet input $scope.addMagnet = function () { $rootScope.addMagnet($scope.torrentInput); @@ -286,64 +284,41 @@ app.controller("FullCtrl", [ $rootScope.addMagnet($location.hash()); } - // Define columns for ui-grid. - $scope.columns = [ - { field: "name", displayName: "Name", minWidth: 200 }, - { - field: "progress", - displayName: "Progress", - cellFilter: "progress", - width: 100, - }, - { - field: "downloadSpeed", - displayName: "↓ Speed", - cellFilter: "pbytes:1", - width: 100, - }, - { - field: "uploadSpeed", - displayName: "↑ Speed", - cellFilter: "pbytes:1", - width: 100, - }, - { field: "numPeers", displayName: "Peers", width: 80 }, - { - field: "ratio", - displayName: "Ratio", - cellFilter: "number:2", - width: 80, - }, - ]; + const syncTorrents = () => { + const torrents = ($rootScope.client && $rootScope.client.torrents) || []; + $scope.torrentRows = torrents; - // Create gridOptions and update each second. - $scope.gridOptions = { - columnDefs: $scope.columns, - enableColumnResizing: true, - enableColumnMenus: false, - enableRowSelection: true, - enableRowHeaderSelection: false, - multiSelect: false, - data: [], - }; + if ($rootScope.selectedTorrent) { + const stillPresent = torrents.some((torrent) => { + return ( + torrent === $rootScope.selectedTorrent || + (torrent?.magnetURI && + torrent.magnetURI === $rootScope.selectedTorrent.magnetURI) || + (torrent?.infoHash && + torrent.infoHash === $rootScope.selectedTorrent.infoHash) + ); + }); - setInterval(() => { - $scope.gridOptions.data = - ($rootScope.client && $rootScope.client.torrents) || []; - $scope.$applyAsync(); - }, 1000); - - // On row selection, set the selectedTorrent - $scope.gridOptions.onRegisterApi = function (gridApi) { - $scope.gridApi = gridApi; - gridApi.selection.on.rowSelectionChanged($scope, function (row) { - if (row.isSelected) { - $rootScope.selectedTorrent = row.entity; - } else { - $rootScope.selectedTorrent = null; + if (!stillPresent) { + $rootScope.selectedTorrent = torrents[0] || null; } - }); + } else if (torrents.length) { + $rootScope.selectedTorrent = torrents[0]; + } }; + + $scope.selectTorrent = function (torrent) { + $rootScope.selectedTorrent = torrent; + }; + + syncTorrents(); + const poller = $interval(syncTorrents, 1000); + + $scope.$on("$destroy", function () { + if (poller) { + $interval.cancel(poller); + } + }); }, ]); diff --git a/torrent/dist/beacon.vendor.js b/torrent/dist/beacon.vendor.js index 25a277a0..f90ff244 100644 --- a/torrent/dist/beacon.vendor.js +++ b/torrent/dist/beacon.vendor.js @@ -1,30 +1,84 @@ -(()=>{var gd=Object.create;var jc=Object.defineProperty;var md=Object.getOwnPropertyDescriptor;var vd=Object.getOwnPropertyNames;var bd=Object.getPrototypeOf,yd=Object.prototype.hasOwnProperty;var Bi=(we=>typeof require!="undefined"?require:typeof Proxy!="undefined"?new Proxy(we,{get:(Q,k)=>(typeof require!="undefined"?require:Q)[k]}):we)(function(we){if(typeof require!="undefined")return require.apply(this,arguments);throw Error('Dynamic require of "'+we+'" is not supported')});var wi=(we,Q)=>()=>(Q||we((Q={exports:{}}).exports,Q),Q.exports);var wd=(we,Q,k,O)=>{if(Q&&typeof Q=="object"||typeof Q=="function")for(let I of vd(Q))!yd.call(we,I)&&I!==k&&jc(we,I,{get:()=>Q[I],enumerable:!(O=md(Q,I))||O.enumerable});return we};var ta=(we,Q,k)=>(k=we!=null?gd(bd(we)):{},wd(Q||!we||!we.__esModule?jc(k,"default",{value:we,enumerable:!0}):k,we));var zc=wi(()=>{(function(we){"use strict";var Q={objectMaxDepth:5,urlErrorParamsEnabled:!0};function k(n){if(Y(n))L(n.objectMaxDepth)&&(Q.objectMaxDepth=O(n.objectMaxDepth)?n.objectMaxDepth:NaN),L(n.urlErrorParamsEnabled)&&le(n.urlErrorParamsEnabled)&&(Q.urlErrorParamsEnabled=n.urlErrorParamsEnabled);else return Q}function O(n){return fe(n)&&n>0}function I(n,y){y=y||Error;var P="https://errors.angularjs.org/1.8.3/",H=P.replace(".","\\.")+"[\\s\\S]*",X=new RegExp(H,"g");return function(){var ue=arguments[0],ie=arguments[1],re="["+(n?n+":":"")+ue+"] ",ne=de(arguments,2).map(function(Ee){return Ye(Ee,Q.objectMaxDepth)}),me,be;if(re+=ie.replace(/\{\d+\}/g,function(Ee){var Ae=+Ee.slice(1,-1);return Ae=0&&y-1 in n||typeof n.item=="function")}function e(n,y,P){var H,X;if(n)if(K(n))for(H in n)H!=="prototype"&&H!=="length"&&H!=="name"&&n.hasOwnProperty(H)&&y.call(P,n[H],H,n);else if(se(n)||h(n)){var ue=typeof n!="object";for(H=0,X=n.length;H=0&&n.splice(P,1),P}function Ze(n,y,P){var H=[],X=[];if(P=O(P)?P:NaN,y){if(ke(y)||De(y))throw A("cpta","Can't copy! TypedArray destination cannot be mutated.");if(n===y)throw A("cpi","Can't copy! Source and destination are identical.");return se(y)?y.length=0:e(y,function(ne,me){me!=="$$hashKey"&&delete y[me]}),H.push(n),X.push(y),ue(n,y,P)}return ie(n,P);function ue(ne,me,be){if(be--,be<0)return"...";var Ee=me.$$hashKey,Ae;if(se(ne))for(var Fe=0,Oe=ne.length;Fe2?de(arguments,2):[];return K(y)&&!(y instanceof RegExp)?P.length?function(){return arguments.length?y.apply(n,te(P,arguments,0)):y.apply(n,P)}:function(){return arguments.length?y.apply(n,arguments):y.call(n)}:y}function Pe(n,y){var P=y;return typeof n=="string"&&n.charAt(0)==="$"&&n.charAt(1)==="$"?P=void 0:E(y)?P="$WINDOW":y&&we.document===y?P="$DOCUMENT":j(y)&&(P="$SCOPE"),P}function ze(n,y){if(!R(n))return fe(y)||(y=y?2:null),JSON.stringify(n,Pe,y)}function Ue(n){return ae(n)?JSON.parse(n):n}var yt=/:/g;function mt(n,y){n=n.replace(yt,"");var P=Date.parse("Jan 01, 1970 00:00:00 "+n)/6e4;return l(P)?y:P}function et(n,y){return n=new Date(n.getTime()),n.setMinutes(n.getMinutes()+y),n}function Dt(n,y,P){P=P?-1:1;var H=n.getTimezoneOffset(),X=mt(y,H);return et(n,P*(X-H))}function wt(n){n=g(n).clone().empty();var y=g("
").append(n).html();try{return n[0].nodeType===nn?x(y):y.match(/^(<[^>]+>)/)[1].replace(/^<([\w-]+)/,function(P,H){return"<"+x(H)})}catch{return x(y)}}function Lt(n){try{return decodeURIComponent(n)}catch{}}function vn(n){var y={};return e((n||"").split("&"),function(P){var H,X,ue;P&&(X=P=P.replace(/\+/g,"%20"),H=P.indexOf("="),H!==-1&&(X=P.substring(0,H),ue=P.substring(H+1)),X=Lt(X),L(X)&&(ue=L(ue)?Lt(ue):!0,_.call(y,X)?se(y[X])?y[X].push(ue):y[X]=[y[X],ue]:y[X]=ue))}),y}function St(n){var y=[];return e(n,function(P,H){se(P)?e(P,function(X){y.push(Yt(H,!0)+(X===!0?"":"="+Yt(X,!0)))}):y.push(Yt(H,!0)+(P===!0?"":"="+Yt(P,!0)))}),y.length?y.join("&"):""}function Wt(n){return Yt(n,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function Yt(n,y){return encodeURIComponent(n).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,y?"%20":"+")}var Kt=["ng-","data-ng-","ng:","x-ng-"];function ln(n,y){var P,H,X=Kt.length;for(H=0;H protocol indicates an extension, document.location.href does not match.");return}X.strictDi=ln(P,"strict-di")!==null,y(P,H?[H]:[],X)}}function Xn(n,y,P){Y(P)||(P={});var H={strictDi:!1};P=t(H,P);var X=function(){if(n=g(n),n.injector()){var re=n[0]===we.document?"document":wt(n);throw A("btstrpd","App already bootstrapped with this element '{0}'",re.replace(//,">"))}y=y||[],y.unshift(["$provide",function(me){me.value("$rootElement",n)}]),P.debugInfoEnabled&&y.push(["$compileProvider",function(me){me.debugInfoEnabled(!0)}]),y.unshift("ng");var ne=fi(y,P.strictDi);return ne.invoke(["$rootScope","$rootElement","$compile","$injector",function(be,Ee,Ae,Fe){be.$apply(function(){Ee.data("$injector",Fe),Ae(Ee)(be)})}]),ne},ue=/^NG_ENABLE_DEBUG_INFO!/,ie=/^NG_DEFER_BOOTSTRAP!/;if(we&&ue.test(we.name)&&(P.debugInfoEnabled=!0,we.name=we.name.replace(ue,"")),we&&!ie.test(we.name))return X();we.name=we.name.replace(ie,""),p.resumeBootstrap=function(re){return e(re,function(ne){y.push(ne)}),X()},K(p.resumeDeferredBootstrap)&&p.resumeDeferredBootstrap()}function qt(){we.name="NG_ENABLE_DEBUG_INFO!"+we.name,we.location.reload()}function tn(n){var y=p.element(n).injector();if(!y)throw A("test","no injector found for element argument to getTestability");return y.get("$$testability")}var Wn=/[A-Z]/g;function on(n,y){return y=y||"_",n.replace(Wn,function(P,H){return(H?y:"")+P.toLowerCase()})}var fn=!1;function ar(){var n;if(!fn){var y=G();F=R(y)?we.jQuery:y?we[y]:void 0,F&&F.fn.on?(g=F,t(F.fn,{scope:ui.scope,isolateScope:ui.isolateScope,controller:ui.controller,injector:ui.injector,inheritedData:ui.inheritedData})):g=zn,n=g.cleanData,g.cleanData=function(P){for(var H,X=0,ue;(ue=P[X])!=null;X++)H=(g._data(ue)||{}).events,H&&H.$destroy&&g(ue).triggerHandler("$destroy");n(P)},p.element=g,fn=!0}}function Xt(){zn.legacyXHTMLReplacement=!0}function an(n,y,P){if(!n)throw A("areq","Argument '{0}' is {1}",y||"?",P||"required");return n}function Ir(n,y,P){return P&&se(n)&&(n=n[n.length-1]),an(K(n),y,"not a function, got "+(n&&typeof n=="object"?n.constructor.name||"Object":typeof n)),n}function en(n,y){if(n==="hasOwnProperty")throw A("badname","hasOwnProperty is not a valid {0} name",y)}function cn(n,y,P){if(!y)return n;for(var H=y.split("."),X,ue=n,ie=H.length,re=0;re=0)return"...";P.push(X)}return X})}function Ye(n,y){return typeof n=="function"?n.toString().replace(/ \{[\s\S]*$/,""):R(n)?"undefined":typeof n!="string"?He(n,y):n}var Se={full:"1.8.3",major:1,minor:8,dot:3,codeName:"ultimate-farewell"};function Je(n){t(n,{errorHandlingConfig:k,bootstrap:Xn,copy:Ze,extend:t,merge:r,equals:Mt,element:g,forEach:e,injector:fi,noop:b,bind:_e,toJson:ze,fromJson:Ue,identity:C,isUndefined:R,isDefined:L,isString:ae,isFunction:K,isObject:Y,isNumber:fe,isElement:nt,isArray:se,version:Se,isDate:xe,callbacks:{$$counter:0},getTestability:tn,reloadWithDebugInfo:qt,UNSAFE_restoreLegacyJqLiteXHTMLReplacement:Xt,$$minErr:I,$$csp:ce,$$encodeUriSegment:Wt,$$encodeUriQuery:Yt,$$lowercase:x,$$stringify:hn,$$uppercase:d}),w=Ke(we),w("ng",["ngLocale"],["$provide",function(P){P.provider({$$sanitizeUri:ul}),P.provider("$compile",pa).directive({a:Ol,input:hc,textarea:hc,form:Bl,script:Yu,select:Xu,option:Zu,ngBind:pu,ngBindHtml:mu,ngBindTemplate:gu,ngClass:bu,ngClassEven:wu,ngClassOdd:yu,ngCloak:_u,ngController:Su,ngForm:qo,ngHide:Uu,ngIf:xu,ngInclude:Cu,ngInit:ku,ngNonBindable:Lu,ngPluralize:Ou,ngRef:Nu,ngRepeat:Bu,ngShow:Hu,ngStyle:ju,ngSwitch:zu,ngSwitchWhen:Vu,ngSwitchDefault:Wu,ngOptions:Fu,ngTransclude:qu,ngModel:Iu,ngList:Ru,ngChange:vu,pattern:Cc,ngPattern:Cc,required:xc,ngRequired:xc,minlength:kc,ngMinlength:kc,maxlength:Ac,ngMaxlength:Ac,ngValue:hu,ngModelOptions:Du}).directive({ngInclude:Au,input:du}).directive(uo).directive(pc),P.provider({$anchorScroll:ws,$animate:xs,$animateCss:As,$$animateJs:Es,$$animateQueue:Ro,$$AnimateRunner:Cs,$$animateAsyncRun:To,$browser:Ts,$cacheFactory:ha,$controller:Ps,$document:Io,$$isDocumentHidden:Po,$exceptionHandler:Do,$filter:Va,$$forceReflow:Ds,$interpolate:Sa,$interval:js,$$intervalFactory:zs,$http:Bs,$httpParamSerializer:Fs,$httpParamSerializerJQLike:Os,$httpBackend:_a,$xhrFactory:wa,$jsonpCallbacks:Vs,$location:Aa,$log:ka,$parse:ol,$rootScope:cl,$q:al,$$q:sl,$sce:pl,$sceDelegate:hl,$sniffer:Ba,$$taskTrackerFactory:gl,$templateCache:Nn,$templateRequest:vl,$$testability:bl,$timeout:Qr,$window:za,$$rAF:ll,$$jqLite:hs,$$Map:Gr,$$cookieReader:El})}]).info({angularVersion:"1.8.3"})}zn.expando="ng339";var lr=zn.cache={},mr=1;zn._data=function(n){return this.cache[n[this.expando]]||{}};function Pr(){return++mr}var $r=/-([a-z])/g,Fr=/^-ms-/,vr={mouseleave:"mouseout",mouseenter:"mouseover"},br=I("jqLite");function Zn(n){return dr(n.replace(Fr,"ms-"))}function yr(n,y){return y.toUpperCase()}function dr(n){return n.replace($r,yr)}var fr=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Qn=/<|&#?\w+;/,Ut=/<([\w:-]+)/,Te=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,It={thead:["table"],col:["colgroup","table"],tr:["tbody","table"],td:["tr","tbody","table"]};It.tbody=It.tfoot=It.colgroup=It.caption=It.thead,It.th=It.td;var un={option:[1,'"],_default:[0,"",""]};for(var bn in It){var Fn=It[bn],Pn=Fn.slice().reverse();un[bn]=[Pn.length,"<"+Pn.join("><")+">",""]}un.optgroup=un.option;function rr(n){return!Qn.test(n)}function cr(n){var y=n.nodeType;return y===sr||!y||y===pn}function Cn(n){for(var y in lr[n.ng339])return!0;return!1}function Er(n,y){var P,H,X,ue,ie=y.createDocumentFragment(),re=[],ne;if(rr(n))re.push(y.createTextNode(n));else{if(P=ie.appendChild(y.createElement("div")),H=(Ut.exec(n)||["",""])[1].toLowerCase(),ue=zn.legacyXHTMLReplacement?n.replace(Te,"<$1>"):n,M<10)for(X=un[H]||un._default,P.innerHTML=X[1]+ue+X[2],ne=X[0];ne--;)P=P.firstChild;else{for(X=It[H]||[],ne=X.length;--ne>-1;)P.appendChild(we.document.createElement(X[ne])),P=P.firstChild;P.innerHTML=ue}re=te(re,P.childNodes),P=ie.firstChild,P.textContent=""}return ie.textContent="",ie.innerHTML="",e(re,function(me){ie.appendChild(me)}),ie}function Jr(n,y){y=y||we.document;var P;return(P=fr.exec(n))?[y.createElement(P[1])]:(P=Er(n,y))?P.childNodes:[]}function _i(n,y){var P=n.parentNode;P&&P.replaceChild(y,n),y.appendChild(n)}var _o=we.Node.prototype.contains||function(n){return!!(this.compareDocumentPosition(n)&16)};function zn(n){if(n instanceof zn)return n;var y;if(ae(n)&&(n=$e(n),y=!0),!(this instanceof zn)){if(y&&n.charAt(0)!=="<")throw br("nosel","Looking up elements via selectors is not supported by jqLite! See: http://docs.angularjs.org/api/angular.element");return new zn(n)}y?Si(this,Jr(n)):K(n)?aa(n):Si(this,n)}function So(n){return n.cloneNode(!0)}function Hi(n,y){!y&&cr(n)&&g.cleanData([n]),n.querySelectorAll&&g.cleanData(n.querySelectorAll("*"))}function ra(n){var y;for(y in n)return!1;return!0}function ia(n){var y=n.ng339,P=y&&lr[y],H=P&&P.events,X=P&&P.data;(!X||ra(X))&&(!H||ra(H))&&(delete lr[y],n.ng339=void 0)}function oa(n,y,P,H){if(L(H))throw br("offargs","jqLite#off() does not support the `selector` argument");var X=Ui(n),ue=X&&X.events,ie=X&&X.handle;if(ie){if(y){var re=function(ne){var me=ue[ne];L(P)&&Ge(me||[],P),L(P)&&me&&me.length>0||(n.removeEventListener(ne,ie),delete ue[ne])};e(y.split(" "),function(ne){re(ne),vr[ne]&&re(vr[ne])})}else for(y in ue)y!=="$destroy"&&n.removeEventListener(y,ie),delete ue[y];ia(n)}}function Eo(n,y){var P=n.ng339,H=P&&lr[P];H&&(y?delete H.data[y]:H.data={},ia(n))}function Ui(n,y){var P=n.ng339,H=P&&lr[P];return y&&!H&&(n.ng339=P=Pr(),H=lr[P]={events:{},data:{},handle:void 0}),H}function xo(n,y,P){if(cr(n)){var H,X=L(P),ue=!X&&y&&!Y(y),ie=!y,re=Ui(n,!ue),ne=re&&re.data;if(X)ne[dr(y)]=P;else{if(ie)return ne;if(ue)return ne&&ne[dr(y)];for(H in y)ne[dr(H)]=y[H]}}}function ji(n,y){return n.getAttribute?(" "+(n.getAttribute("class")||"")+" ").replace(/[\n\t]/g," ").indexOf(" "+y+" ")>-1:!1}function zi(n,y){if(y&&n.setAttribute){var P=(" "+(n.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),H=P;e(y.split(" "),function(X){X=$e(X),H=H.replace(" "+X+" "," ")}),H!==P&&n.setAttribute("class",$e(H))}}function Vi(n,y){if(y&&n.setAttribute){var P=(" "+(n.getAttribute("class")||"")+" ").replace(/[\n\t]/g," "),H=P;e(y.split(" "),function(X){X=$e(X),H.indexOf(" "+X+" ")===-1&&(H+=X+" ")}),H!==P&&n.setAttribute("class",$e(H))}}function Si(n,y){if(y)if(y.nodeType)n[n.length++]=y;else{var P=y.length;if(typeof P=="number"&&y.window!==y){if(P)for(var H=0;H=0?g(this[n]):g(this[this.length+n])},length:0,push:pe,sort:[].sort,splice:[].splice},qi={};e("multiple,selected,checked,disabled,readOnly,required,open".split(","),function(n){qi[x(n)]=n});var Ao={};e("input,select,option,textarea,button,form,details".split(","),function(n){Ao[n]=!0});var On={ngMinlength:"minlength",ngMaxlength:"maxlength",ngMin:"min",ngMax:"max",ngPattern:"pattern",ngStep:"step"};function di(n,y){var P=qi[y.toLowerCase()];return P&&Ao[ct(n)]&&P}function xi(n){return On[n]}e({data:xo,removeData:Eo,hasData:Cn,cleanData:function(y){for(var P=0,H=y.length;P1&&(ue=ye(ue));for(var me=0;me=0?P.split(" "):[P],me=ne.length,be=function(Ee,Ae,Fe){var Oe=ie[Ee];Oe||(Oe=ie[Ee]=[],Oe.specialHandlerWrapper=Ae,Ee!=="$destroy"&&!Fe&&y.addEventListener(Ee,re)),Oe.push(H)};me--;)P=ne[me],vr[P]?(be(vr[P],fs),be(P,void 0,!0)):be(P)}},off:oa,one:function(n,y,P){n=g(n),n.on(y,function H(){n.off(y,P),n.off(y,H)}),n.on(y,P)},replaceWith:function(n,y){var P,H=n.parentNode;Hi(n),e(new zn(y),function(X){P?H.insertBefore(X,P.nextSibling):H.replaceChild(X,n),P=X})},children:function(n){var y=[];return e(n.childNodes,function(P){P.nodeType===sr&&y.push(P)}),y},contents:function(n){return n.contentDocument||n.childNodes||[]},append:function(n,y){var P=n.nodeType;if(!(P!==sr&&P!==gn)){y=new zn(y);for(var H=0,X=y.length;H/,ko=/^[^(]*\(\s*([^)]*)\)/m,gs=/,/,ms=/^\s*(_?)(\S+?)\1\s*$/,vs=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/mg,Br=I("$injector");function Ji(n){return Function.prototype.toString.call(n)}function la(n){var y=Ji(n).replace(vs,""),P=y.match(ps)||y.match(ko);return P}function bs(n){var y=la(n);return y?"function("+(y[1]||"").replace(/[\s\r\n]+/," ")+")":"fn"}function ys(n,y,P){var H,X,ue;if(typeof n=="function"){if(!(H=n.$inject)){if(H=[],n.length){if(y)throw(!ae(P)||!P)&&(P=n.name||bs(n)),Br("strictdi","{0} is not using explicit annotation and cannot be invoked in strict mode",P);X=la(n),e(X[1].split(gs),function(ie){ie.replace(ms,function(re,ne,me){H.push(me)})})}n.$inject=H}}else se(n)?(ue=n.length-1,Ir(n[ue],"fn"),H=n.slice(0,ue)):Ir(n,"fn",!0);return H}function fi(n,y){y=y===!0;var P={},H="Provider",X=[],ue=new Ki,ie={$provide:{provider:Ae(Fe),factory:Ae(at),service:Ae(vt),value:Ae(st),constant:Ae(ot),decorator:it}},re=ie.$injector=je(ie,function(Xe,Le){throw p.isString(Le)&&X.push(Le),Br("unpr","Unknown provider: {0}",X.join(" <- "))}),ne={},me=je(ne,function(Xe,Le){var Ie=re.get(Xe+H,Le);return be.invoke(Ie.$get,Ie,void 0,Xe)}),be=me;ie["$injector"+H]={$get:$(me)},be.modules=re.modules=Ht();var Ee=ut(n);return be=me.get("$injector"),be.strictDi=y,e(Ee,function(Xe){Xe&&be.invoke(Xe)}),be.loadNewModules=function(Xe){e(ut(Xe),function(Le){Le&&be.invoke(Le)})},be;function Ae(Xe){return function(Le,Ie){if(Y(Le))e(Le,i(Xe));else return Xe(Le,Ie)}}function Fe(Xe,Le){if(en(Xe,"service"),(K(Le)||se(Le))&&(Le=re.instantiate(Le)),!Le.$get)throw Br("pget","Provider '{0}' must define $get factory method.",Xe);return ie[Xe+H]=Le}function Oe(Xe,Le){return function(){var Ne=be.invoke(Le,this);if(R(Ne))throw Br("undef","Provider '{0}' must return a value from $get factory method.",Xe);return Ne}}function at(Xe,Le,Ie){return Fe(Xe,{$get:Ie!==!1?Oe(Xe,Le):Le})}function vt(Xe,Le){return at(Xe,["$injector",function(Ie){return Ie.instantiate(Le)}])}function st(Xe,Le){return at(Xe,$(Le),!1)}function ot(Xe,Le){en(Xe,"constant"),ie[Xe]=Le,ne[Xe]=Le}function it(Xe,Le){var Ie=re.get(Xe+H),Ne=Ie.$get;Ie.$get=function(){var Be=be.invoke(Ne,Ie);return be.invoke(Le,null,{$delegate:Be})}}function ut(Xe){an(R(Xe)||se(Xe),"modulesToLoad","not an array");var Le=[],Ie;return e(Xe,function(Ne){if(ue.get(Ne))return;ue.set(Ne,!0);function Be(tt){var dt,rt;for(dt=0,rt=tt.length;dt1)&&n(function(){for(var X=0;Xre&&this.remove(be.key),Oe}},get:function(Fe){if(re0&&rt.addClass(this.$$element,We)},$removeClass:function(We){We&&We.length>0&&rt.removeClass(this.$$element,We)},$updateClass:function(We,Qe){var lt=ki(We,Qe);lt&<.length&&rt.addClass(this.$$element,lt);var pt=ki(Qe,We);pt&&pt.length&&rt.removeClass(this.$$element,pt)},$set:function(We,Qe,lt,pt){var Ct=this.$$element[0],kt=di(Ct,We),$t=xi(We),sn=We,Ft;kt?(this.$$element.prop(We,Qe),pt=kt):$t&&(this[$t]=Qe,sn=$t),this[We]=Qe,pt?this.$attr[We]=pt:(pt=this.$attr[We],pt||(this.$attr[We]=pt=on(We,"-"))),Ft=ct(this.$$element),Ft==="img"&&We==="srcset"&&(this[We]=Qe=dn(Qe,"$set('srcset', value)")),lt!==!1&&(Qe===null||R(Qe)?this.$$element.removeAttr(pt):gt.test(pt)?kt&&Qe===!1?this.$$element.removeAttr(pt):this.$$element.attr(pt,Qe):kn(this.$$element[0],pt,Qe));var Ot=this.$$observers;Ot&&e(Ot[sn],function(Nt){try{Nt(Qe)}catch(zt){Le(zt)}})},$observe:function(We,Qe){var lt=this,pt=lt.$$observers||(lt.$$observers=Ht()),Ct=pt[We]||(pt[We]=[]);return Ct.push(Qe),tt.$evalAsync(function(){!Ct.$$inter&<.hasOwnProperty(We)&&!R(lt[We])&&Qe(lt[We])}),function(){Ge(Ct,Qe)}}};function kn(We,Qe,lt){xt.innerHTML="";var pt=xt.firstChild.attributes,Ct=pt[0];pt.removeNamedItem(Ct.name),Ct.value=lt,We.attributes.setNamedItem(Ct)}function Dn(We,Qe){try{We.addClass(Qe)}catch{}}var qn=Xe.startSymbol(),Un=Xe.endSymbol(),pr=qn==="{{"&&Un==="}}"?C:function(Qe){return Qe.replace(/\{\{/g,qn).replace(/}}/g,Un)},nr=/^ng(Attr|Prop|On)([A-Z].*)$/,ur=/^(.+)Start$/;return Vn.$$addBindingInfo=at?function(Qe,lt){var pt=Qe.data("$binding")||[];se(lt)?pt=pt.concat(lt):pt.push(lt),Qe.data("$binding",pt)}:b,Vn.$$addBindingClass=at?function(Qe){Dn(Qe,"ng-binding")}:b,Vn.$$addScopeInfo=at?function(Qe,lt,pt,Ct){var kt=pt?Ct?"$isolateScopeNoTemplate":"$isolateScope":"$scope";Qe.data(kt,lt)}:b,Vn.$$addScopeClass=at?function(Qe,lt){Dn(Qe,lt?"ng-isolate-scope":"ng-scope")}:b,Vn.$$createComment=function(We,Qe){var lt="";return at&&(lt=" "+(We||"")+": ",Qe&&(lt+=Qe+" ")),we.document.createComment(lt)},Vn;function Vn(We,Qe,lt,pt,Ct){We instanceof g||(We=g(We));var kt=Fi(We,Qe,We,lt,pt,Ct);Vn.$$addScopeClass(We);var $t=null;return function(Ft,Ot,Nt){if(!We)throw Gn("multilink","This element has already been linked.");an(Ft,"scope"),Ct&&Ct.needsNewScope&&(Ft=Ft.$parent.$new()),Nt=Nt||{};var zt=Nt.parentBoundTranscludeFn,Tt=Nt.transcludeControllers,Qt=Nt.futureParentElement;zt&&zt.$$boundTransclude&&(zt=zt.$$boundTransclude),$t||($t=$i(Qt));var yn;if($t!=="html"?yn=g(Kl($t,g("
").append(We).html())):Ot?yn=ui.clone.call(We):yn=We,Tt)for(var Ln in Tt)yn.data("$"+Ln+"Controller",Tt[Ln].instance);return Vn.$$addScopeInfo(yn,Ft),Ot&&Ot(yn,Ft),kt&&kt(Ft,yn,yn,zt),Ot||(We=kt=null),yn}}function $i(We){var Qe=We&&We[0];return Qe&&ct(Qe)!=="foreignobject"&&m.call(Qe).match(/SVG/)?"svg":"html"}function Fi(We,Qe,lt,pt,Ct,kt){for(var $t=[],sn=se(We)||We instanceof g,Ft,Ot,Nt,zt,Tt,Qt,yn,Ln=0;Ln0);else pt.push(We);return g(pt)}function Tc(We,Qe,lt){return function(Ct,kt,$t,sn,Ft){return kt=Xo(kt[0],Qe,lt),We(Ct,kt,$t,sn,Ft)}}function Yl(We,Qe,lt,pt,Ct,kt){var $t;return We?Vn(Qe,lt,pt,Ct,kt):function(){return $t||($t=Vn(Qe,lt,pt,Ct,kt),Qe=lt=kt=null),$t.apply(this,arguments)}}function Ic(We,Qe,lt,pt,Ct,kt,$t,sn,Ft){Ft=Ft||{};for(var Ot=-Number.MAX_VALUE,Nt=Ft.newScopeDirective,zt=Ft.controllerDirectives,Tt=Ft.newIsolateScopeDirective,Qt=Ft.templateDirective,yn=Ft.nonTlbTranscludeDirective,Ln=!1,In=!1,wn=Ft.hasElementTranscludeDirective,_n=lt.$$element=g(Qe),Bt,Tn,Rn,Kn=kt,Jn=pt,Yn,Mn=!1,gr=!1,ir,xr=0,ei=We.length;xrBt.priority)break;if(ir=Bt.scope,ir&&(Bt.templateUrl||(Y(ir)?(go("new/isolated scope",Tt||Nt,Bt,_n),Tt=Bt):go("new/isolated scope",Tt,Bt,_n)),Nt=Nt||Bt),Tn=Bt.name,!Mn&&(Bt.replace&&(Bt.templateUrl||Bt.template)||Bt.transclude&&!Bt.$$tlb)){for(var vo,ud=xr+1;vo=We[ud++];)if(vo.transclude&&!vo.$$tlb||vo.replace&&(vo.templateUrl||vo.template)){gr=!0;break}Mn=!0}if(!Bt.templateUrl&&Bt.controller&&(zt=zt||Ht(),go("'"+Tn+"' controller",zt[Tn],Bt,_n),zt[Tn]=Bt),ir=Bt.transclude,ir)if(Ln=!0,Bt.$$tlb||(go("transclusion",yn,Bt,_n),yn=Bt),ir==="element")wn=!0,Ot=Bt.priority,Rn=_n,_n=lt.$$element=g(Vn.$$createComment(Tn,lt[Tn])),Qe=_n[0],as(Ct,de(Rn),Qe),Jn=Yl(gr,Rn,pt,Ot,Kn&&Kn.name,{nonTlbTranscludeDirective:yn});else{var ci=Ht();if(!Y(ir))Rn=g(So(Qe)).contents();else{Rn=we.document.createDocumentFragment();var Fc=Ht(),Xl=Ht();e(ir,function(jn,$n){var Kr=jn.charAt(0)==="?";jn=Kr?jn.substring(1):jn,Fc[jn]=$n,ci[$n]=null,Xl[$n]=Kr}),e(_n.contents(),function(jn){var $n=Fc[Or(ct(jn))];$n?(Xl[$n]=!0,ci[$n]=ci[$n]||we.document.createDocumentFragment(),ci[$n].appendChild(jn)):Rn.appendChild(jn)}),e(Xl,function(jn,$n){if(!jn)throw Gn("reqslot","Required transclusion slot `{0}` was not filled.",$n)});for(var Zl in ci)if(ci[Zl]){var dd=g(ci[Zl].childNodes);ci[Zl]=Yl(gr,dd,pt)}Rn=g(Rn.childNodes)}_n.empty(),Jn=Yl(gr,Rn,pt,void 0,void 0,{needsNewScope:Bt.$$isolateScope||Bt.$$newScope}),Jn.$$slots=ci}if(Bt.template)if(In=!0,go("template",Qt,Bt,_n),Qt=Bt,ir=K(Bt.template)?Bt.template(_n,lt):Bt.template,ir=pr(ir),Bt.replace){if(Kn=Bt,rr(ir)?Rn=[]:Rn=Ri(Kl(Bt.templateNamespace,$e(ir))),Qe=Rn[0],Rn.length!==1||Qe.nodeType!==sr)throw Gn("tplrt","Template for directive '{0}' must have exactly one root element. {1}",Tn,"");as(Ct,_n,Qe);var Oc={$attr:{}},Nc=bi(Qe,[],Oc),fd=We.splice(xr+1,We.length-(xr+1));(Tt||Nt)&&Pc(Nc,Tt,Nt),We=We.concat(Nc).concat(fd),Dc(lt,Oc),ei=We.length}else _n.html(ir);if(Bt.templateUrl)In=!0,go("template",Qt,Bt,_n),Qt=Bt,Bt.replace&&(Kn=Bt),Oi=td(We.splice(xr,We.length-xr),_n,lt,Ct,Ln&&Jn,$t,sn,{controllerDirectives:zt,newScopeDirective:Nt!==Bt&&Nt,newIsolateScopeDirective:Tt,templateDirective:Qt,nonTlbTranscludeDirective:yn}),ei=We.length;else if(Bt.compile)try{Yn=Bt.compile(_n,lt,Jn);var Ql=Bt.$$originalDirective||Bt;K(Yn)?Bc(null,_e(Ql,Yn),mo,Jl):Yn&&Bc(_e(Ql,Yn.pre),_e(Ql,Yn.post),mo,Jl)}catch(jn){Le(jn,wt(_n))}Bt.terminal&&(Oi.terminal=!0,Ot=Math.max(Ot,Bt.priority))}return Oi.scope=Nt&&Nt.scope===!0,Oi.transcludeOnThisElement=Ln,Oi.templateOnThisElement=In,Oi.transclude=Jn,Ft.hasElementTranscludeDirective=wn,Oi;function Bc(jn,$n,Kr,ec){jn&&(Kr&&(jn=Tc(jn,Kr,ec)),jn.require=Bt.require,jn.directiveName=Tn,(Tt===Bt||Bt.$$isolateScope)&&(jn=Lc(jn,{isolateScope:!0})),$t.push(jn)),$n&&(Kr&&($n=Tc($n,Kr,ec)),$n.require=Bt.require,$n.directiveName=Tn,(Tt===Bt||Bt.$$isolateScope)&&($n=Lc($n,{isolateScope:!0})),sn.push($n))}function Oi(jn,$n,Kr,ec,bo){var yi,Hc,Vr,ti,Qo,ni,yo,kr,Ni,tc;Qe===Kr?(Ni=lt,kr=lt.$$element):(kr=g(Kr),Ni=new Sn(kr,lt)),Qo=$n,Tt?ti=$n.$new(!0):Nt&&(Qo=$n.$parent),bo&&(yo=pd,yo.$$boundTransclude=bo,yo.isSlotFilled=function(Rr){return!!bo.$$slots[Rr]}),zt&&(ni=Qu(kr,Ni,yo,zt,ti,$n,Tt)),Tt&&(Vn.$$addScopeInfo(kr,ti,!0,!(Qt&&(Qt===Tt||Qt===Tt.$$originalDirective))),Vn.$$addScopeClass(kr,!0),ti.$$isolateBindings=Tt.$$isolateBindings,tc=$c($n,Ni,ti,ti.$$isolateBindings,Tt),tc.removeWatches&&ti.$on("$destroy",tc.removeWatches));for(var Uc in ni){var nc=zt[Uc],ea=ni[Uc],hd=nc.$$bindings.bindToController;ea.instance=ea(),kr.data("$"+nc.name+"Controller",ea.instance),ea.bindingInfo=$c(Qo,Ni,ea.instance,hd,nc)}for(e(zt,function(Rr,or){var Tr=Rr.require;Rr.bindToController&&!se(Tr)&&Y(Tr)&&t(ni[or].instance,Zo(or,Tr,kr,ni))}),e(ni,function(Rr){var or=Rr.instance;if(K(or.$onChanges))try{or.$onChanges(Rr.bindingInfo.initialChanges)}catch(Tr){Le(Tr)}if(K(or.$onInit))try{or.$onInit()}catch(Tr){Le(Tr)}K(or.$doCheck)&&(Qo.$watch(function(){or.$doCheck()}),or.$doCheck()),K(or.$onDestroy)&&Qo.$on("$destroy",function(){or.$onDestroy()})}),yi=0,Hc=$t.length;yi=0;yi--)Vr=sn[yi],Mc(Vr,Vr.isolateScope?ti:$n,kr,Ni,Vr.require&&Zo(Vr.directiveName,Vr.require,kr,ni),yo);e(ni,function(Rr){var or=Rr.instance;K(or.$postLink)&&or.$postLink()});function pd(Rr,or,Tr,cs){var rc;if(j(Rr)||(cs=Tr,Tr=or,or=Rr,Rr=void 0),wn&&(rc=ni),Tr||(Tr=wn?kr.parent():kr),cs){var ic=bo.$$slots[cs];if(ic)return ic(Rr,or,rc,Tr,ls);if(R(ic))throw Gn("noslot",'No parent directive that requires a transclusion with slot name "{0}". Element: {1}',cs,wt(kr))}else return bo(Rr,or,rc,Tr,ls)}}}function Zo(We,Qe,lt,pt){var Ct;if(ae(Qe)){var kt=Qe.match(re),$t=Qe.substring(kt[0].length),sn=kt[1]||kt[3],Ft=kt[2]==="?";if(sn==="^^"?lt=lt.parent():(Ct=pt&&pt[$t],Ct=Ct&&Ct.instance),!Ct){var Ot="$"+$t+"Controller";sn==="^^"&<[0]&<[0].nodeType===pn?Ct=null:Ct=sn?lt.inheritedData(Ot):lt.data(Ot)}if(!Ct&&!Ft)throw Gn("ctreq","Controller '{0}', required by directive '{1}', can't be found!",$t,We)}else if(se(Qe)){Ct=[];for(var Nt=0,zt=Qe.length;NtFt.priority)&&Ft.restrict.indexOf(lt)!==-1){if(kt&&(Ft=f(Ft,{$$start:kt,$$end:$t})),!Ft.$$bindings){var Tt=Ft.$$bindings=Ee(Ft,Ft.name);Y(Tt.isolateScope)&&(Ft.$$isolateBindings=Tt.isolateScope)}We.push(Ft),sn=Ft}}return sn}function ed(We){if(P.hasOwnProperty(We)){for(var Qe,lt=je.get(We+H),pt=0,Ct=lt.length;pt"+Qe+"",lt.childNodes[0].childNodes;default:return Qe}}function id(We,Qe){if(Qe==="srcdoc")return dt.HTML;if(Qe==="src"||Qe==="ngSrc")return["img","video","audio","source","track"].indexOf(We)===-1?dt.RESOURCE_URL:dt.MEDIA_URL;if(Qe==="xlinkHref")return We==="image"?dt.MEDIA_URL:We==="a"?dt.URL:dt.RESOURCE_URL;if(We==="form"&&Qe==="action"||We==="base"&&Qe==="href"||We==="link"&&Qe==="href")return dt.RESOURCE_URL;if(We==="a"&&(Qe==="href"||Qe==="ngHref"))return dt.URL}function od(We,Qe){var lt=Qe.toLowerCase();return ut[We+"|"+lt]||ut["*|"+lt]}function ad(We){return dn(dt.valueOf(We),"ng-prop-srcset")}function sd(We,Qe,lt,pt){if(ne.test(pt))throw Gn("nodomevents","Property bindings for HTML DOM event properties are disallowed");var Ct=ct(We),kt=od(Ct,pt),$t=C;pt==="srcset"&&(Ct==="img"||Ct==="source")?$t=ad:kt&&($t=dt.getTrusted.bind(dt,kt)),Qe.push({priority:100,compile:function(Ft,Ot){var Nt=Ne(Ot[lt]),zt=Ne(Ot[lt],function(Qt){return dt.valueOf(Qt)});return{pre:function(Qt,yn){function Ln(){var In=Nt(Qt);yn[0][pt]=$t(In)}Ln(),Qt.$watch(zt,Ln)}}}})}function ld(We,Qe,lt){We.push(gc(Ne,tt,Le,Qe,lt,!1))}function cd(We,Qe,lt,pt,Ct){var kt=ct(We),$t=id(kt,pt),sn=!Ct,Ft=ie[pt]||Ct,Ot=Xe(lt,sn,$t,Ft);if(Ot){if(pt==="multiple"&&kt==="select")throw Gn("selmulti","Binding to the 'multiple' attribute is not supported. Element: {0}",wt(We));if(ne.test(pt))throw Gn("nodomevents","Interpolations for HTML DOM event attributes are disallowed");Qe.push({priority:100,compile:function(){return{pre:function(zt,Tt,Qt){var yn=Qt.$$observers||(Qt.$$observers=Ht()),Ln=Qt[pt];Ln!==lt&&(Ot=Ln&&Xe(Ln,!0,$t,Ft),lt=Ln),Ot&&(Qt[pt]=Ot(zt),(yn[pt]||(yn[pt]=[])).$$inter=!0,(Qt.$$observers&&Qt.$$observers[pt].$$scope||zt).$watch(Ot,function(wn,_n){pt==="class"&&wn!==_n?Qt.$updateClass(wn,_n):Qt.$set(pt,wn)}))}}}})}}function as(We,Qe,lt){var pt=Qe[0],Ct=Qe.length,kt=pt.parentNode,$t,sn;if(We){for($t=0,sn=We.length;$t0?" ":"")+ie}return P}function Ri(n){n=g(n);var y=n.length;if(y<=1)return n;for(;y--;){var P=n[y];(P.nodeType===Cr||P.nodeType===nn&&P.nodeValue.trim()==="")&&J.call(n,y,1)}return n}var Qi=I("$controller"),ma=/^(\S+)(\s+as\s+([\w$]+))?$/;function va(n,y){if(y&&ae(y))return y;if(ae(n)){var P=ma.exec(n);if(P)return P[3]}}function Ps(){var n={};this.has=function(y){return n.hasOwnProperty(y)},this.register=function(y,P){en(y,"controller"),Y(y)?t(n,y):n[y]=P},this.$get=["$injector",function(y){return function(X,ue,ie,re){var ne,me,be,Ee;if(ie=ie===!0,re&&ae(re)&&(Ee=re),ae(X)){if(me=X.match(ma),!me)throw Qi("ctrlfmt","Badly formed controller string '{0}'. Must match `__name__ as __id__` or `__name__`.",X);if(be=me[1],Ee=Ee||me[3],X=n.hasOwnProperty(be)?n[be]:cn(ue.$scope,be,!0),!X)throw Qi("ctrlreg","The controller with the name '{0}' is not registered.",be);Ir(X,be,!0)}if(ie){var Ae=(se(X)?X[X.length-1]:X).prototype;return ne=Object.create(Ae||null),Ee&&P(ue,Ee,ne,be||X.name),t(function(){var Oe=y.invoke(X,ne,ue,be);return Oe!==ne&&(Y(Oe)||K(Oe))&&(ne=Oe,Ee&&P(ue,Ee,ne,be||X.name)),ne},{instance:ne,identifier:Ee})}return ne=y.instantiate(X,ue,be),Ee&&P(ue,Ee,ne,be||X.name),ne};function P(H,X,ue,ie){if(!(H&&Y(H.$scope)))throw I("$controller")("noscp","Cannot export controller '{0}' as '{1}'! No $scope object provided via `locals`.",ie,X);H.$scope[X]=ue}}]}function Io(){this.$get=["$window",function(n){return g(n.document)}]}function Po(){this.$get=["$document","$rootScope",function(n,y){var P=n[0],H=P&&P.hidden;n.on("visibilitychange",X),y.$on("$destroy",function(){n.off("visibilitychange",X)});function X(){H=P.hidden}return function(){return H}}]}function Do(){this.$get=["$log",function(n){return function(y,P){n.error.apply(n,arguments)}}]}var Ds=function(){this.$get=["$document",function(n){return function(y){return y?!y.nodeType&&y instanceof g&&(y=y[0]):y=n[0].body,y.offsetWidth+1}}]},ba="application/json",Lo={"Content-Type":ba+";charset=utf-8"},Ls=/^\[|^\{(?!\{)/,Ms={"[":/]$/,"{":/}$/},$s=/^\)]\}',?\n/,eo=I("$http");function Mo(n){return Y(n)?xe(n)?n.toISOString():ze(n):n}function Fs(){this.$get=function(){return function(y){if(!y)return"";var P=[];return o(y,function(H,X){H===null||R(H)||K(H)||(se(H)?e(H,function(ue){P.push(Yt(X)+"="+Yt(Mo(ue)))}):P.push(Yt(X)+"="+Yt(Mo(H))))}),P.join("&")}}}function Os(){this.$get=function(){return function(y){if(!y)return"";var P=[];return H(y,"",!0),P.join("&");function H(X,ue,ie){se(X)?e(X,function(re,ne){H(re,ue+"["+(Y(re)?ne:"")+"]")}):Y(X)&&!xe(X)?o(X,function(re,ne){H(re,ue+(ie?"":"[")+ne+(ie?"":"]"))}):(K(X)&&(X=X()),P.push(Yt(ue)+"="+(X==null?"":Yt(Mo(X)))))}}}}function to(n,y){if(ae(n)){var P=n.replace($s,"").trim();if(P){var H=y("Content-Type"),X=H&&H.indexOf(ba)===0;if(X||Ns(P))try{n=Ue(P)}catch(ue){if(!X)return n;throw eo("baddata",'Data must be a valid JSON object. Received: "{0}". Parse error: "{1}"',n,ue)}}}return n}function Ns(n){var y=n.match(Ls);return y&&Ms[y[0]].test(n)}function ya(n){var y=Ht(),P;function H(X,ue){X&&(y[X]=y[X]?y[X]+", "+ue:ue)}return ae(n)?e(n.split(` -`),function(X){P=X.indexOf(":"),H(x($e(X.substr(0,P))),$e(X.substr(P+1)))}):Y(n)&&e(n,function(X,ue){H(x(ue),$e(X))}),y}function Lr(n){var y;return function(P){if(y||(y=ya(n)),P){var H=y[x(P)];return H===void 0&&(H=null),H}return y}}function Zr(n,y,P,H){return K(H)?H(n,y,P):(e(H,function(X){n=X(n,y,P)}),n)}function no(n){return 200<=n&&n<300}function Bs(){var n=this.defaults={transformResponse:[to],transformRequest:[function(X){return Y(X)&&!Z(X)&&!q(X)&&!oe(X)?ze(X):X}],headers:{common:{Accept:"application/json, text/plain, */*"},post:ye(Lo),put:ye(Lo),patch:ye(Lo)},xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",paramSerializer:"$httpParamSerializer",jsonpCallbackParam:"callback"},y=!1;this.useApplyAsync=function(X){return L(X)?(y=!!X,this):y};var P=this.interceptors=[],H=this.xsrfTrustedOrigins=[];Object.defineProperty(this,"xsrfWhitelistedOrigins",{get:function(){return this.xsrfTrustedOrigins},set:function(X){this.xsrfTrustedOrigins=X}}),this.$get=["$browser","$httpBackend","$$cookieReader","$cacheFactory","$rootScope","$q","$injector","$sce",function(X,ue,ie,re,ne,me,be,Ee){var Ae=re("$http");n.paramSerializer=ae(n.paramSerializer)?be.get(n.paramSerializer):n.paramSerializer;var Fe=[];e(P,function(je){Fe.unshift(ae(je)?be.get(je):be.invoke(je))});var Oe=ja(H);function at(je){if(!Y(je))throw I("$http")("badreq","Http request configuration must be an object. Received: {0}",je);if(!ae(Ee.valueOf(je.url)))throw I("$http")("badreq","Http request configuration url must be a string or a $sce trusted object. Received: {0}",je.url);var Xe=t({method:"get",transformRequest:n.transformRequest,transformResponse:n.transformResponse,paramSerializer:n.paramSerializer,jsonpCallbackParam:n.jsonpCallbackParam},je);Xe.headers=rt(je),Xe.method=d(Xe.method),Xe.paramSerializer=ae(Xe.paramSerializer)?be.get(Xe.paramSerializer):Xe.paramSerializer,X.$$incOutstandingRequestCount("$http");var Le=[],Ie=[],Ne=me.resolve(Xe);return e(Fe,function(Rt){(Rt.request||Rt.requestError)&&Le.unshift(Rt.request,Rt.requestError),(Rt.response||Rt.responseError)&&Ie.push(Rt.response,Rt.responseError)}),Ne=Be(Ne,Le),Ne=Ne.then(gt),Ne=Be(Ne,Ie),Ne=Ne.finally(tt),Ne;function Be(Rt,_t){for(var Pt=0,Zt=_t.length;Pt=-1?dn:0,(no(dn)?Le.resolve:Le.reject)({data:Gt,status:dn,headers:Lr(Sn),config:je,statusText:kn,xhrStatus:Dn})}function Pt(Gt){_t(Gt.data,Gt.status,ye(Gt.headers()),Gt.statusText,Gt.xhrStatus)}function Zt(){var Gt=at.pendingRequests.indexOf(je);Gt!==-1&&at.pendingRequests.splice(Gt,1)}}function it(je,Xe){return Xe.length>0&&(je+=(je.indexOf("?")===-1?"?":"&")+Xe),je}function ut(je,Xe){var Le=je.split("?");if(Le.length>2)throw eo("badjsonp",'Illegal use more than one "?", in url, "{1}"',je);var Ie=vn(Le[1]);return e(Ie,function(Ne,Be){if(Ne==="JSON_CALLBACK")throw eo("badjsonp",'Illegal use of JSON_CALLBACK in url, "{0}"',je);if(Be===Xe)throw eo("badjsonp",'Illegal use of callback param, "{0}", in url, "{1}"',Xe,je)}),je+=(je.indexOf("?")===-1?"?":"&")+Xe+"=JSON_CALLBACK",je}}]}function wa(){this.$get=function(){return function(){return new we.XMLHttpRequest}}}function _a(){this.$get=["$browser","$jsonpCallbacks","$document","$xhrFactory",function(n,y,P,H){return Hs(n,H,n.defer,y,P[0])}]}function Hs(n,y,P,H,X){return function(ie,re,ne,me,be,Ee,Ae,Fe,Oe,at){if(re=re||n.url(),x(ie)==="jsonp")var vt=H.createCallback(re),st=ue(re,vt,function(Be,tt){var dt=Be===200&&H.getResponse(vt);Ne(me,Be,dt,"",tt,"complete"),H.removeCallback(vt)});else{var ot=y(ie,re),it=!1;ot.open(ie,re,!0),e(be,function(Be,tt){L(Be)&&ot.setRequestHeader(tt,Be)}),ot.onload=function(){var tt=ot.statusText||"",dt="response"in ot?ot.response:ot.responseText,rt=ot.status===1223?204:ot.status;rt===0&&(rt=dt?200:Et(re).protocol==="file"?404:0),Ne(me,rt,dt,ot.getAllResponseHeaders(),tt,"complete")};var ut=function(){Ne(me,-1,null,null,"","error")},je=function(){Ne(me,-1,null,null,"",it?"timeout":"abort")},Xe=function(){Ne(me,-1,null,null,"","timeout")};if(ot.onerror=ut,ot.ontimeout=Xe,ot.onabort=je,e(Oe,function(Be,tt){ot.addEventListener(tt,Be)}),e(at,function(Be,tt){ot.upload.addEventListener(tt,Be)}),Ae&&(ot.withCredentials=!0),Fe)try{ot.responseType=Fe}catch(Be){if(Fe!=="json")throw Be}ot.send(R(ne)?null:ne)}if(Ee>0)var Le=P(function(){Ie("timeout")},Ee);else ge(Ee)&&Ee.then(function(){Ie(L(Ee.$$timeoutId)?"timeout":"abort")});function Ie(Be){it=Be==="timeout",st&&st(),ot&&ot.abort()}function Ne(Be,tt,dt,rt,gt,xt){L(Le)&&P.cancel(Le),st=ot=null,Be(tt,dt,rt,gt,xt)}};function ue(ie,re,ne){ie=ie.replace("JSON_CALLBACK",re);var me=X.createElement("script"),be=null;return me.type="text/javascript",me.src=ie,me.async=!0,be=function(Ee){me.removeEventListener("load",be),me.removeEventListener("error",be),X.body.removeChild(me),me=null;var Ae=-1,Fe="unknown";Ee&&(Ee.type==="load"&&!H.wasCalled(re)&&(Ee={type:"error"}),Fe=Ee.type,Ae=Ee.type==="error"?404:200),ne&&ne(Ae,Fe)},me.addEventListener("load",be),me.addEventListener("error",be),X.body.appendChild(me),be}}var ri=p.$interpolateMinErr=I("$interpolate");ri.throwNoconcat=function(n){throw ri("noconcat",`Error while interpolating: {0} -Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required. See http://docs.angularjs.org/api/ng.$sce`,n)},ri.interr=function(n,y){return ri("interr",`Can't interpolate: {0} -{1}`,n,y.toString())};function Sa(){var n="{{",y="}}";this.startSymbol=function(P){return P?(n=P,this):n},this.endSymbol=function(P){return P?(y=P,this):y},this.$get=["$parse","$exceptionHandler","$sce",function(P,H,X){var ue=n.length,ie=y.length,re=new RegExp(n.replace(/./g,me),"g"),ne=new RegExp(y.replace(/./g,me),"g");function me(Fe){return"\\\\\\"+Fe}function be(Fe){return Fe.replace(re,n).replace(ne,y)}function Ee(Fe,Oe,at,vt){var st=Fe.$watch(function(it){return st(),vt(it)},Oe,at);return st}function Ae(Fe,Oe,at,vt){var st=at===X.URL||at===X.MEDIA_URL;if(!Fe.length||Fe.indexOf(n)===-1){if(Oe)return;var ot=be(Fe);st&&(ot=X.getTrusted(at,ot));var it=$(ot);return it.exp=Fe,it.expressions=[],it.$$watchDelegate=Ee,it}vt=!!vt;for(var ut,je,Xe=0,Le=[],Ie,Ne=Fe.length,Be,tt=[],dt=[],rt;Xe1&&ri.throwNoconcat(Fe),tt.join(""))};return t(function(Pt){var Zt=0,Gt=Le.length,dn=new Array(Gt);try{for(;Zt4,Fe=Ae?de(arguments,4):[],Oe=0,at=L(Ee)&&!Ee,vt=(at?P:y).defer(),st=vt.promise;be=L(be)?be:0;function ot(){Ae?ne.apply(null,Fe):ne(Oe)}function it(){at?n.defer(ot):H.$evalAsync(ot),vt.notify(Oe++),be>0&&Oe>=be&&(vt.resolve(Oe),ie(st.$$intervalId)),at||H.$apply()}return st.$$intervalId=ue(it,me,vt,at),st}}}]}var Vs=function(){this.$get=function(){var n=p.callbacks,y={};function P(H){var X=function(ue){X.data=ue,X.called=!0};return X.id=H,X}return{createCallback:function(H){var X="_"+(n.$$counter++).toString(36),ue="angular.callbacks."+X,ie=P(X);return y[ue]=n[X]=ie,ue},wasCalled:function(H){return y[H].called},getResponse:function(H){return y[H].data},removeCallback:function(H){var X=y[H];delete n[X.id],delete y[H]}}}},Ws=/^([^?#]*)(\?([^#]*))?(#(.*))?$/,Gs={http:80,https:443,ftp:21},Ti=I("$location");function qs(n){for(var y=n.split("/"),P=y.length;P--;)y[P]=Wt(y[P].replace(/%2F/g,"/"));return y.join("/")}function Ys(n,y){for(var P=n.split("/"),H=P.length;H--;)P[H]=decodeURIComponent(P[H]),y&&(P[H]=P[H].replace(/\//g,"%2F"));return P.join("/")}function Ks(n,y,P){var H=St(y),X=P?"#"+Wt(P):"",ue=qs(n);return ue+(H?"?"+H:"")+X}function Ea(n,y){var P=Et(n);y.$$protocol=P.protocol,y.$$host=P.hostname,y.$$port=a(P.port)||Gs[P.protocol]||null}var Js=/^\s*[\\/]{2,}/;function xa(n,y,P){if(Js.test(n))throw Ti("badpath",'Invalid url "{0}".',n);var H=n.charAt(0)!=="/";H&&(n="/"+n);var X=Et(n),ue=H&&X.pathname.charAt(0)==="/"?X.pathname.substring(1):X.pathname;y.$$path=Ys(ue,P),y.$$search=vn(X.search),y.$$hash=decodeURIComponent(X.hash),y.$$path&&y.$$path.charAt(0)!=="/"&&(y.$$path="/"+y.$$path)}function $o(n,y){return n.slice(0,y.length)===y}function Mr(n,y){if($o(y,n))return y.substr(n.length)}function ii(n){var y=n.indexOf("#");return y===-1?n:n.substr(0,y)}function Xs(n){return n.substr(0,ii(n).lastIndexOf("/")+1)}function Zs(n){return n.substring(0,n.indexOf("/",n.indexOf("//")+2))}function Fo(n,y,P){this.$$html5=!0,P=P||"",Ea(n,this),this.$$parse=function(H){var X=Mr(y,H);if(!ae(X))throw Ti("ipthprfx",'Invalid url "{0}", missing path prefix "{1}".',H,y);xa(X,this,!0),this.$$path||(this.$$path="/"),this.$$compose()},this.$$normalizeUrl=function(H){return y+H.substr(1)},this.$$parseLinkUrl=function(H,X){if(X&&X[0]==="#")return this.hash(X.slice(1)),!0;var ue,ie,re;return L(ue=Mr(n,H))?(ie=ue,P&&L(ue=Mr(P,ue))?re=y+(Mr("/",ue)||ue):re=n+ie):L(ue=Mr(y,H))?re=y+ue:y===H+"/"&&(re=y),re&&this.$$parse(re),!!re}}function Oo(n,y,P){Ea(n,this),this.$$parse=function(H){var X=Mr(n,H)||Mr(y,H),ue;!R(X)&&X.charAt(0)==="#"?(ue=Mr(P,X),R(ue)&&(ue=X)):this.$$html5?ue=X:(ue="",R(X)&&(n=H,this.replace())),xa(ue,this,!1),this.$$path=ie(this.$$path,ue,n),this.$$compose();function ie(re,ne,me){var be=/^\/[A-Z]:(\/.*)/,Ee;return $o(ne,me)&&(ne=ne.replace(me,"")),be.exec(ne)?re:(Ee=be.exec(re),Ee?Ee[1]:re)}},this.$$normalizeUrl=function(H){return n+(H?P+H:"")},this.$$parseLinkUrl=function(H,X){return ii(n)===ii(H)?(this.$$parse(H),!0):!1}}function Ca(n,y,P){this.$$html5=!0,Oo.apply(this,arguments),this.$$parseLinkUrl=function(H,X){if(X&&X[0]==="#")return this.hash(X.slice(1)),!0;var ue,ie;return n===ii(H)?ue=H:(ie=Mr(y,H))?ue=n+P+ie:y===H+"/"&&(ue=y),ue&&this.$$parse(ue),!!ue},this.$$normalizeUrl=function(H){return n+P+H}}var Qs={$$absUrl:"",$$html5:!1,$$replace:!1,$$compose:function(){this.$$url=Ks(this.$$path,this.$$search,this.$$hash),this.$$absUrl=this.$$normalizeUrl(this.$$url),this.$$urlUpdatedByLocation=!0},absUrl:ro("$$absUrl"),url:function(n){if(R(n))return this.$$url;var y=Ws.exec(n);return(y[1]||n==="")&&this.path(decodeURIComponent(y[1])),(y[2]||y[1]||n==="")&&this.search(y[3]||""),this.hash(y[5]||""),this},protocol:ro("$$protocol"),host:ro("$$host"),port:ro("$$port"),path:No("$$path",function(n){return n=n!==null?n.toString():"",n.charAt(0)==="/"?n:"/"+n}),search:function(n,y){switch(arguments.length){case 0:return this.$$search;case 1:if(ae(n)||fe(n))n=n.toString(),this.$$search=vn(n);else if(Y(n))n=Ze(n,{}),e(n,function(P,H){P==null&&delete n[H]}),this.$$search=n;else throw Ti("isrcharg","The first argument of the `$location#search()` call must be a string or an object.");break;default:R(y)||y===null?delete this.$$search[n]:this.$$search[n]=y}return this.$$compose(),this},hash:No("$$hash",function(n){return n!==null?n.toString():""}),replace:function(){return this.$$replace=!0,this}};e([Ca,Oo,Fo],function(n){n.prototype=Object.create(Qs),n.prototype.state=function(y){if(!arguments.length)return this.$$state;if(n!==Fo||!this.$$html5)throw Ti("nostate","History API state support is available only in HTML5 mode and only in browsers supporting HTML5 History API");return this.$$state=R(y)?null:y,this.$$urlUpdatedByLocation=!0,this}});function ro(n){return function(){return this[n]}}function No(n,y){return function(P){return R(P)?this[n]:(this[n]=y(P),this.$$compose(),this)}}function Aa(){var n="!",y={enabled:!1,requireBase:!0,rewriteLinks:!0};this.hashPrefix=function(P){return L(P)?(n=P,this):n},this.html5Mode=function(P){return le(P)?(y.enabled=P,this):Y(P)?(le(P.enabled)&&(y.enabled=P.enabled),le(P.requireBase)&&(y.requireBase=P.requireBase),(le(P.rewriteLinks)||ae(P.rewriteLinks))&&(y.rewriteLinks=P.rewriteLinks),this):y},this.$get=["$rootScope","$browser","$sniffer","$rootElement","$window",function(P,H,X,ue,ie){var re,ne,me=H.baseHref(),be=H.url(),Ee;if(y.enabled){if(!me&&y.requireBase)throw Ti("nobase","$location in HTML5 mode requires a tag to be present!");Ee=Zs(be)+(me||"/"),ne=X.history?Fo:Ca}else Ee=ii(be),ne=Oo;var Ae=Xs(Ee);re=new ne(Ee,Ae,"#"+n),re.$$parseLinkUrl(be,be),re.$$state=H.state();var Fe=/^\s*(javascript|mailto):/i;function Oe(ot,it){return ot===it||Et(ot).href===Et(it).href}function at(ot,it,ut){var je=re.url(),Xe=re.$$state;try{H.url(ot,it,ut),re.$$state=H.state()}catch(Le){throw re.url(je),re.$$state=Xe,Le}}ue.on("click",function(ot){var it=y.rewriteLinks;if(!(!it||ot.ctrlKey||ot.metaKey||ot.shiftKey||ot.which===2||ot.button===2)){for(var ut=g(ot.target);ct(ut[0])!=="a";)if(ut[0]===ue[0]||!(ut=ut.parent())[0])return;if(!(ae(it)&&R(ut.attr(it)))){var je=ut.prop("href"),Xe=ut.attr("href")||ut.attr("xlink:href");Y(je)&&je.toString()==="[object SVGAnimatedString]"&&(je=Et(je.animVal).href),!Fe.test(je)&&je&&!ut.attr("target")&&!ot.isDefaultPrevented()&&re.$$parseLinkUrl(je,Xe)&&(ot.preventDefault(),re.absUrl()!==H.url()&&P.$apply())}}}),re.absUrl()!==be&&H.url(re.absUrl(),!0);var vt=!0;return H.onUrlChange(function(ot,it){if(!$o(ot,Ae)){ie.location.href=ot;return}P.$evalAsync(function(){var ut=re.absUrl(),je=re.$$state,Xe;re.$$parse(ot),re.$$state=it,Xe=P.$broadcast("$locationChangeStart",ot,ut,it,je).defaultPrevented,re.absUrl()===ot&&(Xe?(re.$$parse(ut),re.$$state=je,at(ut,!1,je)):(vt=!1,st(ut,je)))}),P.$$phase||P.$digest()}),P.$watch(function(){if(vt||re.$$urlUpdatedByLocation){re.$$urlUpdatedByLocation=!1;var it=H.url(),ut=re.absUrl(),je=H.state(),Xe=re.$$replace,Le=!Oe(it,ut)||re.$$html5&&X.history&&je!==re.$$state;(vt||Le)&&(vt=!1,P.$evalAsync(function(){var Ie=re.absUrl(),Ne=P.$broadcast("$locationChangeStart",Ie,it,re.$$state,je).defaultPrevented;re.absUrl()===Ie&&(Ne?(re.$$parse(it),re.$$state=je):(Le&&at(Ie,Xe,je===re.$$state?null:re.$$state),st(it,je)))}))}re.$$replace=!1}),re;function st(ot,it){P.$broadcast("$locationChangeSuccess",re.absUrl(),ot,re.$$state,it)}}]}function ka(){var n=!0,y=this;this.debugEnabled=function(P){return L(P)?(n=P,this):n},this.$get=["$window",function(P){var H=M||/\bEdge\//.test(P.navigator&&P.navigator.userAgent);return{log:ue("log"),info:ue("info"),warn:ue("warn"),error:ue("error"),debug:(function(){var ie=ue("debug");return function(){n&&ie.apply(y,arguments)}})()};function X(ie){return B(ie)&&(ie.stack&&H?ie=ie.message&&ie.stack.indexOf(ie.message)===-1?"Error: "+ie.message+` -`+ie.sourceURL+":"+ie.line)),ie}function ue(ie){var re=P.console||{},ne=re[ie]||re.log||b;return function(){var me=[];return e(arguments,function(be){me.push(X(be))}),Function.prototype.apply.call(ne,re,me)}}}]}var qr=I("$parse"),hi={}.constructor.prototype.valueOf;function Ii(n){return n+""}var Pi=Ht();e("+ - * / % === !== == != < > <= >= && || ! = |".split(" "),function(n){Pi[n]=!0});var pi={n:` -`,f:"\f",r:"\r",t:" ",v:"\v","'":"'",'"':'"'},Di=function(y){this.options=y};Di.prototype={constructor:Di,lex:function(n){for(this.text=n,this.index=0,this.tokens=[];this.index=55296&&P<=56319&&H>=56320&&H<=57343?n+y:n},isExpOperator:function(n){return n==="-"||n==="+"||this.isNumber(n)},throwError:function(n,y,P){P=P||this.index;var H=L(y)?"s "+y+"-"+this.index+" ["+this.text.substring(y,P)+"]":" "+P;throw qr("lexerr","Lexer Error: {0} at column{1} in expression [{2}].",n,H,this.text)},readNumber:function(){for(var n="",y=this.index;this.index0&&!this.peek("}",")",";","]")&&n.push(this.expressionStatement()),!this.expect(";"))return{type:At.Program,body:n}},expressionStatement:function(){return{type:At.ExpressionStatement,expression:this.filterChain()}},filterChain:function(){for(var n=this.expression();this.expect("|");)n=this.filter(n);return n},expression:function(){return this.assignment()},assignment:function(){var n=this.ternary();if(this.expect("=")){if(!Da(n))throw qr("lval","Trying to assign a value to a non l-value");n={type:At.AssignmentExpression,left:n,right:this.assignment(),operator:"="}}return n},ternary:function(){var n=this.logicalOR(),y,P;return this.expect("?")&&(y=this.expression(),this.consume(":"))?(P=this.expression(),{type:At.ConditionalExpression,test:n,alternate:y,consequent:P}):n},logicalOR:function(){for(var n=this.logicalAND();this.expect("||");)n={type:At.LogicalExpression,operator:"||",left:n,right:this.logicalAND()};return n},logicalAND:function(){for(var n=this.equality();this.expect("&&");)n={type:At.LogicalExpression,operator:"&&",left:n,right:this.equality()};return n},equality:function(){for(var n=this.relational(),y;y=this.expect("==","!=","===","!==");)n={type:At.BinaryExpression,operator:y.text,left:n,right:this.relational()};return n},relational:function(){for(var n=this.additive(),y;y=this.expect("<",">","<=",">=");)n={type:At.BinaryExpression,operator:y.text,left:n,right:this.additive()};return n},additive:function(){for(var n=this.multiplicative(),y;y=this.expect("+","-");)n={type:At.BinaryExpression,operator:y.text,left:n,right:this.multiplicative()};return n},multiplicative:function(){for(var n=this.unary(),y;y=this.expect("*","/","%");)n={type:At.BinaryExpression,operator:y.text,left:n,right:this.unary()};return n},unary:function(){var n;return(n=this.expect("+","-","!"))?{type:At.UnaryExpression,operator:n.text,prefix:!0,argument:this.unary()}:this.primary()},primary:function(){var n;this.expect("(")?(n=this.filterChain(),this.consume(")")):this.expect("[")?n=this.arrayDeclaration():this.expect("{")?n=this.object():this.selfReferential.hasOwnProperty(this.peek().text)?n=Ze(this.selfReferential[this.consume().text]):this.options.literals.hasOwnProperty(this.peek().text)?n={type:At.Literal,value:this.options.literals[this.consume().text]}:this.peek().identifier?n=this.identifier():this.peek().constant?n=this.constant():this.throwError("not a primary expression",this.peek());for(var y;y=this.expect("(","[",".");)y.text==="("?(n={type:At.CallExpression,callee:n,arguments:this.parseArguments()},this.consume(")")):y.text==="["?(n={type:At.MemberExpression,object:n,property:this.expression(),computed:!0},this.consume("]")):y.text==="."?n={type:At.MemberExpression,object:n,property:this.identifier(),computed:!1}:this.throwError("IMPOSSIBLE");return n},filter:function(n){for(var y=[n],P={type:At.CallExpression,callee:this.identifier(),arguments:y,filter:!0};this.expect(":");)y.push(this.expression());return P},parseArguments:function(){var n=[];if(this.peekToken().text!==")")do n.push(this.filterChain());while(this.expect(","));return n},identifier:function(){var n=this.consume();return n.identifier||this.throwError("is not a valid identifier",n),{type:At.Identifier,name:n.text}},constant:function(){return{type:At.Literal,value:this.consume().value}},arrayDeclaration:function(){var n=[];if(this.peekToken().text!=="]")do{if(this.peek("]"))break;n.push(this.expression())}while(this.expect(","));return this.consume("]"),{type:At.ArrayExpression,elements:n}},object:function(){var n=[],y;if(this.peekToken().text!=="}")do{if(this.peek("}"))break;y={type:At.Property,kind:"init"},this.peek().constant?(y.key=this.constant(),y.computed=!1,this.consume(":"),y.value=this.expression()):this.peek().identifier?(y.key=this.identifier(),y.computed=!1,this.peek(":")?(this.consume(":"),y.value=this.expression()):y.value=y.key):this.peek("[")?(this.consume("["),y.key=this.expression(),this.consume("]"),y.computed=!0,this.consume(":"),y.value=this.expression()):this.throwError("invalid key",this.peek()),n.push(y)}while(this.expect(","));return this.consume("}"),{type:At.ObjectExpression,properties:n}},throwError:function(n,y){throw qr("syntax","Syntax Error: Token '{0}' {1} at column {2} of the expression [{3}] starting at [{4}].",y.text,n,y.index+1,this.text,this.text.substring(y.index))},consume:function(n){if(this.tokens.length===0)throw qr("ueoe","Unexpected end of expression: {0}",this.text);var y=this.expect(n);return y||this.throwError("is unexpected, expecting ["+n+"]",this.peek()),y},peekToken:function(){if(this.tokens.length===0)throw qr("ueoe","Unexpected end of expression: {0}",this.text);return this.tokens[0]},peek:function(n,y,P,H){return this.peekAhead(0,n,y,P,H)},peekAhead:function(n,y,P,H,X){if(this.tokens.length>n){var ue=this.tokens[n],ie=ue.text;if(ie===y||ie===P||ie===H||ie===X||!y&&!P&&!H&&!X)return ue}return!1},expect:function(n,y,P,H){var X=this.peek(n,y,P,H);return X?(this.tokens.shift(),X):!1},selfReferential:{this:{type:At.ThisExpression},$locals:{type:At.LocalsExpression}}};function el(n,y){return typeof n!="undefined"?n:y}function Ra(n,y){return typeof n=="undefined"?y:typeof y=="undefined"?n:n+y}function tl(n,y){var P=n(y);return!P.$stateful}var Ta=1,Ia=2;function nl(n,y){switch(n.type){case At.MemberExpression:if(n.computed)return!1;break;case At.UnaryExpression:return Ta;case At.BinaryExpression:return n.operator!=="+"?Ta:!1;case At.CallExpression:return!1}return y===void 0?Ia:y}function er(n,y,P){var H,X,ue,ie=n.isPure=nl(n,P);switch(n.type){case At.Program:H=!0,e(n.body,function(re){er(re.expression,y,ie),H=H&&re.expression.constant}),n.constant=H;break;case At.Literal:n.constant=!0,n.toWatch=[];break;case At.UnaryExpression:er(n.argument,y,ie),n.constant=n.argument.constant,n.toWatch=n.argument.toWatch;break;case At.BinaryExpression:er(n.left,y,ie),er(n.right,y,ie),n.constant=n.left.constant&&n.right.constant,n.toWatch=n.left.toWatch.concat(n.right.toWatch);break;case At.LogicalExpression:er(n.left,y,ie),er(n.right,y,ie),n.constant=n.left.constant&&n.right.constant,n.toWatch=n.constant?[]:[n];break;case At.ConditionalExpression:er(n.test,y,ie),er(n.alternate,y,ie),er(n.consequent,y,ie),n.constant=n.test.constant&&n.alternate.constant&&n.consequent.constant,n.toWatch=n.constant?[]:[n];break;case At.Identifier:n.constant=!1,n.toWatch=[n];break;case At.MemberExpression:er(n.object,y,ie),n.computed&&er(n.property,y,ie),n.constant=n.object.constant&&(!n.computed||n.property.constant),n.toWatch=n.constant?[]:[n];break;case At.CallExpression:ue=n.filter?tl(y,n.callee.name):!1,H=ue,X=[],e(n.arguments,function(re){er(re,y,ie),H=H&&re.constant,X.push.apply(X,re.toWatch)}),n.constant=H,n.toWatch=ue?X:[n];break;case At.AssignmentExpression:er(n.left,y,ie),er(n.right,y,ie),n.constant=n.left.constant&&n.right.constant,n.toWatch=[n];break;case At.ArrayExpression:H=!0,X=[],e(n.elements,function(re){er(re,y,ie),H=H&&re.constant,X.push.apply(X,re.toWatch)}),n.constant=H,n.toWatch=X;break;case At.ObjectExpression:H=!0,X=[],e(n.properties,function(re){er(re.value,y,ie),H=H&&re.value.constant,X.push.apply(X,re.value.toWatch),re.computed&&(er(re.key,y,!1),H=H&&re.key.constant,X.push.apply(X,re.key.toWatch))}),n.constant=H,n.toWatch=X;break;case At.ThisExpression:n.constant=!1,n.toWatch=[];break;case At.LocalsExpression:n.constant=!1,n.toWatch=[];break}}function Pa(n){if(n.length===1){var y=n[0].expression,P=y.toWatch;return P.length!==1||P[0]!==y?P:void 0}}function Da(n){return n.type===At.Identifier||n.type===At.MemberExpression}function La(n){if(n.body.length===1&&Da(n.body[0].expression))return{type:At.AssignmentExpression,left:n.body[0].expression,right:{type:At.NGValueParameter},operator:"="}}function rl(n){return n.body.length===0||n.body.length===1&&(n.body[0].expression.type===At.Literal||n.body[0].expression.type===At.ArrayExpression||n.body[0].expression.type===At.ObjectExpression)}function il(n){return n.constant}function Ma(n){this.$filter=n}Ma.prototype={compile:function(n){var y=this;this.state={nextId:0,filters:{},fn:{vars:[],body:[],own:{}},assign:{vars:[],body:[],own:{}},inputs:[]},er(n,y.$filter);var P="",H;if(this.stage="assign",H=La(n)){this.state.computing="assign";var X=this.nextId();this.recurse(H,X),this.return_(X),P="fn.assign="+this.generateFunction("assign","s,v,l")}var ue=Pa(n.body);y.stage="inputs",e(ue,function(ne,me){var be="fn"+me;y.state[be]={vars:[],body:[],own:{}},y.state.computing=be;var Ee=y.nextId();y.recurse(ne,Ee),y.return_(Ee),y.state.inputs.push({name:be,isPure:ne.isPure}),ne.watchId=me}),this.state.computing="fn",this.stage="main",this.recurse(n);var ie='"'+this.USE+" "+this.STRICT+`"; -`+this.filterPrefix()+"var fn="+this.generateFunction("fn","s,l,a,i")+P+this.watchFns()+"return fn;",re=new Function("$filter","getStringValue","ifDefined","plus",ie)(this.$filter,Ii,el,Ra);return this.state=this.stage=void 0,re},USE:"use",STRICT:"strict",watchFns:function(){var n=[],y=this.state.inputs,P=this;return e(y,function(H){n.push("var "+H.name+"="+P.generateFunction(H.name,"s")),H.isPure&&n.push(H.name,".isPure="+JSON.stringify(H.isPure)+";")}),y.length&&n.push("fn.inputs=["+y.map(function(H){return H.name}).join(",")+"];"),n.join("")},generateFunction:function(n,y){return"function("+y+"){"+this.varsPrefix(n)+this.body(n)+"};"},filterPrefix:function(){var n=[],y=this;return e(this.state.filters,function(P,H){n.push(P+"=$filter("+y.escape(H)+")")}),n.length?"var "+n.join(",")+";":""},varsPrefix:function(n){return this.state[n].vars.length?"var "+this.state[n].vars.join(",")+";":""},body:function(n){return this.state[n].body.join("")},recurse:function(n,y,P,H,X,ue){var ie,re,ne=this,me,be,Ee;if(H=H||b,!ue&&L(n.watchId)){y=y||this.nextId(),this.if_("i",this.lazyAssign(y,this.computedMember("i",n.watchId)),this.lazyRecurse(n,y,P,H,X,!0));return}switch(n.type){case At.Program:e(n.body,function(Ae,Fe){ne.recurse(Ae.expression,void 0,void 0,function(Oe){re=Oe}),Fe!==n.body.length-1?ne.current().body.push(re,";"):ne.return_(re)});break;case At.Literal:be=this.escape(n.value),this.assign(y,be),H(y||be);break;case At.UnaryExpression:this.recurse(n.argument,void 0,void 0,function(Ae){re=Ae}),be=n.operator+"("+this.ifDefined(re,0)+")",this.assign(y,be),H(be);break;case At.BinaryExpression:this.recurse(n.left,void 0,void 0,function(Ae){ie=Ae}),this.recurse(n.right,void 0,void 0,function(Ae){re=Ae}),n.operator==="+"?be=this.plus(ie,re):n.operator==="-"?be=this.ifDefined(ie,0)+n.operator+this.ifDefined(re,0):be="("+ie+")"+n.operator+"("+re+")",this.assign(y,be),H(be);break;case At.LogicalExpression:y=y||this.nextId(),ne.recurse(n.left,y),ne.if_(n.operator==="&&"?y:ne.not(y),ne.lazyRecurse(n.right,y)),H(y);break;case At.ConditionalExpression:y=y||this.nextId(),ne.recurse(n.test,y),ne.if_(y,ne.lazyRecurse(n.alternate,y),ne.lazyRecurse(n.consequent,y)),H(y);break;case At.Identifier:y=y||this.nextId(),P&&(P.context=ne.stage==="inputs"?"s":this.assign(this.nextId(),this.getHasOwnProperty("l",n.name)+"?l:s"),P.computed=!1,P.name=n.name),ne.if_(ne.stage==="inputs"||ne.not(ne.getHasOwnProperty("l",n.name)),function(){ne.if_(ne.stage==="inputs"||"s",function(){X&&X!==1&&ne.if_(ne.isNull(ne.nonComputedMember("s",n.name)),ne.lazyAssign(ne.nonComputedMember("s",n.name),"{}")),ne.assign(y,ne.nonComputedMember("s",n.name))})},y&&ne.lazyAssign(y,ne.nonComputedMember("l",n.name))),H(y);break;case At.MemberExpression:ie=P&&(P.context=this.nextId())||this.nextId(),y=y||this.nextId(),ne.recurse(n.object,ie,void 0,function(){ne.if_(ne.notNull(ie),function(){n.computed?(re=ne.nextId(),ne.recurse(n.property,re),ne.getStringValue(re),X&&X!==1&&ne.if_(ne.not(ne.computedMember(ie,re)),ne.lazyAssign(ne.computedMember(ie,re),"{}")),be=ne.computedMember(ie,re),ne.assign(y,be),P&&(P.computed=!0,P.name=re)):(X&&X!==1&&ne.if_(ne.isNull(ne.nonComputedMember(ie,n.property.name)),ne.lazyAssign(ne.nonComputedMember(ie,n.property.name),"{}")),be=ne.nonComputedMember(ie,n.property.name),ne.assign(y,be),P&&(P.computed=!1,P.name=n.property.name))},function(){ne.assign(y,"undefined")}),H(y)},!!X);break;case At.CallExpression:y=y||this.nextId(),n.filter?(re=ne.filter(n.callee.name),me=[],e(n.arguments,function(Ae){var Fe=ne.nextId();ne.recurse(Ae,Fe),me.push(Fe)}),be=re+"("+me.join(",")+")",ne.assign(y,be),H(y)):(re=ne.nextId(),ie={},me=[],ne.recurse(n.callee,re,ie,function(){ne.if_(ne.notNull(re),function(){e(n.arguments,function(Ae){ne.recurse(Ae,n.constant?void 0:ne.nextId(),void 0,function(Fe){me.push(Fe)})}),ie.name?be=ne.member(ie.context,ie.name,ie.computed)+"("+me.join(",")+")":be=re+"("+me.join(",")+")",ne.assign(y,be)},function(){ne.assign(y,"undefined")}),H(y)}));break;case At.AssignmentExpression:re=this.nextId(),ie={},this.recurse(n.left,void 0,ie,function(){ne.if_(ne.notNull(ie.context),function(){ne.recurse(n.right,re),be=ne.member(ie.context,ie.name,ie.computed)+n.operator+re,ne.assign(y,be),H(y||be)})},1);break;case At.ArrayExpression:me=[],e(n.elements,function(Ae){ne.recurse(Ae,n.constant?void 0:ne.nextId(),void 0,function(Fe){me.push(Fe)})}),be="["+me.join(",")+"]",this.assign(y,be),H(y||be);break;case At.ObjectExpression:me=[],Ee=!1,e(n.properties,function(Ae){Ae.computed&&(Ee=!0)}),Ee?(y=y||this.nextId(),this.assign(y,"{}"),e(n.properties,function(Ae){Ae.computed?(ie=ne.nextId(),ne.recurse(Ae.key,ie)):ie=Ae.key.type===At.Identifier?Ae.key.name:""+Ae.key.value,re=ne.nextId(),ne.recurse(Ae.value,re),ne.assign(ne.member(y,ie,Ae.computed),re)})):(e(n.properties,function(Ae){ne.recurse(Ae.value,n.constant?void 0:ne.nextId(),void 0,function(Fe){me.push(ne.escape(Ae.key.type===At.Identifier?Ae.key.name:""+Ae.key.value)+":"+Fe)})}),be="{"+me.join(",")+"}",this.assign(y,be)),H(y||be);break;case At.ThisExpression:this.assign(y,"s"),H(y||"s");break;case At.LocalsExpression:this.assign(y,"l"),H(y||"l");break;case At.NGValueParameter:this.assign(y,"v"),H(y||"v");break}},getHasOwnProperty:function(n,y){var P=n+"."+y,H=this.current().own;return H.hasOwnProperty(P)||(H[P]=this.nextId(!1,n+"&&("+this.escape(y)+" in "+n+")")),H[P]},assign:function(n,y){if(n)return this.current().body.push(n,"=",y,";"),n},filter:function(n){return this.state.filters.hasOwnProperty(n)||(this.state.filters[n]=this.nextId(!0)),this.state.filters[n]},ifDefined:function(n,y){return"ifDefined("+n+","+this.escape(y)+")"},plus:function(n,y){return"plus("+n+","+y+")"},return_:function(n){this.current().body.push("return ",n,";")},if_:function(n,y,P){if(n===!0)y();else{var H=this.current().body;H.push("if(",n,"){"),y(),H.push("}"),P&&(H.push("else{"),P(),H.push("}"))}},not:function(n){return"!("+n+")"},isNull:function(n){return n+"==null"},notNull:function(n){return n+"!=null"},nonComputedMember:function(n,y){var P=/^[$_a-zA-Z][$_a-zA-Z0-9]*$/,H=/[^$_a-zA-Z0-9]/g;return P.test(y)?n+"."+y:n+'["'+y.replace(H,this.stringEscapeFn)+'"]'},computedMember:function(n,y){return n+"["+y+"]"},member:function(n,y,P){return P?this.computedMember(n,y):this.nonComputedMember(n,y)},getStringValue:function(n){this.assign(n,"getStringValue("+n+")")},lazyRecurse:function(n,y,P,H,X,ue){var ie=this;return function(){ie.recurse(n,y,P,H,X,ue)}},lazyAssign:function(n,y){var P=this;return function(){P.assign(n,y)}},stringEscapeRegex:/[^ a-zA-Z0-9]/g,stringEscapeFn:function(n){return"\\u"+("0000"+n.charCodeAt(0).toString(16)).slice(-4)},escape:function(n){if(ae(n))return"'"+n.replace(this.stringEscapeRegex,this.stringEscapeFn)+"'";if(fe(n))return n.toString();if(n===!0)return"true";if(n===!1)return"false";if(n===null)return"null";if(typeof n=="undefined")return"undefined";throw qr("esc","IMPOSSIBLE")},nextId:function(n,y){var P="v"+this.state.nextId++;return n||this.current().vars.push(P+(y?"="+y:"")),P},current:function(){return this.state[this.state.computing]}};function $a(n){this.$filter=n}$a.prototype={compile:function(n){var y=this;er(n,y.$filter);var P,H;(P=La(n))&&(H=this.recurse(P));var X=Pa(n.body),ue;X&&(ue=[],e(X,function(ne,me){var be=y.recurse(ne);be.isPure=ne.isPure,ne.input=be,ue.push(be),ne.watchId=me}));var ie=[];e(n.body,function(ne){ie.push(y.recurse(ne.expression))});var re=n.body.length===0?b:n.body.length===1?ie[0]:function(ne,me){var be;return e(ie,function(Ee){be=Ee(ne,me)}),be};return H&&(re.assign=function(ne,me,be){return H(ne,be,me)}),ue&&(re.inputs=ue),re},recurse:function(n,y,P){var H,X,ue=this,ie;if(n.input)return this.inputs(n.input,n.watchId);switch(n.type){case At.Literal:return this.value(n.value,y);case At.UnaryExpression:return X=this.recurse(n.argument),this["unary"+n.operator](X,y);case At.BinaryExpression:return H=this.recurse(n.left),X=this.recurse(n.right),this["binary"+n.operator](H,X,y);case At.LogicalExpression:return H=this.recurse(n.left),X=this.recurse(n.right),this["binary"+n.operator](H,X,y);case At.ConditionalExpression:return this["ternary?:"](this.recurse(n.test),this.recurse(n.alternate),this.recurse(n.consequent),y);case At.Identifier:return ue.identifier(n.name,y,P);case At.MemberExpression:return H=this.recurse(n.object,!1,!!P),n.computed||(X=n.property.name),n.computed&&(X=this.recurse(n.property)),n.computed?this.computedMember(H,X,y,P):this.nonComputedMember(H,X,y,P);case At.CallExpression:return ie=[],e(n.arguments,function(re){ie.push(ue.recurse(re))}),n.filter&&(X=this.$filter(n.callee.name)),n.filter||(X=this.recurse(n.callee,!0)),n.filter?function(re,ne,me,be){for(var Ee=[],Ae=0;Ae":function(n,y,P){return function(H,X,ue,ie){var re=n(H,X,ue,ie)>y(H,X,ue,ie);return P?{value:re}:re}},"binary<=":function(n,y,P){return function(H,X,ue,ie){var re=n(H,X,ue,ie)<=y(H,X,ue,ie);return P?{value:re}:re}},"binary>=":function(n,y,P){return function(H,X,ue,ie){var re=n(H,X,ue,ie)>=y(H,X,ue,ie);return P?{value:re}:re}},"binary&&":function(n,y,P){return function(H,X,ue,ie){var re=n(H,X,ue,ie)&&y(H,X,ue,ie);return P?{value:re}:re}},"binary||":function(n,y,P){return function(H,X,ue,ie){var re=n(H,X,ue,ie)||y(H,X,ue,ie);return P?{value:re}:re}},"ternary?:":function(n,y,P,H){return function(X,ue,ie,re){var ne=n(X,ue,ie,re)?y(X,ue,ie,re):P(X,ue,ie,re);return H?{value:ne}:ne}},value:function(n,y){return function(){return y?{context:void 0,name:void 0,value:n}:n}},identifier:function(n,y,P){return function(H,X,ue,ie){var re=X&&n in X?X:H;P&&P!==1&&re&&re[n]==null&&(re[n]={});var ne=re?re[n]:void 0;return y?{context:re,name:n,value:ne}:ne}},computedMember:function(n,y,P,H){return function(X,ue,ie,re){var ne=n(X,ue,ie,re),me,be;return ne!=null&&(me=y(X,ue,ie,re),me=Ii(me),H&&H!==1&&ne&&!ne[me]&&(ne[me]={}),be=ne[me]),P?{context:ne,name:me,value:be}:be}},nonComputedMember:function(n,y,P,H){return function(X,ue,ie,re){var ne=n(X,ue,ie,re);H&&H!==1&&ne&&ne[y]==null&&(ne[y]={});var me=ne!=null?ne[y]:void 0;return P?{context:ne,name:y,value:me}:me}},inputs:function(n,y){return function(P,H,X,ue){return ue?ue[y]:n(P,H,X)}}};function io(n,y,P){this.ast=new At(n,P),this.astCompiler=P.csp?new $a(y):new Ma(y)}io.prototype={constructor:io,parse:function(n){var y=this.getAst(n),P=this.astCompiler.compile(y.ast);return P.literal=rl(y.ast),P.constant=il(y.ast),P.oneTime=y.oneTime,P},getAst:function(n){var y=!1;return n=n.trim(),n.charAt(0)===":"&&n.charAt(1)===":"&&(y=!0,n=n.substring(2)),{ast:this.ast.ast(n),oneTime:y}}};function Bo(n){return K(n.valueOf)?n.valueOf():hi.call(n)}function ol(){var n=Ht(),y={true:!0,false:!1,null:null,undefined:void 0},P,H;this.addLiteral=function(X,ue){y[X]=ue},this.setIdentifierFns=function(X,ue){return P=X,H=ue,this},this.$get=["$filter",function(X){var ue=ce().noUnsafeEval,ie={csp:ue,literals:Ze(y),isIdentifierStart:K(P)&&P,isIdentifierContinue:K(H)&&H};return re.$$getAst=ne,re;function re(st,ot){var it,ut;switch(typeof st){case"string":if(st=st.trim(),ut=st,it=n[ut],!it){var je=new Di(ie),Xe=new io(je,X,ie);it=Xe.parse(st),n[ut]=Oe(it)}return vt(it,ot);case"function":return vt(st,ot);default:return vt(b,ot)}}function ne(st){var ot=new Di(ie),it=new io(ot,X,ie);return it.getAst(st).ast}function me(st,ot,it){return st==null||ot==null?st===ot:typeof st=="object"&&(st=Bo(st),typeof st=="object"&&!it)?!1:st===ot||st!==st&&ot!==ot}function be(st,ot,it,ut,je){var Xe=ut.inputs,Le;if(Xe.length===1){var Ie=me;return Xe=Xe[0],st.$watch(function(gt){var xt=Xe(gt);return me(xt,Ie,Xe.isPure)||(Le=ut(gt,void 0,void 0,[xt]),Ie=xt&&Bo(xt)),Le},ot,it,je)}for(var Ne=[],Be=[],tt=0,dt=Xe.length;tt0&&Ee(this.$$state),tt},catch:function(Ie){return this.then(null,Ie)},finally:function(Ie,Ne){return this.then(function(Be){return ot(Be,ut,Ie)},function(Be){return ot(Be,st,Ie)},Ne)}});function me(Ie){var Ne,Be,tt;tt=Ie.pending,Ie.processScheduled=!1,Ie.pending=void 0;try{for(var dt=0,rt=tt.length;dt=0&&(ot(rt,-1),_t1,gt=0,xt=ie(Le,Gt),Rt=[],_t={},Pt=!0,Zt=0;function Gt(Sn){Be=Sn;var kn,Dn,qn,Un,pr;if(!R(Be)){if(!Y(Be))tt!==Be&&(tt=Be,gt++);else if(h(Be)){tt!==Rt&&(tt=Rt,Zt=tt.length=0,gt++),kn=Be.length,Zt!==kn&&(gt++,tt.length=Zt=kn);for(var nr=0;nrkn){gt++;for(Dn in tt)_.call(Be,Dn)||(Zt--,delete tt[Dn])}}return gt}}function dn(){if(Pt?(Pt=!1,Ie(Be,Be,Ne)):Ie(Be,dt,Ne),rt)if(!Y(Be))dt=Be;else if(h(Be)){dt=new Array(Be.length);for(var Sn=0;Sn-1)throw Hr("iwcard","Illegal sequence *** in string matcher. String: {0}",n);return n=qe(n).replace(/\\\*\\\*/g,".*").replace(/\\\*/g,"[^:/.?&;]*"),new RegExp("^"+n+"$")}else{if(z(n))return new RegExp("^"+n.source+"$");throw Hr("imatcher",'Matchers may only be "self", string patterns or RegExp objects')}}function Na(n){var y=[];return L(n)&&e(n,function(P){y.push(fl(P))}),y}function hl(){this.SCE_CONTEXTS=Bn;var n=["self"],y=[];this.trustedResourceUrlList=function(P){return arguments.length&&(n=Na(P)),n},Object.defineProperty(this,"resourceUrlWhitelist",{get:function(){return this.trustedResourceUrlList},set:function(P){this.trustedResourceUrlList=P}}),this.bannedResourceUrlList=function(P){return arguments.length&&(y=Na(P)),y},Object.defineProperty(this,"resourceUrlBlacklist",{get:function(){return this.bannedResourceUrlList},set:function(P){this.bannedResourceUrlList=P}}),this.$get=["$injector","$$sanitizeUri",function(P,H){var X=function(Oe){throw Hr("unsafe","Attempting to use an unsafe value in a safe context.")};P.has("$sanitize")&&(X=P.get("$sanitize"));function ue(Fe,Oe){return Fe==="self"?_l(Oe)||Sl(Oe):!!Fe.exec(Oe.href)}function ie(Fe){var Oe=Et(Fe.toString()),at,vt,st=!1;for(at=0,vt=n.length;at to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information.");var H=ye(Bn);H.isEnabled=function(){return n},H.trustAs=P.trustAs,H.getTrusted=P.getTrusted,H.valueOf=P.valueOf,n||(H.trustAs=H.getTrusted=function(re,ne){return ne},H.valueOf=C),H.parseAs=function(ne,me){var be=y(me);return be.literal&&be.constant?be:y(me,function(Ee){return H.getTrusted(ne,Ee)})};var X=H.parseAs,ue=H.getTrusted,ie=H.trustAs;return e(Bn,function(re,ne){var me=x(ne);H[Uo("parse_as_"+me)]=function(be){return X(re,be)},H[Uo("get_trusted_"+me)]=function(be){return ue(re,be)},H[Uo("trust_as_"+me)]=function(be){return ie(re,be)}}),H}]}function Ba(){this.$get=["$window","$document",function(n,y){var P={},H=n.nw&&n.nw.process,X=!H&&n.chrome&&(n.chrome.app&&n.chrome.app.runtime||!n.chrome.app&&n.chrome.runtime&&n.chrome.runtime.id),ue=!X&&n.history&&n.history.pushState,ie=a((/android (\d+)/.exec(x((n.navigator||{}).userAgent))||[])[1]),re=/Boxee/i.test((n.navigator||{}).userAgent),ne=y[0]||{},me=ne.body&&ne.body.style,be=!1,Ee=!1;return me&&(be="transition"in me||"webkitTransition"in me,Ee="animation"in me||"webkitAnimation"in me),{history:!!(ue&&!(ie<4)&&!re),hasEvent:function(Ae){if(Ae==="input"&&M)return!1;if(R(P[Ae])){var Fe=ne.createElement("div");P[Ae]="on"+Ae in Fe}return P[Ae]},csp:ce(),transitions:be,animations:Ee,android:ie}}]}function gl(){this.$get=$(function(n){return new ml(n)})}function ml(n){var y=this,P={},H=[],X=y.ALL_TASKS_TYPE="$$all$$",ue=y.DEFAULT_TASK_TYPE="$$default$$";y.completeTask=ie,y.incTaskCount=be,y.notifyWhenNoPendingTasks=Ee;function ie(Ae,Fe){Fe=Fe||ue;try{Ae()}finally{re(Fe);var Oe=P[Fe],at=P[X];if(!at||!Oe)for(var vt=at?me:ne,st;st=vt(Fe);)try{st()}catch(ot){n.error(ot)}}}function re(Ae){Ae=Ae||ue,P[Ae]&&(P[Ae]--,P[X]--)}function ne(){var Ae=H.pop();return Ae&&Ae.cb}function me(Ae){for(var Fe=H.length-1;Fe>=0;--Fe){var Oe=H[Fe];if(Oe.type===Ae)return H.splice(Fe,1),Oe.cb}}function be(Ae){Ae=Ae||ue,P[Ae]=(P[Ae]||0)+1,P[X]=(P[X]||0)+1}function Ee(Ae,Fe){Fe=Fe||X,P[Fe]?H.push({type:Fe,cb:Ae}):Ae()}}var Ha=I("$templateRequest");function vl(){var n;this.httpOptions=function(y){return y?(n=y,this):n},this.$get=["$exceptionHandler","$templateCache","$http","$q","$sce",function(y,P,H,X,ue){function ie(re,ne){ie.totalPendingRequests++,(!ae(re)||R(P.get(re)))&&(re=ue.getTrustedResourceUrl(re));var me=H.defaults&&H.defaults.transformResponse;return se(me)?me=me.filter(function(Ee){return Ee!==to}):me===to&&(me=null),H.get(re,t({cache:P,transformResponse:me},n)).finally(function(){ie.totalPendingRequests--}).then(function(Ee){return P.put(re,Ee.data)},be);function be(Ee){return ne||(Ee=Ha("tpload","Failed to load template: {0} (HTTP status: {1} {2})",re,Ee.status,Ee.statusText),y(Ee)),X.reject(Ee)}}return ie.totalPendingRequests=0,ie}]}function bl(){this.$get=["$rootScope","$browser","$location",function(n,y,P){var H={};return H.findBindings=function(X,ue,ie){var re=X.getElementsByClassName("ng-binding"),ne=[];return e(re,function(me){var be=p.element(me).data("$binding");be&&e(be,function(Ee){if(ie){var Ae=new RegExp("(^|\\s)"+qe(ue)+"(\\s|\\||$)");Ae.test(Ee)&&ne.push(me)}else Ee.indexOf(ue)!==-1&&ne.push(me)})}),ne},H.findModels=function(X,ue,ie){for(var re=["ng-","data-ng-","ng\\:"],ne=0;ne-1&&(P="["+P+"]"),{href:tr.href,protocol:tr.protocol?tr.protocol.replace(/:$/,""):"",host:tr.host,search:tr.search?tr.search.replace(/^\?/,""):"",hash:tr.hash?tr.hash.replace(/^#/,""):"",hostname:P,port:tr.port,pathname:tr.pathname.charAt(0)==="/"?tr.pathname:"/"+tr.pathname}}function _l(n){return An(n,Ua)}function Sl(n){return An(n,ao())}function ja(n){var y=[Ua].concat(n.map(Et));return function(H){var X=Et(H);return y.some(An.bind(null,X))}}function An(n,y){return n=Et(n),y=Et(y),n.protocol===y.protocol&&n.host===y.host}function ao(){return we.document.baseURI?we.document.baseURI:(gi||(gi=we.document.createElement("a"),gi.href=".",gi=gi.cloneNode(!1)),gi.href)}function za(){this.$get=$(we)}function so(n){var y=n[0]||{},P={},H="";function X(ie){try{return ie.cookie||""}catch{return""}}function ue(ie){try{return decodeURIComponent(ie)}catch{return ie}}return function(){var ie,re,ne,me,be,Ee=X(y);if(Ee!==H)for(H=Ee,ie=H.split("; "),P={},ne=0;ne0&&(be=ue(re.substring(0,me)),R(P[be])&&(P[be]=ue(re.substring(me+1))));return P}}so.$inject=["$document"];function El(){this.$get=so}Va.$inject=["$provide"];function Va(n){var y="Filter";function P(H,X){if(Y(H)){var ue={};return e(H,function(ie,re){ue[re]=P(re,ie)}),ue}else return n.factory(H+y,X)}this.register=P,this.$get=["$injector",function(H){return function(X){return H.get(X+y)}}],P("currency",Ga),P("date",Ja),P("filter",xl),P("json",ai),P("limitTo",Fl),P("lowercase",Ml),P("number",Vo),P("orderBy",Xa),P("uppercase",$l)}function xl(){return function(n,y,P,H){if(!h(n)){if(n==null)return n;throw I("filter")("notarray","Expected array but received: {0}",n)}H=H||"$";var X=Nr(y),ue,ie;switch(X){case"function":ue=y;break;case"boolean":case"null":case"number":case"string":ie=!0;case"object":ue=Cl(y,P,H,ie);break;default:return n}return Array.prototype.filter.call(n,ue)}}function Cl(n,y,P,H){var X=Y(n)&&P in n,ue;return y===!0?y=Mt:K(y)||(y=function(ie,re){return R(ie)?!1:ie===null||re===null?ie===re:Y(re)||Y(ie)&&!W(ie)?!1:(ie=x(""+ie),re=x(""+re),ie.indexOf(re)!==-1)}),ue=function(ie){return X&&!Y(ie)?oi(ie,n[P],y,P,!1):oi(ie,n,y,P,H)},ue}function oi(n,y,P,H,X,ue){var ie=Nr(n),re=Nr(y);if(re==="string"&&y.charAt(0)==="!")return!oi(n,y.substring(1),P,H,X);if(se(n))return n.some(function(Ae){return oi(Ae,y,P,H,X)});switch(ie){case"object":var ne;if(X){for(ne in n)if(ne.charAt&&ne.charAt(0)!=="$"&&oi(n[ne],y,P,H,!0))return!0;return ue?!1:oi(n,y,P,H,!1)}else if(re==="object"){for(ne in y){var me=y[ne];if(!(K(me)||R(me))){var be=ne===H,Ee=be?n:n[ne];if(!oi(Ee,me,P,H,be,be))return!1}}return!0}else return P(n,y);case"function":return!1;default:return P(n,y)}}function Nr(n){return n===null?"null":typeof n}var Wa=22,jo=".",zo="0";Ga.$inject=["$locale"];function Ga(n){var y=n.NUMBER_FORMATS;return function(P,H,X){R(H)&&(H=y.CURRENCY_SYM),R(X)&&(X=y.PATTERNS[1].maxFrac);var ue=H?/\u00A4/g:/\s*\u00A4\s*/g;return P==null?P:lo(P,y.PATTERNS[1],y.GROUP_SEP,y.DECIMAL_SEP,X).replace(ue,H)}}Vo.$inject=["$locale"];function Vo(n){var y=n.NUMBER_FORMATS;return function(P,H){return P==null?P:lo(P,y.PATTERNS[0],y.GROUP_SEP,y.DECIMAL_SEP,H)}}function Al(n){var y=0,P,H,X,ue,ie;for((H=n.indexOf(jo))>-1&&(n=n.replace(jo,"")),(X=n.search(/e/i))>0?(H<0&&(H=X),H+=+n.slice(X+1),n=n.substring(0,X)):H<0&&(H=n.length),X=0;n.charAt(X)===zo;X++);if(X===(ie=n.length))P=[0],H=1;else{for(ie--;n.charAt(ie)===zo;)ie--;for(H-=X,P=[],ue=0;X<=ie;X++,ue++)P[ue]=+n.charAt(X)}return H>Wa&&(P=P.splice(0,Wa-1),y=H-1,H=1),{d:P,e:y,i:H}}function qa(n,y,P,H){var X=n.d,ue=X.length-n.i;y=R(y)?Math.min(Math.max(P,ue),H):+y;var ie=y+n.i,re=X[ie];if(ie>0){X.splice(Math.max(n.i,ie));for(var ne=ie;ne=5)if(ie-1<0){for(var be=0;be>ie;be--)X.unshift(0),n.i++;X.unshift(1),n.i++}else X[ie-1]++;for(;ue0?Fe=be.splice(Ee,be.length):(Fe=be,be=[0]);var Oe=[];for(be.length>=y.lgSize&&Oe.unshift(be.splice(-y.lgSize,be.length).join(""));be.length>y.gSize;)Oe.unshift(be.splice(-y.gSize,be.length).join(""));be.length&&Oe.unshift(be.join("")),ne=Oe.join(P),Fe.length&&(ne+=H+Fe.join("")),Ae&&(ne+="e+"+Ae)}return n<0&&!ie?y.negPre+ne+y.negSuf:y.posPre+ne+y.posSuf}function co(n,y,P,H){var X="";for((n<0||H&&n<=0)&&(H?n=-n+1:(n=-n,X="-")),n=""+n;n.length0||ie>-P)&&(ie+=P),ie===0&&P===-12&&(ie=12),co(ie,y,H,X)}}function mi(n,y,P){return function(H,X){var ue=H["get"+n](),ie=(P?"STANDALONE":"")+(y?"SHORT":""),re=d(ie+n);return X[re][ue]}}function kl(n,y,P){var H=-1*P,X=H>=0?"+":"";return X+=co(Math[H>0?"floor":"ceil"](H/60),2)+co(Math.abs(H%60),2),X}function Ya(n){var y=new Date(n,0,1).getDay();return new Date(n,0,(y<=4?5:12)-y)}function Rl(n){return new Date(n.getFullYear(),n.getMonth(),n.getDate()+(4-n.getDay()))}function Ka(n){return function(y){var P=Ya(y.getFullYear()),H=Rl(y),X=+H-+P,ue=1+Math.round(X/6048e5);return co(ue,n)}}function Tl(n,y){return n.getHours()<12?y.AMPMS[0]:y.AMPMS[1]}function Wo(n,y){return n.getFullYear()<=0?y.ERAS[0]:y.ERAS[1]}function Il(n,y){return n.getFullYear()<=0?y.ERANAMES[0]:y.ERANAMES[1]}var Pl={yyyy:Hn("FullYear",4,0,!1,!0),yy:Hn("FullYear",2,0,!0,!0),y:Hn("FullYear",1,0,!1,!0),MMMM:mi("Month"),MMM:mi("Month",!0),MM:Hn("Month",2,1),M:Hn("Month",1,1),LLLL:mi("Month",!1,!0),dd:Hn("Date",2),d:Hn("Date",1),HH:Hn("Hours",2),H:Hn("Hours",1),hh:Hn("Hours",2,-12),h:Hn("Hours",1,-12),mm:Hn("Minutes",2),m:Hn("Minutes",1),ss:Hn("Seconds",2),s:Hn("Seconds",1),sss:Hn("Milliseconds",3),EEEE:mi("Day"),EEE:mi("Day",!0),a:Tl,Z:kl,ww:Ka(2),w:Ka(1),G:Wo,GG:Wo,GGG:Wo,GGGG:Il},Dl=/((?:[^yMLdHhmsaZEwG']+)|(?:'(?:[^']|'')*')|(?:E+|y+|M+|L+|d+|H+|h+|m+|s+|a|Z|G+|w+))([\s\S]*)/,Ll=/^-?\d+$/;Ja.$inject=["$locale"];function Ja(n){var y=/^(\d{4})-?(\d\d)-?(\d\d)(?:T(\d\d)(?::?(\d\d)(?::?(\d\d)(?:\.(\d+))?)?)?(Z|([+-])(\d\d):?(\d\d))?)?$/;function P(H){var X;if(X=H.match(y)){var ue=new Date(0),ie=0,re=0,ne=X[8]?ue.setUTCFullYear:ue.setFullYear,me=X[8]?ue.setUTCHours:ue.setHours;X[9]&&(ie=a(X[9]+X[10]),re=a(X[9]+X[11])),ne.call(ue,a(X[1]),a(X[2])-1,a(X[3]));var be=a(X[4]||0)-ie,Ee=a(X[5]||0)-re,Ae=a(X[6]||0),Fe=Math.round(parseFloat("0."+(X[7]||0))*1e3);return me.call(ue,be,Ee,Ae,Fe),ue}return H}return function(H,X,ue){var ie="",re=[],ne,me;if(X=X||"mediumDate",X=n.DATETIME_FORMATS[X]||X,ae(H)&&(H=Ll.test(H)?a(H):P(H)),fe(H)&&(H=new Date(H)),!xe(H)||!isFinite(H.getTime()))return H;for(;X;)me=Dl.exec(X),me?(re=te(re,me,1),X=re.pop()):(re.push(X),X=null);var be=H.getTimezoneOffset();return ue&&(be=mt(ue,be),H=Dt(H,ue,!0)),e(re,function(Ee){ne=Pl[Ee],ie+=ne?ne(H,n.DATETIME_FORMATS,be):Ee==="''"?"'":Ee.replace(/(^'|'$)/g,"").replace(/''/g,"'")}),ie}}function ai(){return function(n,y){return R(y)&&(y=2),ze(n,y)}}var Ml=$(x),$l=$(d);function Fl(){return function(n,y,P){return Math.abs(Number(y))===1/0?y=Number(y):y=a(y),l(y)||(fe(n)&&(n=n.toString()),!h(n))?n:(P=!P||isNaN(P)?0:a(P),P=P<0?Math.max(0,n.length+P):P,y>=0?Go(n,P,P+y):P===0?Go(n,y,n.length):Go(n,Math.max(0,P+y),P))}}function Go(n,y,P){return ae(n)?n.slice(y,P):N.call(n,y,P)}Xa.$inject=["$parse"];function Xa(n){return function(ie,re,ne,me){if(ie==null)return ie;if(!h(ie))throw I("orderBy")("notarray","Expected array but received: {0}",ie);se(re)||(re=[re]),re.length===0&&(re=["+"]);var be=y(re),Ee=ne?-1:1,Ae=K(me)?me:ue,Fe=Array.prototype.map.call(ie,Oe);return Fe.sort(at),ie=Fe.map(function(vt){return vt.value}),ie;function Oe(vt,st){return{value:vt,tieBreaker:{value:st,type:"number",index:st},predicateValues:be.map(function(ot){return X(ot.get(vt),st)})}}function at(vt,st){for(var ot=0,it=be.length;ot=st},re.$observe("min",function(Ie){Ie!==vt&&(st=je(Ie),vt=Ie,ne.$validate())})}if(L(re.max)||re.ngMax){var ot=re.max||Ae(re.ngMax)(ue),it=je(ot);ne.$validators.max=function(Ie){return!ut(Ie)||R(it)||P(Ie)<=it},re.$observe("max",function(Ie){Ie!==ot&&(it=je(Ie),ot=Ie,ne.$validate())})}function ut(Ie){return Ie&&!(Ie.getTime&&Ie.getTime()!==Ie.getTime())}function je(Ie){return L(Ie)&&!xe(Ie)?Xe(Ie)||void 0:Ie}function Xe(Ie,Ne){var Be=ne.$options.getOption("timezone");at&&at!==Be&&(Ne=et(Ne,mt(at)));var tt=P(Ie,Ne);return!isNaN(tt)&&Be&&(tt=Dt(tt,Be)),tt}function Le(Ie,Ne){var Be=H;Fe&&ae(ne.$options.getOption("timeSecondsFormat"))&&(Be=H.replace("ss.sss",ne.$options.getOption("timeSecondsFormat")).replace(/:$/,""));var tt=Ee("date")(Ie,Be,Ne);return Fe&&ne.$options.getOption("timeStripZeroSeconds")&&(tt=tt.replace(/(?::00)?(?:\.000)?$/,"")),tt}}}function Hl(n,y,P,H,X){var ue=y[0],ie=H.$$hasNativeValidators=Y(ue.validity);ie&&H.$parsers.push(function(re){var ne=y.prop(T)||{};if(ne.badInput||ne.typeMismatch){H.$$parserName=X;return}return re})}function uc(n){n.$parsers.push(function(y){if(n.$isEmpty(y))return null;if(ve.test(y))return parseFloat(y);n.$$parserName="number"}),n.$formatters.push(function(y){if(!n.$isEmpty(y)){if(!fe(y))throw Jo("numfmt","Expected `{0}` to be a number",y);y=y.toString()}return y})}function zr(n){return L(n)&&!fe(n)&&(n=parseFloat(n)),l(n)?void 0:n}function Ul(n){return(n|0)===n}function jl(n){var y=n.toString(),P=y.indexOf(".");if(P===-1){if(-1=ne},P.$observe("min",function(Oe){Oe!==me&&(ne=zr(Oe),me=Oe,H.$validate())})}if(L(P.max)||P.ngMax){var be=P.max||re(P.ngMax)(n),Ee=zr(be);H.$validators.max=function(Oe,at){return H.$isEmpty(at)||R(Ee)||at<=Ee},P.$observe("max",function(Oe){Oe!==be&&(Ee=zr(Oe),be=Oe,H.$validate())})}if(L(P.step)||P.ngStep){var Ae=P.step||re(P.ngStep)(n),Fe=zr(Ae);H.$validators.step=function(Oe,at){return H.$isEmpty(at)||R(Fe)||dc(at,ne||0,Fe)},P.$observe("step",function(Oe){Oe!==Ae&&(Fe=zr(Oe),Ae=Oe,H.$validate())})}}function au(n,y,P,H,X,ue){Hl(n,y,P,H,"range"),uc(H),ho(n,y,P,H,X,ue);var ie=H.$$hasNativeValidators&&y[0].type==="range",re=ie?0:void 0,ne=ie?100:void 0,me=ie?1:void 0,be=y[0].validity,Ee=L(P.min),Ae=L(P.max),Fe=L(P.step),Oe=H.$render;H.$render=ie&&L(be.rangeUnderflow)&&L(be.rangeOverflow)?function(){Oe(),H.$setViewValue(y.val())}:Oe,Ee&&(re=zr(P.min),H.$validators.min=ie?function(){return!0}:function(ut,je){return H.$isEmpty(je)||R(re)||je>=re},at("min",vt)),Ae&&(ne=zr(P.max),H.$validators.max=ie?function(){return!0}:function(ut,je){return H.$isEmpty(je)||R(ne)||je<=ne},at("max",st)),Fe&&(me=zr(P.step),H.$validators.step=ie?function(){return!be.stepMismatch}:function(ut,je){return H.$isEmpty(je)||R(me)||dc(je,re||0,me)},at("step",ot));function at(it,ut){y.attr(it,P[it]);var je=P[it];P.$observe(it,function(Le){Le!==je&&(je=Le,ut(Le))})}function vt(it){if(re=zr(it),!l(H.$modelValue))if(ie){var ut=y.val();re>ut&&(ut=re,y.val(ut)),H.$setViewValue(ut)}else H.$validate()}function st(it){if(ne=zr(it),!l(H.$modelValue))if(ie){var ut=y.val();ne0||be[Xe])&&(be[Xe]=(be[Xe]||0)+ut,be[Xe]===+(ut>0)&&je.push(Xe))}),je.join(" ")}function st(it){it===y?Fe(Ae):Oe(Ae),Ee=it}function ot(it){Ee===y&&at(Ae,it),Ae=it}}}}];function H(ie,re){if(!ie||!ie.length)return[];if(!re||!re.length)return ie;var ne=[];e:for(var me=0;me0?this.$$pendingDebounce=this.$$timeout(function(){P.$commitViewValue()},y):this.$$rootScope.$$phase?this.$commitViewValue():this.$$scope.$apply(function(){P.$commitViewValue()})},$overrideModelOptions:function(n){this.$options=this.$options.createChild(n),this.$$setUpdateOnEvents()},$processModelValue:function(){var n=this.$$format();this.$viewValue!==n&&(this.$$updateEmptyClasses(n),this.$viewValue=this.$$lastCommittedViewValue=n,this.$render(),this.$$runValidators(this.$modelValue,this.$viewValue,b))},$$format:function(){for(var n=this.$formatters,y=n.length,P=this.$modelValue;y--;)P=n[y](P);return P},$$setModelValue:function(n){this.$modelValue=this.$$rawModelValue=n,this.$$parserValid=void 0,this.$processModelValue()},$$setUpdateOnEvents:function(){this.$$updateEvents&&this.$$element.off(this.$$updateEvents,this.$$updateEventHandler),this.$$updateEvents=this.$options.getOption("updateOn"),this.$$updateEvents&&this.$$element.on(this.$$updateEvents,this.$$updateEventHandler)},$$updateEventHandler:function(n){this.$$debounceViewValueCommit(n&&n.type)}};function Tu(n){n.$$scope.$watch(function(P){var H=n.$$ngModelGet(P);return H!==n.$modelValue&&(n.$modelValue===n.$modelValue||H===H)&&n.$$setModelValue(H),H})}Li({clazz:ns,set:function(n,y){n[y]=!0},unset:function(n,y){delete n[y]}});var Iu=["$rootScope",function(n){return{restrict:"A",require:["ngModel","^?form","^?ngModelOptions"],controller:ns,priority:1,compile:function(P){return P.addClass(po).addClass(Vl).addClass(Ko),{pre:function(X,ue,ie,re){var ne=re[0],me=re[1]||ne.$$parentForm,be=re[2];be&&(ne.$options=be.$options),ne.$$initGetterSetters(),me.$addControl(ne),ie.$observe("name",function(Ee){ne.$name!==Ee&&ne.$$parentForm.$$renameControl(ne,Ee)}),X.$on("$destroy",function(){ne.$$parentForm.$removeControl(ne)})},post:function(X,ue,ie,re){var ne=re[0];ne.$$setUpdateOnEvents();function me(){ne.$setTouched()}ue.on("blur",function(){ne.$touched||(n.$$phase?X.$evalAsync(me):X.$apply(me))})}}}}}],rs,Pu=/(\s+|^)default(\s+|$)/;function Wl(n){this.$$options=n}Wl.prototype={getOption:function(n){return this.$$options[n]},createChild:function(n){var y=!1;return n=t({},n),e(n,function(P,H){P==="$inherit"?H==="*"?y=!0:(n[H]=this.$$options[H],H==="updateOn"&&(n.updateOnDefault=this.$$options.updateOnDefault)):H==="updateOn"&&(n.updateOnDefault=!1,n[H]=$e(P.replace(Pu,function(){return n.updateOnDefault=!0," "})))},this),y&&(delete n["*"],wc(n,this.$$options)),wc(n,rs.$$options),new Wl(n)}},rs=new Wl({updateOn:"",updateOnDefault:!0,debounce:0,getterSetter:!1,allowInvalid:!1,timezone:null});var Du=function(){n.$inject=["$attrs","$scope"];function n(y,P){this.$$attrs=y,this.$$scope=P}return n.prototype={$onInit:function(){var y=this.parentCtrl?this.parentCtrl.$options:rs,P=this.$$scope.$eval(this.$$attrs.ngModelOptions);this.$options=y.createChild(P)}},{restrict:"A",priority:10,require:{parentCtrl:"?^^ngModelOptions"},bindToController:!0,controller:n}};function wc(n,y){e(y,function(P,H){L(n[H])||(n[H]=P)})}var Lu=vi({terminal:!0,priority:1e3}),Mu=I("ngOptions"),$u=/^\s*([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+group\s+by\s+([\s\S]+?))?(?:\s+disable\s+when\s+([\s\S]+?))?\s+for\s+(?:([$\w][$\w]*)|(?:\(\s*([$\w][$\w]*)\s*,\s*([$\w][$\w]*)\s*\)))\s+in\s+([\s\S]+?)(?:\s+track\s+by\s+([\s\S]+?))?$/,Fu=["$compile","$document","$parse",function(n,y,P){function H(re,ne,me){var be=re.match($u);if(!be)throw Mu("iexp","Expected expression in form of '_select_ (as _label_)? for (_key_,)?_value_ in _collection_' but got '{0}'. Element: {1}",re,wt(ne));var Ee=be[5]||be[7],Ae=be[6],Fe=/ as /.test(be[0])&&be[1],Oe=be[9],at=P(be[2]?be[1]:Ee),vt=Fe&&P(Fe),st=vt||at,ot=Oe&&P(Oe),it=Oe?function(rt,gt){return ot(me,gt)}:function(gt){return Wr(gt)},ut=function(rt,gt){return it(rt,Be(rt,gt))},je=P(be[2]||be[1]),Xe=P(be[3]||""),Le=P(be[4]||""),Ie=P(be[8]),Ne={},Be=Ae?function(rt,gt){return Ne[Ae]=gt,Ne[Ee]=rt,Ne}:function(rt){return Ne[Ee]=rt,Ne};function tt(rt,gt,xt,Rt,_t){this.selectValue=rt,this.viewValue=gt,this.label=xt,this.group=Rt,this.disabled=_t}function dt(rt){var gt;if(!Ae&&h(rt))gt=rt;else{gt=[];for(var xt in rt)rt.hasOwnProperty(xt)&&xt.charAt(0)!=="$"&>.push(xt)}return gt}return{trackBy:Oe,getTrackByValue:ut,getWatchables:P(Ie,function(rt){var gt=[];rt=rt||[];for(var xt=dt(rt),Rt=xt.length,_t=0;_t=0;tt--){var dt=it.items[tt];L(dt.group)?Ei(dt.element.parentNode):Ei(dt.element)}it=ut.getOptions();var rt={};if(it.items.forEach(function(_t){var Pt;L(_t.group)?(Pt=rt[_t.group],Pt||(Pt=ue.cloneNode(!1),je.appendChild(Pt),Pt.label=_t.group===null?"null":_t.group,rt[_t.group]=Pt),Xe(_t,Pt)):Xe(_t,je)}),ne[0].appendChild(je),Ae.$render(),!Ae.$isEmpty(Be)){var gt=Ee.readValue(),xt=ut.trackBy||Fe;(xt?!Mt(Be,gt):Be!==gt)&&(Ae.$setViewValue(gt),Ae.$render())}}}return{restrict:"A",terminal:!0,require:["select","ngModel"],link:{pre:function(ne,me,be,Ee){Ee[0].registerOption=b},post:ie}}}],Ou=["$locale","$interpolate","$log",function(n,y,P){var H=/{}/g,X=/^when(Minus)?(.+)$/;return{link:function(ue,ie,re){var ne=re.count,me=re.$attr.when&&ie.attr(re.$attr.when),be=re.offset||0,Ee=ue.$eval(me)||{},Ae={},Fe=y.startSymbol(),Oe=y.endSymbol(),at=Fe+ne+"-"+be+Oe,vt=p.noop,st;e(re,function(it,ut){var je=X.exec(ut);if(je){var Xe=(je[1]?"-":"")+x(je[2]);Ee[Xe]=ie.attr(re.$attr[ut])}}),e(Ee,function(it,ut){Ae[ut]=y(it.replace(H,at))}),ue.$watch(ne,function(ut){var je=parseFloat(ut),Xe=l(je);if(!Xe&&!(je in Ee)&&(je=n.pluralCat(je-be)),je!==st&&!(Xe&&l(st))){vt();var Le=Ae[je];R(Le)?(ut!=null&&P.debug("ngPluralize: no rule defined for '"+je+"' in "+me),vt=b,ot()):vt=ue.$watch(Le,ot),st=je}});function ot(it){ie.text(it||"")}}}}],_c=I("ngRef"),Nu=["$parse",function(n){return{priority:-1,restrict:"A",compile:function(y,P){var H=Or(ct(y)),X=n(P.ngRef),ue=X.assign||function(){throw _c("nonassign",'Expression in ngRef="{0}" is non-assignable!',P.ngRef)};return function(ie,re,ne){var me;if(ne.hasOwnProperty("ngRefRead")){if(ne.ngRefRead==="$element")me=re;else if(me=re.data("$"+ne.ngRefRead+"Controller"),!me)throw _c("noctrl",'The controller for ngRefRead="{0}" could not be found on ngRef="{1}"',ne.ngRefRead,P.ngRef)}else me=re.data("$"+H+"Controller");me=me||re,ue(ie,me),re.on("$destroy",function(){X(ie)===me&&ue(ie,null)})}}}}],Bu=["$parse","$animate","$compile",function(n,y,P){var H="$$NG_REMOVED",X=I("ngRepeat"),ue=function(be,Ee,Ae,Fe,Oe,at,vt){be[Ae]=Fe,Oe&&(be[Oe]=at),be.$index=Ee,be.$first=Ee===0,be.$last=Ee===vt-1,be.$middle=!(be.$first||be.$last),be.$odd=!(be.$even=(Ee&1)===0)},ie=function(be){return be.clone[0]},re=function(be){return be.clone[be.clone.length-1]},ne=function(be,Ee,Ae){return Wr(Ae)},me=function(be,Ee){return Ee};return{restrict:"A",multiElement:!0,transclude:"element",priority:1e3,terminal:!0,$$tlb:!0,compile:function(Ee,Ae){var Fe=Ae.ngRepeat,Oe=P.$$createComment("end ngRepeat",Fe),at=Fe.match(/^\s*([\s\S]+?)\s+in\s+([\s\S]+?)(?:\s+as\s+([\s\S]+?))?(?:\s+track\s+by\s+([\s\S]+?))?\s*$/);if(!at)throw X("iexp","Expected expression in form of '_item_ in _collection_[ track by _id_]' but got '{0}'.",Fe);var vt=at[1],st=at[2],ot=at[3],it=at[4];if(at=vt.match(/^(?:(\s*[$\w]+)|\(\s*([$\w]+)\s*,\s*([$\w]+)\s*\))$/),!at)throw X("iidexp","'_item_' in '_item_ in _collection_' should be an identifier or '(_key_, _value_)' expression, but got '{0}'.",vt);var ut=at[3]||at[1],je=at[2];if(ot&&(!/^[$a-zA-Z_][$a-zA-Z0-9_]*$/.test(ot)||/^(null|undefined|this|\$index|\$first|\$middle|\$last|\$even|\$odd|\$parent|\$root|\$id)$/.test(ot)))throw X("badident","alias '{0}' is invalid --- must be a valid JS identifier which is not a reserved name.",ot);var Xe;if(it){var Le={$id:Wr},Ie=n(it);Xe=function(Ne,Be,tt,dt){return je&&(Le[je]=Be),Le[ut]=tt,Le.$index=dt,Ie(Ne,Le)}}return function(Be,tt,dt,rt,gt){var xt=Ht();Be.$watchCollection(st,function(_t){var Pt,Zt,Gt=tt[0],dn,Sn=Ht(),kn,Dn,qn,Un,pr,nr,ur,Vn,$i;if(ot&&(Be[ot]=_t),h(_t))nr=_t,pr=Xe||ne;else{pr=Xe||me,nr=[];for(var Fi in _t)_.call(_t,Fi)&&Fi.charAt(0)!=="$"&&nr.push(Fi)}for(kn=nr.length,Vn=new Array(kn),Pt=0;Pt=ie}}}}}];function Rc(n,y,P){if(n){if(ae(n)&&(n=new RegExp("^"+n+"$")),!n.test)throw I("ngPattern")("noregexp","Expected {0} to be a RegExp but was {1}. Element: {2}",y,n,wt(P));return n}}function is(n){var y=a(n);return l(y)?-1:y}if(we.angular.bootstrap){we.console&&console.log("WARNING: Tried to load AngularJS more than once.");return}ar(),Je(p),p.module("ngLocale",[],["$provide",function(n){var y={ZERO:"zero",ONE:"one",TWO:"two",FEW:"few",MANY:"many",OTHER:"other"};function P(X){X=X+"";var ue=X.indexOf(".");return ue==-1?0:X.length-ue-1}function H(X,ue){var ie=ue;ie===void 0&&(ie=Math.min(P(X),3));var re=Math.pow(10,ie),ne=(X*re|0)%re;return{v:ie,f:ne}}n.value("$locale",{DATETIME_FORMATS:{AMPMS:["AM","PM"],DAY:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],ERANAMES:["Before Christ","Anno Domini"],ERAS:["BC","AD"],FIRSTDAYOFWEEK:6,MONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],SHORTDAY:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],SHORTMONTH:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],STANDALONEMONTH:["January","February","March","April","May","June","July","August","September","October","November","December"],WEEKENDRANGE:[5,6],fullDate:"EEEE, MMMM d, y",longDate:"MMMM d, y",medium:"MMM d, y h:mm:ss a",mediumDate:"MMM d, y",mediumTime:"h:mm:ss a",short:"M/d/yy h:mm a",shortDate:"M/d/yy",shortTime:"h:mm a"},NUMBER_FORMATS:{CURRENCY_SYM:"$",DECIMAL_SEP:".",GROUP_SEP:",",PATTERNS:[{gSize:3,lgSize:3,maxFrac:3,minFrac:0,minInt:1,negPre:"-",negSuf:"",posPre:"",posSuf:""},{gSize:3,lgSize:3,maxFrac:2,minFrac:2,minInt:1,negPre:"-\xA4",negSuf:"",posPre:"\xA4",posSuf:""}]},id:"en-us",localeID:"en_US",pluralCat:function(X,ue){var ie=X|0,re=H(X,ue);return ie==1&&re.v==0?y.ONE:y.OTHER}})}]),g(function(){rn(we.document,Xn)})})(window);!window.angular.$$csp().noInlineStyle&&window.angular.element(document.head).prepend(window.angular.element("
`),we.put("ui-grid/uiGridMenuItem",``),we.put("ui-grid/uiGridRenderContainer",``),we.put("ui-grid/uiGridViewport",'
'),we.put("ui-grid/cellEditor",`
`),we.put("ui-grid/dropdownEditor",`
`),we.put("ui-grid/fileChooserEditor",`
`),we.put("ui-grid/emptyBaseLayerContainer",'
'),we.put("ui-grid/expandableRow",`
`),we.put("ui-grid/expandableRowHeader",`
`),we.put("ui-grid/expandableScrollFiller",`
 
`),we.put("ui-grid/expandableTopRowHeader",`
`),we.put("ui-grid/csvLink",'LINK_LABEL'),we.put("ui-grid/importerMenuItem",'
  • '),we.put("ui-grid/importerMenuItemContainer","
    "),we.put("ui-grid/pagination",`
    {{ 1 + paginationApi.getFirstRowIndex() }} - {{ 1 + paginationApi.getLastRowIndex() }} {{paginationOf}} {{grid.options.totalItems}} {{totalItemsLabel}}
    `),we.put("ui-grid/columnResizer",'
    '),we.put("ui-grid/gridFooterSelectedItems",'({{"search.selectedItems" | t}} {{grid.selection.selectedCount}})'),we.put("ui-grid/selectionHeaderCell",'
    '),we.put("ui-grid/selectionRowHeader",'
    '),we.put("ui-grid/selectionRowHeaderButtons",``),we.put("ui-grid/selectionSelectAllButtons",``),we.put("ui-grid/treeBaseExpandAllButtons",'
    '),we.put("ui-grid/treeBaseHeaderCell",'
    '),we.put("ui-grid/treeBaseRowHeader",'
    '),we.put("ui-grid/treeBaseRowHeaderButtons",`
     
    `),we.put("ui-grid/cellTitleValidator",'
    {{COL_FIELD CUSTOM_FILTERS}}
    '),we.put("ui-grid/cellTooltipValidator",'
    {{COL_FIELD CUSTOM_FILTERS}}
    ')}]);(function(){"use strict";var we=angular.module("ui.grid.resizeColumns",["ui.grid"]);we.service("uiGridResizeColumnsService",["gridUtil","$q","$rootScope",function(Q,k,O){return{defaultGridOptions:function(I){I.enableColumnResizing=I.enableColumnResizing!==!1,I.enableColumnResize===!1&&(I.enableColumnResizing=!1)},colResizerColumnBuilder:function(I,D,T){var _=[];return I.enableColumnResizing=I.enableColumnResizing===void 0?T.enableColumnResizing:I.enableColumnResizing,I.enableColumnResize===!1&&(I.enableColumnResizing=!1),k.all(_)},registerPublicApi:function(I){var D={events:{colResizable:{columnSizeChanged:function(T,_){}}}};I.api.registerEventsFromObject(D.events)},fireColumnSizeChanged:function(I,D,T){O.$applyAsync(function(){I.api.colResizable?I.api.colResizable.raise.columnSizeChanged(D,T):Q.logError("The resizeable api is not registered, this may indicate that you've included the module but not added the 'ui-grid-resize-columns' directive to your grid definition. Cannot raise any events.")})},findTargetCol:function(I,D,T){var _=I.getRenderContainer();if(D==="left"){var x=_.visibleColumnCache.indexOf(I);return x===0?_.visibleColumnCache[0]:_.visibleColumnCache[x-1*T]}else return I}}}]),we.directive("uiGridResizeColumns",["gridUtil","uiGridResizeColumnsService",function(Q,k){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(O,I,D,T){k.defaultGridOptions(T.grid.options),T.grid.registerColumnBuilder(k.colResizerColumnBuilder),k.registerPublicApi(T.grid)},post:function(O,I,D,T){}}}}}]),we.directive("uiGridHeaderCell",["gridUtil","$templateCache","$compile","$q","uiGridResizeColumnsService","uiGridConstants",function(Q,k,O,I,D,T){return{priority:-10,require:"^uiGrid",compile:function(){return{post:function(_,x,d,M){var g=M.grid;if(g.options.enableColumnResizing){var F=k.get("ui-grid/columnResizer"),N=1;g.isRTL()&&(_.position="left",N=-1);var J=function(){for(var U=x[0].getElementsByClassName("ui-grid-column-resizer"),A=0;A');return{priority:0,scope:{col:"=",position:"@",renderIndex:"="},require:"?^uiGrid",link:function(T,_,x,d){var M=0,g=0,F=0,N=1;d.grid.isRTL()&&(T.position="left",N=-1),T.position==="left"?_.addClass("left"):T.position==="right"&&_.addClass("right");function J(h){d.grid.refreshCanvas(!0).then(function(){d.grid.queueGridRefresh()})}function pe(h,e){var o=e;return h.minWidth&&oh.maxWidth&&(o=h.maxWidth),o}function m(h,e){h.originalEvent&&(h=h.originalEvent),h.preventDefault(),g=(h.targetTouches?h.targetTouches[0]:h).clientX-F,g<0?g=0:g>d.grid.gridWidth&&(g=d.grid.gridWidth);var o=I.findTargetCol(T.col,T.position,N);if(o.colDef.enableColumnResizing!==!1){d.grid.element.hasClass("column-resizing")||d.grid.element.addClass("column-resizing");var i=g-M,c=parseInt(o.drawnWidth+i*N,10);g=g+(pe(o,c)-c)*N,D.css({left:g+"px"}),d.fireEvent(O.events.ITEM_DRAGGING)}}function U(h){h.originalEvent&&(h=h.originalEvent),h.preventDefault(),d.grid.element.removeClass("column-resizing"),D.remove(),g=(h.changedTouches?h.changedTouches[0]:h).clientX-F;var e=g-M;if(e===0){w(),p();return}var o=I.findTargetCol(T.col,T.position,N);if(o.colDef.enableColumnResizing!==!1){var i=parseInt(o.drawnWidth+e*N,10);o.width=pe(o,i),o.hasCustomWidth=!0,J(e),I.fireColumnSizeChanged(d.grid,o.colDef,e),w(),p()}}var A=function(h,e){h.originalEvent&&(h=h.originalEvent),h.stopPropagation(),F=d.grid.element[0].getBoundingClientRect().left,M=(h.targetTouches?h.targetTouches[0]:h).clientX-F,d.grid.element.append(D),D.css({left:M}),h.type==="touchstart"?(Q.on("touchend",U),Q.on("touchmove",m),_.off("mousedown",A)):(Q.on("mouseup",U),Q.on("mousemove",m),_.off("touchstart",A))},p=function(){_.on("mousedown",A),_.on("touchstart",A)},w=function(){Q.off("mouseup",U),Q.off("touchend",U),Q.off("mousemove",m),Q.off("touchmove",m),_.off("mousedown",A),_.off("touchstart",A)};p();var v=function(h,e){h.stopPropagation();var o=I.findTargetCol(T.col,T.position,N);if(o.colDef.enableColumnResizing!==!1){var i=0,c=k.closestElm(_,".ui-grid-render-container"),u=c.querySelectorAll("."+O.COL_CLASS_PREFIX+o.uid+" .ui-grid-cell-contents");Array.prototype.forEach.call(u,function(r){var a;angular.element(r).parent().hasClass("ui-grid-header-cell")&&(a=angular.element(r).parent()[0].querySelectorAll(".ui-grid-column-menu-button")),k.fakeElement(r,{},function(l){var f=angular.element(l);f.attr("style","float: left");var b=k.elementWidth(f)+2;if(a){var C=k.elementWidth(a);b=b+C}b>i&&(i=b)})});var s=pe(o,i),t=s-o.drawnWidth;o.width=s,o.hasCustomWidth=!0,J(t),I.fireColumnSizeChanged(d.grid,o.colDef,t)}};_.on("dblclick",v),_.on("$destroy",function(){_.off("dblclick",v),w()})}}}])})();angular.module("ui.grid.resizeColumns").run(["$templateCache",function(we){"use strict";we.put("ui-grid/columnResizer",'
    ')}]);(function(){"use strict";var we=angular.module("ui.grid.selection",["ui.grid"]);we.constant("uiGridSelectionConstants",{featureName:"selection",selectionRowHeaderColName:"selectionRowHeaderCol"}),angular.module("ui.grid").config(["$provide",function(Q){Q.decorator("GridRow",["$delegate",function(k){return k.prototype.setSelected=function(O){O!==this.isSelected&&(this.isSelected=O,this.grid.selection.selectedCount+=O?1:-1)},k.prototype.setFocused=function(O){O!==this.isFocused&&(this.grid.selection.focusedRow&&(this.grid.selection.focusedRow.isFocused=!1),this.grid.selection.focusedRow=O?this:null,this.isFocused=O)},k}])}]),we.service("uiGridSelectionService",function(){var Q={initializeGrid:function(k){k.selection={lastSelectedRow:null,focusedRow:null,selectAll:!1},k.selection.selectedCount=0,Q.defaultGridOptions(k.options);var O={events:{selection:{rowFocusChanged:function(I,D,T){},rowSelectionChanged:function(I,D,T){},rowSelectionChangedBatch:function(I,D,T){}}},methods:{selection:{toggleRowSelection:function(I,D){var T=k.getRow(I);T!=null&&T!==null&&Q.toggleRowSelection(k,T,D,k.options.multiSelect,k.options.noUnselect,!0)},selectRow:function(I,D){var T=k.getRow(I);T!=null&&T!==null&&!T.isSelected&&Q.toggleRowSelection(k,T,D,k.options.multiSelect,k.options.noUnselect,!0)},selectRowByVisibleIndex:function(I,D){var T=k.renderContainers.body.visibleRowCache[I];T!=null&&T!==null&&typeof T!="undefined"&&!T.isSelected&&Q.toggleRowSelection(k,T,D,k.options.multiSelect,k.options.noUnselect,!1)},selectRowByKey:function(I,D,T,_,x){var d=k.findRowByKey(I,D,T,x);d!=null&&d!==null&&typeof d!="undefined"&&!d.isSelected&&Q.toggleRowSelection(k,d,_,k.options.multiSelect,k.options.noUnselect,!1)},unSelectRow:function(I,D){var T=k.getRow(I);T!=null&&T!==null&&T.isSelected&&Q.toggleRowSelection(k,T,D,k.options.multiSelect,k.options.noUnselect,!0)},unSelectRowByVisibleIndex:function(I,D){var T=k.renderContainers.body.visibleRowCache[I];T!=null&&T!==null&&typeof T!="undefined"&&T.isSelected&&Q.toggleRowSelection(k,T,D,k.options.multiSelect,k.options.noUnselect,!1)},unSelectRowByKey:function(I,D,T,_,x){var d=k.findRowByKey(I,D,T,x);d!=null&&d!==null&&typeof d!="undefined"&&d.isSelected&&Q.toggleRowSelection(k,d,_,k.options.multiSelect,k.options.noUnselect,!1)},selectAllRows:function(I){if(k.options.multiSelect!==!1){var D=[];k.rows.forEach(function(T){!T.isSelected&&T.enableSelection!==!1&&k.options.isRowSelectable(T)!==!1&&(T.setSelected(!0),Q.decideRaiseSelectionEvent(k,T,D,I))}),k.selection.selectAll=!0,Q.decideRaiseSelectionBatchEvent(k,D,I)}},selectAllVisibleRows:function(I){if(k.options.multiSelect!==!1){var D=[];k.rows.forEach(function(T){T.visible?!T.isSelected&&T.enableSelection!==!1&&k.options.isRowSelectable(T)!==!1&&(T.setSelected(!0),Q.decideRaiseSelectionEvent(k,T,D,I)):T.isSelected&&(T.setSelected(!1),Q.decideRaiseSelectionEvent(k,T,D,I))}),k.selection.selectAll=!0,Q.decideRaiseSelectionBatchEvent(k,D,I)}},clearSelectedRows:function(I){Q.clearSelectedRows(k,I)},getSelectedRows:function(){return Q.mapAndFilterRowsByEntity(Q.getSelectedRows(k))},getUnSelectedRows:function(){return Q.mapAndFilterRowsByEntity(Q.getUnSelectedRows(k))},getSelectedGridRows:function(){return Q.getSelectedRows(k)},getUnSelectedGridRows:function(){return Q.getUnSelectedRows(k)},getSelectedCount:function(){return k.selection.selectedCount},setMultiSelect:function(I){k.options.multiSelect=I},setModifierKeysToMultiSelect:function(I){k.options.modifierKeysToMultiSelect=I},getSelectAllState:function(){return k.selection.selectAll}}}};k.api.registerEventsFromObject(O.events),k.api.registerMethodsFromObject(O.methods)},defaultGridOptions:function(k){k.enableRowSelection=k.enableRowSelection!==!1,k.multiSelect=k.multiSelect!==!1,k.noUnselect=k.noUnselect===!0,k.modifierKeysToMultiSelect=k.modifierKeysToMultiSelect===!0,k.enableRowHeaderSelection=k.enableRowHeaderSelection!==!1,typeof k.enableFullRowSelection=="undefined"&&(k.enableFullRowSelection=!k.enableRowHeaderSelection),k.enableFocusRowOnRowHeaderClick=k.enableFocusRowOnRowHeaderClick!==!1||!k.enableRowHeaderSelection,k.enableSelectRowOnFocus=k.enableSelectRowOnFocus!==!1,k.enableSelectAll=k.enableSelectAll!==!1,k.enableSelectionBatchEvent=k.enableSelectionBatchEvent!==!1,k.selectionRowHeaderWidth=angular.isDefined(k.selectionRowHeaderWidth)?k.selectionRowHeaderWidth:30,k.enableFooterTotalSelected=k.enableFooterTotalSelected!==!1,k.isRowSelectable=angular.isDefined(k.isRowSelectable)?k.isRowSelectable:angular.noop},toggleRowSelection:function(k,O,I,D,T,_){if(O.enableSelection!==!1){_===void 0&&(_=!0);var x=O.isSelected;D||(x?Q.getSelectedRows(k).length>1&&(x=!1,Q.clearSelectedRows(k,I)):Q.clearSelectedRows(k,I)),!(x&&T)&&(_||O.visible)&&(O.setSelected(!x),O.isSelected===!0&&(k.selection.lastSelectedRow=O),k.selection.selectAll=k.rows.length===Q.getSelectedRows(k).length,k.api.selection.raise.rowSelectionChanged(O,I))}},shiftSelect:function(k,O,I,D){if(D){var T=Q.getSelectedRows(k),_=T.length>0?k.renderContainers.body.visibleRowCache.indexOf(k.selection.lastSelectedRow):0,x=k.renderContainers.body.visibleRowCache.indexOf(O);if(_>x){var d=_;_=x,x=d}for(var M=[],g=_;g<=x;g++){var F=k.renderContainers.body.visibleRowCache[g];F&&!F.isSelected&&F.enableSelection!==!1&&(F.setSelected(!0),k.selection.lastSelectedRow=F,Q.decideRaiseSelectionEvent(k,F,M,I))}Q.decideRaiseSelectionBatchEvent(k,M,I)}},getSelectedRows:function(k){return k.rows.filter(function(O){return O.isSelected})},getUnSelectedRows:function(k){return k.rows.filter(function(O){return!O.isSelected})},mapAndFilterRowsByEntity:function(k){return typeof k.reduce=="function"?k.reduce(function(O,I){return(I.entity.hasOwnProperty("$$hashKey")||!angular.isObject(I.entity))&&O.push(I.entity),O},[]):k.filter(function(O){return O.entity.hasOwnProperty("$$hashKey")||!angular.isObject(O.entity)}).map(function(O){return O.entity})},clearSelectedRows:function(k,O){var I=[];Q.getSelectedRows(k).forEach(function(D){D.isSelected&&D.enableSelection!==!1&&(D.setSelected(!1),Q.decideRaiseSelectionEvent(k,D,I,O))}),k.selection.selectAll=!1,k.selection.selectedCount=0,Q.decideRaiseSelectionBatchEvent(k,I,O)},decideRaiseSelectionEvent:function(k,O,I,D){k.options.enableSelectionBatchEvent?I.push(O):k.api.selection.raise.rowSelectionChanged(O,D)},decideRaiseSelectionBatchEvent:function(k,O,I){O.length>0&&k.api.selection.raise.rowSelectionChangedBatch(O,I)}};return Q}),we.directive("uiGridSelection",["i18nService","uiGridSelectionConstants","uiGridSelectionService","uiGridConstants",function(Q,k,O,I){return{replace:!0,priority:0,require:"^uiGrid",scope:!1,compile:function(){return{pre:function(D,T,_,x){if(O.initializeGrid(x.grid),x.grid.options.enableRowHeaderSelection){var d={name:k.selectionRowHeaderColName,displayName:Q.getSafeText("selection.displayName"),width:x.grid.options.selectionRowHeaderWidth,minWidth:10,cellTemplate:"ui-grid/selectionRowHeader",headerCellTemplate:"ui-grid/selectionHeaderCell",enableColumnResizing:!1,enableColumnMenu:!1,exporterSuppressExport:!0,allowCellFocus:!0};x.grid.addRowHeaderColumn(d,0)}var M=!1,g=function(J){return J.forEach(function(pe){pe.enableSelection=x.grid.options.isRowSelectable(pe)}),J},F=function(){x.grid.options.isRowSelectable!==angular.noop&&M!==!0&&(x.grid.registerRowsProcessor(g,500),M=!0)};F();var N=x.grid.registerDataChangeCallback(F,[I.dataChange.OPTIONS]);D.$on("$destroy",N)},post:function(D,T,_,x){}}}}}]),we.directive("uiGridSelectionRowHeaderButtons",["$templateCache","uiGridSelectionService","gridUtil",function(Q,k,O){return{replace:!0,restrict:"E",template:Q.get("ui-grid/selectionRowHeaderButtons"),scope:!0,require:"^uiGrid",link:function(I,D,T,_){var x=_.grid;I.selectButtonClick=M,I.selectButtonKeyDown=d,O.detectBrowser()==="ie"&&D.on("mousedown",g);function d(F,N){(N.keyCode===32||N.keyCode===13)&&(N.preventDefault(),M(F,N))}function M(F,N){if(N.stopPropagation(),N.shiftKey)k.shiftSelect(x,F,N,x.options.multiSelect);else if(N.ctrlKey||N.metaKey)k.toggleRowSelection(x,F,N,x.options.multiSelect,x.options.noUnselect,!1);else if(F.groupHeader){k.toggleRowSelection(x,F,N,x.options.multiSelect,x.options.noUnselect,!1);for(var J=0;J({{"search.selectedItems" | t}} {{grid.selection.selectedCount}})
    '),we.put("ui-grid/selectionHeaderCell",'
    '),we.put("ui-grid/selectionRowHeader",'
    '),we.put("ui-grid/selectionRowHeaderButtons",``),we.put("ui-grid/selectionSelectAllButtons",``)}]);window.XMLHttpRequest&&!(window.FileAPI&&FileAPI.shouldLoad)&&(window.XMLHttpRequest.prototype.setRequestHeader=(function(we){return function(Q,k){if(Q==="__setXHR_"){var O=k(this);O instanceof Function&&O(this)}else we.apply(this,arguments)}})(window.XMLHttpRequest.prototype.setRequestHeader));var wr=angular.module("ngFileUpload",[]);wr.version="12.2.13";wr.service("UploadBase",["$http","$q","$timeout",function(we,Q,k){var O=this;O.promisesCount=0,this.isResumeSupported=function(){return window.Blob&&window.Blob.prototype.slice};var I=this.isResumeSupported();function D(_){_.method=_.method||"POST",_.headers=_.headers||{};var x=_._deferred=_._deferred||Q.defer(),d=x.promise;function M(N){x.notify&&x.notify(N),d.progressFunc&&k(function(){d.progressFunc(N)})}function g(N){return _._start!=null&&I?{loaded:N.loaded+_._start,total:_._file&&_._file.size||N.total,type:N.type,config:_,lengthComputable:!0,target:N.target}:N}_.disableProgress||(_.headers.__setXHR_=function(){return function(N){!N||!N.upload||!N.upload.addEventListener||(_.__XHR=N,_.xhrFn&&_.xhrFn(N),N.upload.addEventListener("progress",function(J){J.config=_,M(g(J))},!1),N.upload.addEventListener("load",function(J){J.lengthComputable&&(J.config=_,M(g(J)))},!1))}});function F(){we(_).then(function(N){if(I&&_._chunkSize&&!_._finished&&_._file){var J=_._file&&_._file.size||0;M({loaded:Math.min(_._end,J),total:J,config:_,type:"progress"}),O.upload(_,!0)}else _._finished&&delete _._finished,x.resolve(N)},function(N){x.reject(N)},function(N){x.notify(N)})}return I?_._chunkSize&&_._end&&!_._finished?(_._start=_._end,_._end+=_._chunkSize,F()):_.resumeSizeUrl?we.get(_.resumeSizeUrl).then(function(N){_.resumeSizeResponseReader?_._start=_.resumeSizeResponseReader(N.data):_._start=parseInt((N.data.size==null?N.data:N.data.size).toString()),_._chunkSize&&(_._end=_._start+_._chunkSize),F()},function(N){throw N}):_.resumeSize?_.resumeSize().then(function(N){_._start=N,_._chunkSize&&(_._end=_._start+_._chunkSize),F()},function(N){throw N}):(_._chunkSize&&(_._start=0,_._end=_._start+_._chunkSize),F()):F(),d.success=function(N){return d.then(function(J){N(J.data,J.status,J.headers,_)}),d},d.error=function(N){return d.then(null,function(J){N(J.data,J.status,J.headers,_)}),d},d.progress=function(N){return d.progressFunc=N,d.then(null,null,function(J){N(J)}),d},d.abort=d.pause=function(){return _.__XHR&&k(function(){_.__XHR.abort()}),d},d.xhr=function(N){return _.xhrFn=(function(J){return function(){J&&J.apply(d,arguments),N.apply(d,arguments)}})(_.xhrFn),d},O.promisesCount++,d.finally&&d.finally instanceof Function&&d.finally(function(){O.promisesCount--}),d}this.isUploadInProgress=function(){return O.promisesCount>0},this.rename=function(_,x){return _.ngfName=x,_},this.jsonBlob=function(_){_!=null&&!angular.isString(_)&&(_=JSON.stringify(_));var x=new window.Blob([_],{type:"application/json"});return x._ngfBlob=!0,x},this.json=function(_){return angular.toJson(_)};function T(_){var x={};for(var d in _)_.hasOwnProperty(d)&&(x[d]=_[d]);return x}this.isFile=function(_){return _!=null&&(_ instanceof window.Blob||_.flashId&&_.name&&_.size)},this.upload=function(_,x){function d(F,N){if(F._ngfBlob)return F;if(_._file=_._file||F,_._start!=null&&I){_._end&&_._end>=F.size&&(_._finished=!0,_._end=F.size);var J=F.slice(_._start,_._end||F.size);return J.name=F.name,J.ngfName=F.ngfName,_._chunkSize&&(N.append("_chunkSize",_._chunkSize),N.append("_currentChunkSize",_._end-_._start),N.append("_chunkNumber",Math.floor(_._start/_._chunkSize)),N.append("_totalSize",_._file.size)),J}return F}function M(F,N,J){if(N!==void 0)if(angular.isDate(N)&&(N=N.toISOString()),angular.isString(N))F.append(J,N);else if(O.isFile(N)){var pe=d(N,F),m=J.split(",");m[1]&&(pe.ngfName=m[1].replace(/^\s+|\s+$/g,""),J=m[0]),_._fileKey=_._fileKey||J,F.append(J,pe,pe.ngfName||pe.name)}else if(angular.isObject(N)){if(N.$$ngfCircularDetection)throw"ngFileUpload: Circular reference in config.data. Make sure specified data for Upload.upload() has no circular reference: "+J;N.$$ngfCircularDetection=!0;try{for(var U in N)if(N.hasOwnProperty(U)&&U!=="$$ngfCircularDetection"){var A=_.objectKey==null?"[i]":_.objectKey;N.length&&parseInt(U)>-1&&(A=_.arrayKey==null?A:_.arrayKey),M(F,N[U],J+A.replace(/[ik]/g,U))}}finally{delete N.$$ngfCircularDetection}}else F.append(J,N)}function g(){_._chunkSize=O.translateScalars(_.resumeChunkSize),_._chunkSize=_._chunkSize?parseInt(_._chunkSize.toString()):null,_.headers=_.headers||{},_.headers["Content-Type"]=void 0,_.transformRequest=_.transformRequest?angular.isArray(_.transformRequest)?_.transformRequest:[_.transformRequest]:[],_.transformRequest.push(function(F){var N=new window.FormData,J;F=F||_.fields||{},_.file&&(F.file=_.file);for(J in F)if(F.hasOwnProperty(J)){var pe=F[J];_.formDataAppender?_.formDataAppender(N,J,pe):M(N,pe,J)}return N})}return x||(_=T(_)),_._isDigested||(_._isDigested=!0,g()),D(_)},this.http=function(_){return _=T(_),_.transformRequest=_.transformRequest||function(x){return window.ArrayBuffer&&x instanceof window.ArrayBuffer||x instanceof window.Blob?x:we.defaults.transformRequest[0].apply(this,arguments)},_._chunkSize=O.translateScalars(_.resumeChunkSize),_._chunkSize=_._chunkSize?parseInt(_._chunkSize.toString()):null,D(_)},this.translateScalars=function(_){if(angular.isString(_)){if(_.search(/kb/i)===_.length-2)return parseFloat(_.substring(0,_.length-2)*1024);if(_.search(/mb/i)===_.length-2)return parseFloat(_.substring(0,_.length-2)*1048576);if(_.search(/gb/i)===_.length-2)return parseFloat(_.substring(0,_.length-2)*1073741824);if(_.search(/b/i)===_.length-1)return parseFloat(_.substring(0,_.length-1));if(_.search(/s/i)===_.length-1)return parseFloat(_.substring(0,_.length-1));if(_.search(/m/i)===_.length-1)return parseFloat(_.substring(0,_.length-1)*60);if(_.search(/h/i)===_.length-1)return parseFloat(_.substring(0,_.length-1)*3600)}return _},this.urlToBlob=function(_){var x=Q.defer();return we({url:_,method:"get",responseType:"arraybuffer"}).then(function(d){var M=new Uint8Array(d.data),g=d.headers("content-type")||"image/WebP",F=new window.Blob([M],{type:g}),N=_.match(/.*\/(.+?)(\?.*)?$/);N.length>1&&(F.name=N[1]),x.resolve(F)},function(d){x.reject(d)}),x.promise},this.setDefaults=function(_){this.defaults=_||{}},this.defaults={},this.version=wr.version}]);wr.service("Upload",["$parse","$timeout","$compile","$q","UploadExif",function(we,Q,k,O,I){var D=I;D.getAttrWithDefaults=function(d,M){if(d[M]!=null)return d[M];var g=D.defaults[M];return g==null||angular.isString(g)?g:JSON.stringify(g)},D.attrGetter=function(d,M,g,F){var N=this.getAttrWithDefaults(M,d);if(g)try{return F?we(N)(g,F):we(N)(g)}catch(J){if(d.search(/min|max|pattern/i))return N;throw J}else return N},D.shouldUpdateOn=function(d,M,g){var F=D.attrGetter("ngfModelOptions",M,g);return F&&F.updateOn?F.updateOn.split(" ").indexOf(d)>-1:!0},D.emptyPromise=function(){var d=O.defer(),M=arguments;return Q(function(){d.resolve.apply(d,M)}),d.promise},D.rejectPromise=function(){var d=O.defer(),M=arguments;return Q(function(){d.reject.apply(d,M)}),d.promise},D.happyPromise=function(d,M){var g=O.defer();return d.then(function(F){g.resolve(F)},function(F){Q(function(){throw F}),g.resolve(M)}),g.promise};function T(d,M,g){var F=[D.emptyPromise()];return angular.forEach(d,function(N,J){N.type.indexOf("image/jpeg")===0&&D.attrGetter("ngfFixOrientation",M,g,{$file:N})&&F.push(D.happyPromise(D.applyExifRotation(N),N).then(function(pe){d.splice(J,1,pe)}))}),O.all(F)}function _(d,M,g,F){var N=D.attrGetter("ngfResize",M,g);if(!N||!D.isResizeSupported()||!d.length)return D.emptyPromise();if(N instanceof Function){var J=O.defer();return N(d).then(function(pe){x(pe,d,M,g,F).then(function(m){J.resolve(m)},function(m){J.reject(m)})},function(pe){J.reject(pe)})}else return x(N,d,M,g,F)}function x(d,M,g,F,N){var J=[D.emptyPromise()];function pe(U,A){if(U.type.indexOf("image")===0){if(d.pattern&&!D.validatePattern(U,d.pattern))return;d.resizeIf=function(w,v){return D.attrGetter("ngfResizeIf",g,F,{$width:w,$height:v,$file:U})};var p=D.resize(U,d);J.push(p),p.then(function(w){M.splice(A,1,w)},function(w){U.$error="resize",(U.$errorMessages=U.$errorMessages||{}).resize=!0,U.$errorParam=(w?(w.message?w.message:w)+": ":"")+(U&&U.name),N.$ngfValidations.push({name:"resize",valid:!1}),D.applyModelValidation(N,M)})}}for(var m=0;m-1&&(h.splice(b,1),v.push(f)),r()}}})}p=M.$$ngfPrevValidFiles||[],w=M.$$ngfPrevInvalidFiles||[],d&&d.$modelValue&&(p=o(d.$modelValue));var c=D.attrGetter("ngfKeep",M,g);U=(N||[]).slice(0),(c==="distinct"||D.attrGetter("ngfKeepDistinct",M,g)===!0)&&e(M,g);var u=!c&&!D.attrGetter("ngfMultiple",M,g)&&!D.attrGetter("multiple",M);if(!(c&&!U.length)){D.attrGetter("ngfBeforeModelChange",M,g,{$files:N,$file:N&&N.length?N[0]:null,$newFiles:U,$duplicateFiles:A,$event:J});var s=D.attrGetter("ngfValidateAfterResize",M,g),t=D.attrGetter("ngfModelOptions",M,g);D.validate(U,c?p.length:0,d,M,g).then(function(r){pe?m(U,[],N,A,u):((!t||!t.allowInvalid)&&!s?(h=r.validFiles,v=r.invalidFiles):h=U,D.attrGetter("ngfFixOrientation",M,g)&&D.isExifSupported()?T(h,M,g).then(function(){i()}):i())})}},D}]);wr.directive("ngfSelect",["$parse","$timeout","$compile","Upload",function(we,Q,k,O){var I=[];function D(_){var x=_.match(/Android[^\d]*(\d+)\.(\d+)/);if(x&&x.length>2){var d=O.defaults.androidFixMinorVersion||4;return parseInt(x[1])<4||parseInt(x[1])===d&&parseInt(x[2])'),r=angular.element("");return r.css("visibility","hidden").css("position","absolute").css("overflow","hidden").css("width","0px").css("height","0px").css("border","none").css("margin","0px").css("padding","0px").attr("tabindex","-1"),w(t,r),I.push({el:x,ref:r}),document.body.appendChild(r.append(t)[0]),t}function h(t){if(x.attr("disabled"))return!1;if(!pe("ngfSelectDisabled",_)){var r=i(t);if(r!=null)return r;u(t);try{!m()&&!document.body.contains(c[0])&&(I.push({el:x,ref:c.parent()}),document.body.appendChild(c.parent()[0]),c.bind("change",A))}catch{}return D(navigator.userAgent)?setTimeout(function(){c[0].click()},0):c[0].click(),!1}}var e=0,o=0;function i(t){var r=t.changedTouches||t.originalEvent&&t.originalEvent.changedTouches;if(r){if(t.type==="touchstart")return o=r[0].clientX,e=r[0].clientY,!0;if(t.type==="touchend"){var a=r[0].clientX,l=r[0].clientY;if(Math.abs(a-o)>20||Math.abs(l-e)>20)return t.stopPropagation(),t.preventDefault(),!1}return!0}}var c=x;function u(t){J.shouldUpdateOn("click",d,_)&&c.val()&&(c.val(null),J.updateModel(M,d,_,U(),null,t,!0))}m()||(c=v()),c.bind("change",A),m()?x.bind("click",u):x.bind("click touchstart touchend",h);function s(t){if(c&&!c.attr("__ngf_ie10_Fix_")){if(!c[0].parentNode){c=null;return}t.preventDefault(),t.stopPropagation(),c.unbind("click");var r=c.clone();return c.replaceWith(r),c=r,c.attr("__ngf_ie10_Fix_","true"),c.bind("change",A),c.bind("click",s),c[0].click(),!1}else c.removeAttr("__ngf_ie10_Fix_")}navigator.appVersion.indexOf("MSIE 10")!==-1&&c.bind("click",s),M&&M.$formatters.push(function(t){return(t==null||t.length===0)&&c.val()&&c.val(null),t}),_.$on("$destroy",function(){m()||c.parent().remove(),angular.forEach(p,function(t){t()})}),F(function(){for(var t=0;tN||D.blobUrls.length>J)&&D.blobUrls.length>1;){var pe=D.blobUrls.splice(0,1)[0];M.revokeObjectURL(pe.url),D.blobUrlsTotalSize-=pe.size}}})}else{var F=new FileReader;F.onload=function(N){O(function(){T.$ngfDataUrl=N.target.result,d.resolve(N.target.result,T),O(function(){delete T.$ngfDataUrl},1e3)})},F.onerror=function(){O(function(){T.$ngfDataUrl="",d.reject()})},F.readAsDataURL(T)}}else O(function(){T[_?"$ngfDataUrl":"$ngfBlobUrl"]="",d.reject()})}),_?x=T.$$ngfDataUrlPromise=d.promise:x=T.$$ngfBlobUrlPromise=d.promise,x.finally(function(){delete T[_?"$$ngfDataUrlPromise":"$$ngfBlobUrlPromise"]}),x},D}]);function we(k){return k.tagName.toLowerCase()==="img"?"image":k.tagName.toLowerCase()==="audio"?"audio":k.tagName.toLowerCase()==="video"?"video":/./}function Q(k,O,I,D,T,_,x,d){function M(g){var F=k.attrGetter("ngfNoObjectUrl",T,I);k.dataUrl(g,F).finally(function(){O(function(){var N=(F?g.$ngfDataUrl:g.$ngfBlobUrl)||g.$ngfDataUrl;d?D.css("background-image","url('"+(N||"")+"')"):D.attr("src",N),N?D.removeClass("ng-hide"):D.addClass("ng-hide")})})}O(function(){var g=I.$watch(T[_],function(F){var N=x;if(_==="ngfThumbnail"&&(N||(N={width:D[0].naturalWidth||D[0].clientWidth,height:D[0].naturalHeight||D[0].clientHeight}),N.width===0&&window.getComputedStyle)){var J=getComputedStyle(D[0]);J.width&&J.width.indexOf("px")>-1&&J.height&&J.height.indexOf("px")>-1&&(N={width:parseInt(J.width.slice(0,-2)),height:parseInt(J.height.slice(0,-2))})}if(angular.isString(F))return D.removeClass("ng-hide"),d?D.css("background-image","url('"+F+"')"):D.attr("src",F);F&&F.type&&F.type.search(we(D[0]))===0&&(!d||F.type.indexOf("image")===0)?N&&k.isResizeSupported()?(N.resizeIf=function(pe,m){return k.attrGetter("ngfResizeIf",T,I,{$width:pe,$height:m,$file:F})},k.resize(F,N).then(function(pe){M(pe)},function(pe){throw pe})):M(F):D.addClass("ng-hide")});I.$on("$destroy",function(){g()})})}wr.directive("ngfSrc",["Upload","$timeout",function(k,O){return{restrict:"AE",link:function(I,D,T){Q(k,O,I,D,T,"ngfSrc",k.attrGetter("ngfResize",T,I),!1)}}}]),wr.directive("ngfBackground",["Upload","$timeout",function(k,O){return{restrict:"AE",link:function(I,D,T){Q(k,O,I,D,T,"ngfBackground",k.attrGetter("ngfResize",T,I),!0)}}}]),wr.directive("ngfThumbnail",["Upload","$timeout",function(k,O){return{restrict:"AE",link:function(I,D,T){var _=k.attrGetter("ngfSize",T,I);Q(k,O,I,D,T,"ngfThumbnail",_,k.attrGetter("ngfAsBackground",T,I))}}}]),wr.config(["$compileProvider",function(k){k.imgSrcSanitizationWhitelist&&k.imgSrcSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/),k.aHrefSanitizationWhitelist&&k.aHrefSanitizationWhitelist(/^\s*(https?|ftp|mailto|tel|webcal|local|file|data|blob):/)}]),wr.filter("ngfDataUrl",["UploadDataUrl","$sce",function(k,O){return function(I,D,T){if(angular.isString(I))return O.trustAsResourceUrl(I);var _=I&&((D?I.$ngfDataUrl:I.$ngfBlobUrl)||I.$ngfDataUrl);return I&&!_?(!I.$ngfDataUrlFilterInProgress&&angular.isObject(I)&&(I.$ngfDataUrlFilterInProgress=!0,k.dataUrl(I,D)),""):(I&&delete I.$ngfDataUrlFilterInProgress,(I&&_?T?O.trustAsResourceUrl(_):_:I)||"")}}])})();wr.service("UploadValidate",["UploadDataUrl","$q","$timeout",function(we,Q,k){var O=we;function I(T){var _="",x=[];if(T.length>2&&T[0]==="/"&&T[T.length-1]==="/")_=T.substring(1,T.length-1);else{var d=T.split(",");if(d.length>1)for(var M=0;M|:\\-]","g"),"\\$&")+"$",_=_.replace(/\\\*/g,".*").replace(/\\\?/g,"."))}return{regexp:_,excludes:x}}O.validatePattern=function(T,_){if(!_)return!0;var x=I(_),d=!0;if(x.regexp&&x.regexp.length){var M=new RegExp(x.regexp,"i");d=T.type!=null&&M.test(T.type)||T.name!=null&&M.test(T.name)}for(var g=x.excludes.length;g--;){var F=new RegExp(x.excludes[g],"i");d=d&&(T.type==null||F.test(T.type))&&(T.name==null||F.test(T.name))}return d},O.ratioToFloat=function(T){var _=T.toString(),x=_.search(/[x:]/i);return x>-1?_=parseFloat(_.substring(0,x))/parseFloat(_.substring(x+1)):_=parseFloat(_),_},O.registerModelChangeValidator=function(T,_,x){T&&T.$formatters.push(function(d){if(T.$dirty){var M=d;d&&!angular.isArray(d)&&(M=[d]),O.validate(M,0,T,_,x).then(function(){O.applyModelValidation(T,M)})}return d})};function D(T,_){_!=null&&!T.$dirty&&(T.$setDirty?T.$setDirty():T.$dirty=!0)}return O.applyModelValidation=function(T,_){D(T,_),angular.forEach(T.$ngfValidations,function(x){T.$setValidity(x.name,x.valid)})},O.getValidationAttr=function(T,_,x,d,M){var g="ngf"+x[0].toUpperCase()+x.substr(1),F=O.attrGetter(g,T,_,{$file:M});if(F==null&&(F=O.attrGetter("ngfValidate",T,_,{$file:M}),F)){var N=(d||x).split(".");F=F[N[0]],N.length>1&&(F=F&&F[N[1]])}return F},O.validate=function(T,_,x,d,M){x=x||{},x.$ngfValidations=x.$ngfValidations||[],angular.forEach(x.$ngfValidations,function(w){w.valid=!0});var g=function(w,v){return O.attrGetter(w,d,M,v)},F=(O.attrGetter("ngfIgnoreInvalid",d,M)||"").split(" "),N=O.attrGetter("ngfRunAllValidations",d,M);if(T==null||T.length===0)return O.emptyPromise({validFiles:T,invalidFiles:[]});T=T.length===void 0?[T]:T.slice(0);var J=[];function pe(w,v,h){if(T){for(var e=T.length,o=null;e--;){var i=T[e];if(i){var c=O.getValidationAttr(d,M,w,v,i);c!=null&&(h(i,c,e)||(F.indexOf(w)===-1?(i.$error=w,(i.$errorMessages=i.$errorMessages||{})[w]=!0,i.$errorParam=c,J.indexOf(i)===-1&&J.push(i),N||T.splice(e,1),o=!1):T.splice(e,1)))}}o!==null&&x.$ngfValidations.push({name:w,valid:o})}}pe("pattern",null,O.validatePattern),pe("minSize","size.min",function(w,v){return w.size+.1>=O.translateScalars(v)}),pe("maxSize","size.max",function(w,v){return w.size-.1<=O.translateScalars(v)});var m=0;if(pe("maxTotalSize",null,function(w,v){return m+=w.size,m>O.translateScalars(v)?(T.splice(0,T.length),!1):!0}),pe("validateFn",null,function(w,v){return v===!0||v===null||v===""}),!T.length)return O.emptyPromise({validFiles:[],invalidFiles:J});function U(w,v,h,e,o){function i(s,t,r){function a(l){if(l())if(F.indexOf(w)===-1){if(t.$error=w,(t.$errorMessages=t.$errorMessages||{})[w]=!0,t.$errorParam=r,J.indexOf(t)===-1&&J.push(t),!N){var f=T.indexOf(t);f>-1&&T.splice(f,1)}s.resolve(!1)}else{var b=T.indexOf(t);b>-1&&T.splice(b,1),s.resolve(!0)}else s.resolve(!0)}r!=null?e(t,r).then(function(l){a(function(){return!o(l,r)})},function(){a(function(){return g("ngfValidateForce",{$file:t})})}):s.resolve(!0)}var c=[O.emptyPromise(!0)];T&&(T=T.length===void 0?[T]:T,angular.forEach(T,function(s){var t=Q.defer();if(c.push(t.promise),h&&(s.type==null||s.type.search(h)!==0)){t.resolve(!0);return}w==="dimensions"&&O.attrGetter("ngfDimensions",d)!=null?O.imageDimensions(s).then(function(r){i(t,s,g("ngfDimensions",{$file:s,$width:r.width,$height:r.height}))},function(){t.resolve(!1)}):w==="duration"&&O.attrGetter("ngfDuration",d)!=null?O.mediaDuration(s).then(function(r){i(t,s,g("ngfDuration",{$file:s,$duration:r}))},function(){t.resolve(!1)}):i(t,s,O.getValidationAttr(d,M,w,v,s))}));var u=Q.defer();return Q.all(c).then(function(s){for(var t=!0,r=0;r=v})),p.push(U("maxWidth","width.max",/image/,this.imageDimensions,function(w,v){return w.width<=v})),p.push(U("minWidth","width.min",/image/,this.imageDimensions,function(w,v){return w.width>=v})),p.push(U("dimensions",null,/image/,function(w,v){return O.emptyPromise(v)},function(w){return w})),p.push(U("ratio",null,/image/,this.imageDimensions,function(w,v){for(var h=v.toString().split(","),e=!1,o=0;o-1e-4})),p.push(U("maxDuration","duration.max",/audio|video/,this.mediaDuration,function(w,v){return w<=O.translateScalars(v)})),p.push(U("minDuration","duration.min",/audio|video/,this.mediaDuration,function(w,v){return w>=O.translateScalars(v)})),p.push(U("duration",null,/audio|video/,function(w,v){return O.emptyPromise(v)},function(w){return w})),p.push(U("validateAsyncFn",null,null,function(w,v){return v},function(w){return w===!0||w===null||w===""})),Q.all(p).then(function(){if(N)for(var w=0;w").attr("src",d).css("visibility","hidden").css("position","fixed").css("max-width","none !important").css("max-height","none !important");function g(){var pe=M[0].naturalWidth||M[0].clientWidth,m=M[0].naturalHeight||M[0].clientHeight;M.remove(),T.$ngfWidth=pe,T.$ngfHeight=m,x.resolve({width:pe,height:m})}function F(){M.remove(),x.reject("load error")}M.on("load",g),M.on("error",F);var N=0;function J(){k(function(){M[0].parentNode&&(M[0].clientWidth?g():N++>10?F():J())},1e3)}J(),angular.element(document.getElementsByTagName("body")[0]).append(M)},function(){x.reject("load error")})}),T.$ngfDimensionPromise=x.promise,T.$ngfDimensionPromise.finally(function(){delete T.$ngfDimensionPromise}),T.$ngfDimensionPromise},O.mediaDuration=function(T){if(T.$ngfDuration){var _=Q.defer();return k(function(){_.resolve(T.$ngfDuration)}),_.promise}if(T.$ngfDurationPromise)return T.$ngfDurationPromise;var x=Q.defer();return k(function(){if(T.type.indexOf("audio")!==0&&T.type.indexOf("video")!==0){x.reject("not media");return}O.dataUrl(T).then(function(d){var M=angular.element(T.type.indexOf("audio")===0?"