@ash-qw/dsh-theme-prts 0.1.92 → 0.1.93
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.en.md +23 -34
- package/README.md +23 -36
- package/lib/client.js +1018 -50
- package/package.json +12 -2
- package/src/client/conversation-scale-adapter.js +77 -0
- package/src/client/index.js +18 -3
- package/src/client/operations-shell-v2.js +214 -16
- package/src/client/particle-field-adapter.js +89 -9
- package/src/client/preferences.js +24 -5
- package/src/client/theme-controller-v2.js +609 -16
- package/src/client/theme-settings-workbench.js +69 -2
- package/src/styles/prts.css +362 -5
- package/src/styles/theme-settings-workbench.css +17 -0
package/lib/client.js
CHANGED
|
@@ -3,8 +3,8 @@ window.__ModuleLoader__.load({
|
|
|
3
3
|
factory: (require) => {
|
|
4
4
|
var module = { exports: {} };
|
|
5
5
|
var exports = module.exports;
|
|
6
|
-
const PRTS_VERSION = "0.1.
|
|
7
|
-
const PRTS_CSS = "html[data-dsh-prts]{--prts-canvas: #080a0c; --prts-canvas-elevated: #0d1114; --prts-rail: #060809; --prts-panel: #11161a; --prts-panel-raised: #171d21; --prts-panel-muted: #20272c; --prts-ink: #edf1f2; --prts-muted: #98a3a9; --prts-dim: #68747a; --prts-line: #38434a; --prts-line-strong: #5e6a70; --prts-yellow: #f0c800; --prts-yellow-ink: #161300; --prts-cyan: #5ccddb; --prts-red: #ee625a; --prts-green: #8fcf79; --prts-host-top-inset: 0px; --prts-rail-width: 52px; --prts-nav-width: 52px; --prts-sessions-width: 286px; --prts-sessions-compact: 54px; --prts-workspace-height: 38px; --prts-session-height: 36px; --prts-facility-gap: 7px; --prts-facility-height: var(--prts-workspace-height); --prts-spine-width: 8px; --prts-spine-rest: .25; --prts-spine-travel: 6px; --prts-chamfer: 3px; --prts-radius-control: 3px; --prts-radius-card: 3px; --prts-radius-overlay: 4px; --prts-body: 'Noto Sans SC','Microsoft YaHei UI','Segoe UI',sans-serif; --prts-display: 'Arial Narrow','Noto Sans SC',sans-serif; --prts-mono: 'Roboto Mono','Noto Sans Mono CJK SC',Consolas,monospace; --prts-ease-spring: cubic-bezier(.2,.86,.28,1.16); --prts-ease-snap: cubic-bezier(.22,1,.36,1); --prts-shadow-glass-overlay: 0 18px 48px rgba(0,0,0,.32),inset 0 1px rgba(255,255,255,.06); --prts-glass-border: rgba(119,140,150,.52); --prts-glass-soft-surface: rgba(15,21,25,.82); --prts-glass-standard-surface: rgba(15,21,25,.9); --prts-glass-clear-surface: rgba(15,21,25,.72); --prts-glass-dense: rgba(7,10,12,.94); --prts-active-glass: var(--prts-glass-standard-surface); --prts-active-glass-filter: blur(18px) saturate(145%); color-scheme: dark; accent-color: var(--prts-yellow)}html[data-dsh-prts][data-prts-scheme=\"dark\"]{color-scheme: dark}html[data-dsh-prts][data-prts-scheme=\"light\"]{--prts-canvas: #eef1f3; --prts-canvas-elevated: #e5eaed; --prts-rail: #111518; --prts-panel: #f7f9fa; --prts-panel-raised: #e5eaed; --prts-panel-muted: #d5dde1; --prts-ink: #15191c; --prts-muted: #4f5c63; --prts-dim: #738087; --prts-line: #9eabb1; --prts-line-strong: #65727a; --prts-glass-border: rgba(62,82,92,.48); --prts-glass-soft-surface: rgba(247,250,251,.9); --prts-glass-standard-surface: rgba(244,249,251,.94); --prts-glass-clear-surface: rgba(244,249,251,.78); --prts-glass-dense: rgba(249,251,252,.97); --prts-shadow-glass-overlay: 0 18px 44px rgba(48,63,70,.18),inset 0 1px rgba(255,255,255,.86); color-scheme: light}html[data-dsh-prts][data-prts-glass=\"soft\"]{--prts-active-glass: var(--prts-glass-soft-surface); --prts-active-glass-filter: blur(18px) saturate(145%)}html[data-dsh-prts][data-prts-glass=\"standard\"]{--prts-active-glass: var(--prts-glass-standard-surface); --prts-active-glass-filter: blur(22px) saturate(155%)}html[data-dsh-prts][data-prts-glass=\"clear\"]{--prts-active-glass: var(--prts-glass-clear-surface); --prts-active-glass-filter: blur(28px) saturate(180%)}html[data-dsh-prts][data-prts-glass=\"off\"]{--prts-active-glass: var(--prts-panel); --prts-active-glass-filter: none}html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] ),html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::before,html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::after{box-sizing: border-box}html[data-dsh-prts] body{--dsw-alias-bg-base: var(--prts-canvas); --dsw-alias-bg-layer-1: var(--prts-panel); --dsw-alias-bg-layer-2: var(--prts-panel-raised); --dsw-alias-bg-layer-3: var(--prts-panel-muted); --dsw-alias-label-primary: var(--prts-ink); --dsw-alias-label-secondary: var(--prts-muted); --dsw-alias-border-l2: var(--prts-line); min-height: 100dvh; margin: 0; overflow: hidden; background: var(--prts-canvas); color: var(--prts-ink); font-family: var(--prts-body)}html[data-dsh-prts] ::selection{background: var(--prts-yellow); color: var(--prts-yellow-ink)}html[data-dsh-prts] a{color: var(--prts-cyan); text-underline-offset: 3px}html[data-dsh-prts] [data-prts-shell] :is(button,input,textarea,select),html[data-dsh-prts] [data-prts-theme-settings] :is(button,input,textarea,select){font: inherit}html[data-dsh-prts] button:not([data-slot=\"sidebar.settings\"] button){color: inherit}html[data-dsh-prts] :focus-visible{outline: 2px solid var(--prts-yellow) !important; outline-offset: 2px !important}html[data-dsh-prts] [hidden]{display: none !important}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"]{--prts-nav-width: 0px}html[data-dsh-prts] [data-prts-shell]{position: fixed; z-index: 124; inset: var(--prts-host-top-inset) auto 0 0; width: var(--prts-nav-width); pointer-events: none; font-family: var(--prts-mono)}html[data-dsh-prts] [data-prts-shell] button,html[data-dsh-prts] [data-prts-nav-rail]{pointer-events: auto}html[data-dsh-prts] [data-prts-topbar]{display: none}html[data-dsh-prts] [data-prts-nav-rail]{position: fixed; z-index: 120; inset: var(--prts-host-top-inset) auto 0 0; width: var(--prts-rail-width); display: flex; flex-direction: column; align-items: stretch; border-right: 1px solid #30383d; background: var(--prts-rail); color: #e8edef; box-shadow: 4px 0 18px rgba(0,0,0,.18)}html[data-dsh-prts] [data-prts-rail-launcher]{display: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-nav-rail]{opacity: 0; visibility: hidden; transform: translate3d(-100%,0,0); transition: transform 180ms var(--prts-ease-snap),opacity 120ms ease,visibility 0s linear 180ms; pointer-events: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"][data-prts-rail-open] [data-prts-nav-rail]{opacity: 1; visibility: visible; transform: translate3d(0,0,0); transition-delay: 0s; pointer-events: auto}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"][data-prts-rail-open] [data-prts-rail-launcher]{opacity: 0; visibility: hidden; pointer-events: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]{position: fixed; z-index: 121; top: 50%; left: 0; width: 12px; height: 96px; display: grid; place-items: center; padding: 0; overflow: hidden; border: 1px solid color-mix(in srgb,var(--prts-yellow) 40%,transparent); border-left: 0; border-radius: 0 3px 3px 0; opacity: .34; background: color-mix(in srgb,var(--prts-rail) 86%,transparent); color: var(--prts-yellow); font: 700 8px/1 var(--prts-mono); letter-spacing: .08em; transform: translateY(-50%); transition: width 140ms var(--prts-ease-snap),opacity 120ms ease,background-color 120ms ease; cursor: pointer}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher] > span{opacity: 0; writing-mode: vertical-rl; transition: opacity 100ms ease}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]:is(:hover,:focus-visible){width: 40px; opacity: 1; background: var(--prts-rail)}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]:is(:hover,:focus-visible) > span{opacity: 1}@media (hover: none),(pointer: coarse){html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]{top: calc(var(--prts-host-top-inset) + 12px); width: 40px; height: 40px; opacity: .92; transform: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher] > span{opacity: 1}}html[data-dsh-prts] [data-prts-rail-brand]{height: 64px; display: grid; place-items: center; padding: 8px 5px; border-bottom: 1px solid #30383d; overflow: hidden}html[data-dsh-prts] [data-prts-rail-brand] svg{width: 38px; height: 38px; color: #edf1f2}html[data-dsh-prts] [data-prts-rail-brand] > span{position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0)}html[data-dsh-prts] [data-prts-nav-rail] > button{position: relative; width: 100%; min-height: 52px; display: grid; place-items: center; gap: 2px; padding: 7px 2px 6px; border: 0; border-bottom: 1px solid #242b2f; background: transparent; color: #9fa9ae; cursor: pointer; clip-path: polygon(0 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%)}html[data-dsh-prts] [data-prts-nav-rail] > button::after{content: \"\"; position: absolute; inset: 8px auto 8px 0; width: 2px; background: transparent}html[data-dsh-prts] [data-prts-nav-rail] > button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-nav-rail] > button[aria-expanded=\"true\"]{background: #151a1d; color: #f0f3f4}html[data-dsh-prts] [data-prts-nav-rail] > button[aria-expanded=\"true\"]::after{background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-nav-rail] > button:active{transform: translateY(1px) scale(.98)}html[data-dsh-prts] [data-prts-nav-rail] b{font-size: 15px; line-height: 1}html[data-dsh-prts] [data-prts-nav-rail] small{font-size: 8px; letter-spacing: .04em}html[data-dsh-prts] [data-prts-nav-bottom]{display: grid; margin-top: auto; border-top: 1px solid #30383d}html[data-dsh-prts] [data-prts-connection-indicator]{min-height: 40px; display: grid; place-items: center; gap: 3px; padding: 6px 2px; color: #8c969b; font-size: 7px; text-align: center}html[data-dsh-prts] [data-prts-connection-indicator] i{width: 6px; height: 6px; border: 1px solid currentColor; background: currentColor; transform: rotate(45deg)}html[data-dsh-prts] [data-prts-connection-indicator][data-state=\"connected\"]{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-connection-indicator][data-state=\"disconnected\"]{color: var(--prts-red)}html[data-dsh-prts] [data-prts-scheme-toggle] svg{width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7}html[data-dsh-prts] [data-prts-scheme-current=\"dark\"] [data-prts-scheme-icon=\"light\"],html[data-dsh-prts] [data-prts-scheme-current=\"light\"] [data-prts-scheme-icon=\"dark\"]{display: none}html[data-dsh-prts] [data-prts-region=\"frame\"]{width: calc(100vw - var(--prts-nav-width)); height: calc(100dvh - var(--prts-host-top-inset)); min-height: 0; margin-left: var(--prts-nav-width); display: grid !important; background: var(--prts-canvas)}html[data-dsh-prts] [data-prts-region=\"sessions\"],html[data-dsh-prts] [data-prts-region=\"operation\"]{min-width: 0; min-height: 0}html[data-dsh-prts] [data-prts-region=\"sessions\"]{box-sizing: border-box; position: relative; z-index: 4; overflow: hidden; border-right: 1px solid var(--prts-line); background: var(--prts-panel); transition: opacity 180ms ease}html[data-dsh-prts] [data-prts-region=\"operation\"]{position: relative; z-index: 1; overflow: hidden; background: var(--prts-canvas); color: var(--prts-ink)}html[data-dsh-prts][data-prts-sessions-collapsed] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.workspaces\"],html[data-dsh-prts][data-prts-sessions-collapsed] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.settings\"]{opacity: 0; pointer-events: none}html[data-dsh-prts] [data-prts-region=\"sessions\"] > *,html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar\"]{height: 100%}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-rc7-sidebar-root]{box-sizing: border-box; width: 100% !important; min-width: var(--prts-sessions-width); padding: 14px 10px; overflow-y: auto; background: transparent !important; color: var(--prts-ink)}html[data-dsh-prts] [data-prts-region=\"sessions\"] > * > [data-slot=\"sidebar\"] > :first-child > button[aria-label*=\"new session\" i]{display: none !important}html[data-dsh-prts] [data-prts-workspace-row],html[data-dsh-prts] [data-prts-session-row]{--prts-row-shift: 0px; --prts-row-end-reserve: 29px; --prts-facility-height: var(--prts-workspace-height); position: relative; width: calc(100% - 20px); height: var(--prts-facility-height) !important; min-height: var(--prts-facility-height); display: flex; align-items: center; gap: 0 !important; margin: 0 0 var(--prts-facility-gap) 0; padding: 0 !important; overflow: visible; border: 0 !important; background: transparent !important; color: var(--prts-ink); isolation: isolate}html[data-dsh-prts] [data-prts-session-row]{--prts-facility-height: var(--prts-session-height); margin-left: 8px}@media (max-height: 820px) and (hover: hover) and (pointer: fine){html[data-dsh-prts]{--prts-workspace-height: 34px; --prts-session-height: 32px; --prts-facility-gap: 5px}}html[data-dsh-prts] [data-prts-workspace-row]::before{background: var(--prts-cyan) !important}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"],html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]),html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open]){--prts-row-shift: var(--prts-spine-travel)}html[data-dsh-prts] [data-prts-workspace-row]::before,html[data-dsh-prts] [data-prts-session-row]::before{content: \"\"; position: absolute; z-index: 2; inset: 0 auto 0 0; width: var(--prts-spine-width); background: var(--prts-line-strong); clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px ); transform: scaleX(var(--prts-spine-rest)); transform-origin: left center; transition: transform 220ms var(--prts-ease-spring),background-color 160ms ease}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"]::before,html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open])::before,html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open])::before{transform: scaleX(1)}html[data-dsh-prts] [data-prts-session-row][aria-selected=\"true\"]::before{background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-facility-face]{position: absolute; z-index: -1; inset: 0 0 0 5px; border: 1px solid var(--prts-line); background: var(--prts-panel-raised); clip-path: polygon( 3px 0,calc(50% - 25px) 0,calc(50% - 20px) 3.333px,calc(50% + 20px) 3.333px,calc(50% + 25px) 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px ); transform: translate3d(var(--prts-row-shift),0,0); transition: transform 220ms var(--prts-ease-spring),border-color 160ms ease,background-color 160ms ease; pointer-events: none}html[data-dsh-prts] :is([data-prts-workspace-row],[data-prts-session-row]) [data-prts-facility-face]{right: var(--prts-row-end-reserve)}html[data-dsh-prts] [data-prts-row-title],html[data-dsh-prts] [data-prts-session-row] > span:not([data-prts-facility-face]):not([data-prts-row-projection]):not([data-prts-session-actions]),html[data-dsh-prts] [data-prts-workspace-row] > span:not([data-prts-facility-face]):not([data-prts-row-projection]):not([data-prts-workspace-actions]){position: relative; z-index: 3; min-width: 0; transform: translate3d(var(--prts-row-shift),0,0); transition: transform 220ms var(--prts-ease-spring),color 160ms ease}html[data-dsh-prts] [data-prts-row-title]{flex: 1; overflow: hidden; padding: 0 10px 0 13px; font-size: 12px; font-weight: 650; line-height: var(--prts-facility-height); text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-session-row] [data-prts-row-title]::before{content: attr(data-prts-session-index); margin-right: 8px; color: var(--prts-dim); font-family: var(--prts-mono); font-size: 9px; letter-spacing: .08em}html[data-dsh-prts] [data-prts-workspace-actions],html[data-dsh-prts] [data-prts-session-actions]{position: absolute; z-index: 5; inset: 0 0 auto auto; height: var(--prts-facility-height) !important; align-items: stretch !important; gap: 1px !important; margin: 0 !important; transform: translate3d(var(--prts-row-shift),0,0)}html[data-dsh-prts] [data-prts-workspace-actions]{width: 57px}html[data-dsh-prts] [data-prts-session-actions]{width: 28px}html[data-dsh-prts] [data-prts-workspace-actions] > *,html[data-dsh-prts] [data-prts-session-actions] > *{height: 100% !important}html[data-dsh-prts] [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-actions] button{width: 28px !important; min-width: 28px !important; height: var(--prts-facility-height) !important; min-height: var(--prts-facility-height) !important; display: grid !important; place-items: center; padding: 0 !important; border: 1px solid var(--prts-line) !important; border-radius: 0 !important; background: var(--prts-panel-raised) !important; color: var(--prts-muted) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px); cursor: pointer}html[data-dsh-prts] [data-prts-workspace-actions] button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-session-actions] button:is(:hover,:focus-visible){border-color: var(--prts-yellow) !important; color: var(--prts-yellow) !important}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-session-actions] button{animation: prts-facility-button-dock 520ms both}html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-workspace-actions] > :nth-child(1) button{animation-delay: 55ms}html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-workspace-actions] > :nth-child(2){animation-delay: 125ms}}@keyframes prts-facility-button-dock{0%{opacity: 0; transform: translate3d(34px,0,0) scaleX(.94)}52%{opacity: 1; transform: translate3d(-4px,0,0) scaleX(.96)}72%{transform: translate3d(3px,0,0) scaleX(1.035)}88%{transform: translate3d(-1px,0,0) scaleX(.99)}100%{opacity: 1; transform: translate3d(0,0,0) scaleX(1)}}html[data-dsh-prts] [data-slot=\"conversation\"]{min-width: 0; height: 100%; background: transparent}html[data-dsh-prts] [data-slot=\"conversation.session.header\"]{border-bottom: 1px solid var(--prts-line); background: color-mix(in srgb,var(--prts-canvas-elevated) 92%,transparent); font-family: var(--prts-mono)}html[data-dsh-prts] [data-session-code]{color: var(--prts-yellow); font-size: 11px; letter-spacing: .12em}html[data-dsh-prts] [data-prts-conversation-control=\"header\"]{margin-left: auto}html[data-dsh-prts] [data-conversation-scroll]{position: relative; z-index: 2}html[data-dsh-prts] [data-conversation-scroll]::before{content: \"\"; position: absolute; z-index: -1; top: 28px; bottom: 140px; left: clamp(30px,3.6vw,52px); width: 1px; background: linear-gradient(var(--prts-line-strong),var(--prts-line),transparent)}html[data-dsh-prts] [data-message-role=\"user\"],html[data-dsh-prts] [data-chat-flow-kind=\"user\"]{position: relative; color: var(--prts-ink)}html[data-dsh-prts] [data-message-role=\"user\"]::before,html[data-dsh-prts] [data-chat-flow-kind=\"user\"]::before{content: \"\"; position: absolute; top: 8px; left: calc(clamp(-66px,-4vw,-42px)); width: 11px; height: 11px; border: 2px solid var(--prts-canvas); background: var(--prts-yellow); box-shadow: 0 0 0 1px var(--prts-yellow); transform: rotate(45deg)}html[data-dsh-prts] [data-message-role=\"user\"],html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"]{border: 1px solid var(--prts-line-strong) !important; border-left: 4px solid var(--prts-yellow) !important; border-radius: var(--prts-radius-card) !important; background: var(--prts-panel-raised) !important; color: var(--prts-ink) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px); box-shadow: none !important}html[data-dsh-prts] [data-message-role=\"user\"] :is([data-markdown],[class*=\"markdown\" i]),html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] :is([data-markdown],[class*=\"markdown\" i]){background: transparent !important}html[data-dsh-prts] [data-message-role=\"user\"] :is(pre,table,blockquote),html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] :is(pre,table,blockquote){border: 1px solid var(--prts-line); background: var(--prts-glass-dense)}html[data-dsh-prts] [data-message-role=\"user\"] :is(pre,code),html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] :is(pre,code){font-family: var(--prts-mono) !important}html[data-dsh-prts] [data-message-role=\"user\"] pre,html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] pre{max-width: 100%; overflow: auto; padding: 14px; border-left: 3px solid var(--prts-cyan) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [aria-invalid=\"true\"],html[data-dsh-prts] [data-status=\"error\"],html[data-dsh-prts] [data-status=\"denied\"]{border-color: var(--prts-red) !important; color: var(--prts-red) !important}html[data-dsh-prts] [data-prts-ambient-layer]{position: absolute; z-index: 0; inset: 0; overflow: hidden; opacity: .86; background: radial-gradient(circle at 48% 35%,color-mix(in srgb,var(--prts-cyan) 7%,transparent),transparent 32%),linear-gradient(115deg,transparent 0 42%,color-mix(in srgb,var(--prts-line) 18%,transparent) 42.2% 42.5%,transparent 42.7%),repeating-linear-gradient(0deg,transparent 0 27px,color-mix(in srgb,var(--prts-line) 12%,transparent) 27px 28px); pointer-events: none}html[data-dsh-prts][data-prts-texture=\"restrained\"] [data-prts-ambient-layer]{opacity: .56}html[data-dsh-prts][data-prts-texture=\"off\"] [data-prts-ambient-layer]{display: none}html[data-dsh-prts] [data-prts-particle-layer]{position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; pointer-events: none}html[data-dsh-prts] [data-prts-particle-layer]{opacity: 1; transition: opacity 120ms ease-out}html[data-dsh-prts] [data-prts-resize-shield]{content-visibility: hidden !important; contain-intrinsic-size: auto 800px}html[data-dsh-prts] [data-prts-particle-layer][data-prts-resizing]{opacity: .78; transition: none}html[data-dsh-prts] [data-prts-particle-layer][data-prts-resize-restoring]{opacity: 1; transition: opacity 120ms ease-out}html[data-dsh-prts] [data-prts-ambient-layer][data-prts-resizing]{opacity: .42; background: color-mix(in srgb,var(--prts-panel) 92%,var(--prts-canvas)); transition: none}html[data-dsh-prts] [data-prts-ambient-layer][data-prts-resizing] :is( [data-prts-ambient-glow],[data-prts-session-pickup] ){animation-play-state: paused !important}html[data-dsh-prts] :is( [data-prts-conversation-preview][data-prts-resizing],[data-prts-conversation-history-hint][data-prts-resizing],[data-prts-conversation-history-status][data-prts-resizing],[data-prts-theme-settings][data-prts-resizing],[data-prts-settings-backdrop][data-prts-resizing] ),html[data-dsh-prts] [data-prts-resizing] > [data-composer-card]{backdrop-filter: none !important; -webkit-backdrop-filter: none !important; transition: none !important}html[data-dsh-prts] [data-prts-hero-active]::before{content: \"\"; position: absolute; inset: 0; pointer-events: none}html[data-dsh-prts]{--prts-hero-mark-base: clamp(380px,46%,720px); --prts-hero-mark-size: min(var(--prts-hero-mark-base),42dvh)}html[data-dsh-prts] [data-prts-hero-active] [data-composer-seat],html[data-dsh-prts] [data-prts-hero-active] [data-slot=\"conversation.composer\"]{position: relative; z-index: 5}html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-composer-fallback]{position: relative; border: 1px solid var(--prts-line-strong) !important; border-bottom: 3px solid var(--prts-yellow) !important; border-radius: var(--prts-radius-card) !important; background: var(--prts-active-glass) !important; clip-path: polygon(3px 0,calc(50% - 42px) 0,calc(50% - 37px) 5px,calc(50% + 37px) 5px,calc(50% + 42px) 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px); box-shadow: 0 14px 34px rgba(0,0,0,.18); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-composer-card] textarea,html[data-dsh-prts] [data-prts-composer-fallback] textarea{border: 0 !important; background: transparent !important; color: var(--prts-ink) !important; caret-color: var(--prts-yellow)}html[data-dsh-prts] [data-composer-card] button,html[data-dsh-prts] [data-prts-conversation-control]{border: 1px solid var(--prts-line) !important; border-radius: var(--prts-radius-control) !important; background: var(--prts-panel-raised) !important; color: var(--prts-ink) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px)}html[data-dsh-prts] [data-composer-card] button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-conversation-control]:is(:hover,:focus-visible){border-color: var(--prts-yellow) !important}html[data-dsh-prts] [data-composer-card] button[aria-label*=\"send\" i],html[data-dsh-prts] [data-composer-card] button[type=\"submit\"]{background: var(--prts-yellow) !important; color: var(--prts-yellow-ink) !important}html[data-dsh-prts] [data-composer-card] button:active,html[data-dsh-prts] [data-prts-conversation-control]:active{transform: translateY(1px) scale(.98)}html[data-dsh-prts] [data-produced-files-row] > button[type=\"button\"],html[data-dsh-prts] [data-prts-to-bottom]{min-height: 36px; border: 1px solid var(--prts-line) !important; background: var(--prts-active-glass) !important; color: var(--prts-ink) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px)}html[data-dsh-prts] [data-prts-glass-control=\"model\"],html[data-dsh-prts] [data-prts-glass-control=\"permission\"],html[data-dsh-prts] [data-prts-glass-control=\"preset\"]{border: 1px solid var(--prts-line) !important; border-radius: var(--prts-radius-control) !important; background: var(--prts-active-glass) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-glass-menu],html[data-dsh-prts] [data-prts-floating-glass=\"menu\"],html[data-dsh-prts] [data-prts-floating-glass=\"listbox\"],html[data-dsh-prts] [data-prts-floating-glass=\"popover\"]{border: 1px solid var(--prts-glass-border) !important; border-radius: var(--prts-radius-overlay) !important; background: var(--prts-active-glass) !important; color: var(--prts-ink) !important; box-shadow: var(--prts-shadow-glass-overlay) !important; backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-floating-glass=\"dialog\"]{border: 1px solid var(--prts-glass-border) !important; border-radius: var(--prts-radius-overlay) !important; background: var(--prts-panel) !important; color: var(--prts-ink) !important; box-shadow: var(--prts-shadow-glass-overlay) !important; backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-prts-floating-item]{min-height: 38px; border-radius: var(--prts-radius-control) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-floating-item]:is(:hover,[data-highlighted]){background: var(--prts-panel-muted) !important}html[data-dsh-prts] [data-prts-floating-input]{min-height: 44px; border: 1px solid var(--prts-line) !important; background: var(--prts-panel) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-floating-danger]{color: var(--prts-red) !important}html[data-dsh-prts] [data-prts-floating-scrim]{background: rgba(3,5,6,.62) !important}html[data-dsh-prts-settings] .prts-plugin-settings{width: 100%; display: grid; gap: 16px; color: inherit; font: inherit}html[data-dsh-prts-settings] .prts-plugin-settings__header{display: grid; gap: 5px; padding-bottom: 14px; border-bottom: 1px solid color-mix(in srgb,currentColor 18%,transparent)}html[data-dsh-prts-settings] .prts-plugin-settings__header h3,html[data-dsh-prts-settings] .prts-plugin-settings__header p{margin: 0}html[data-dsh-prts-settings] .prts-plugin-settings__header h3{font-size: 18px; font-weight: 650}html[data-dsh-prts-settings] .prts-plugin-settings__header p,html[data-dsh-prts-settings] .prts-plugin-settings__copy small{color: color-mix(in srgb,currentColor 62%,transparent); font-size: 12px; line-height: 1.5}html[data-dsh-prts-settings] .prts-plugin-settings__safe{margin: 0; padding: 10px 12px; border: 1px solid color-mix(in srgb,#df5750 42%,transparent); border-radius: 8px; background: color-mix(in srgb,#df5750 8%,transparent); color: inherit; font-size: 12px}html[data-dsh-prts-settings] .prts-plugin-settings__list{overflow: hidden; border: 1px solid color-mix(in srgb,currentColor 16%,transparent); border-radius: 10px}html[data-dsh-prts-settings] .prts-plugin-settings__row{min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 12px 14px}html[data-dsh-prts-settings] .prts-plugin-settings__row + .prts-plugin-settings__row{border-top: 1px solid color-mix(in srgb,currentColor 12%,transparent)}html[data-dsh-prts-settings] .prts-plugin-settings__copy{min-width: 0; display: grid; gap: 3px}html[data-dsh-prts-settings] .prts-plugin-settings__copy strong{font-size: 13px; font-weight: 600}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch']{position: relative; width: 42px; height: 24px; flex: 0 0 auto; padding: 0; border: 0; border-radius: 999px; background: color-mix(in srgb,currentColor 18%,transparent); color: inherit; cursor: pointer}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'] > span{position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: currentColor; transition: transform 120ms ease}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'].is-active{background: var(--color-primary,#d9b800); color: #111}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'].is-active > span{transform: translateX(18px)}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch']:disabled{cursor: not-allowed; opacity: .45}@media (prefers-reduced-motion: reduce){html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'] > span{transition: none}}@media (max-width: 640px){html[data-dsh-prts]{--prts-nav-width: 52px}html[data-dsh-prts] [data-conversation-scroll]::before{left: 18px}html[data-dsh-prts] [data-message-role]::before,html[data-dsh-prts] [data-chat-flow-kind]::before{left: -25px}html[data-dsh-prts] [data-slot=\"conversation.session.header\"]{padding-inline: 12px}html[data-dsh-prts-settings] .prts-settings{padding: 12px}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){html[data-dsh-prts] [data-prts-floating-glass],html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-glass-menu]{background: var(--prts-panel) !important}}@media (hover: hover) and (pointer: fine){html[data-dsh-prts] [data-prts-nav-rail] > button:hover b{transform: translateY(-1px)}}@media (prefers-reduced-transparency: reduce){html[data-dsh-prts]{--prts-active-glass: var(--prts-panel); --prts-active-glass-filter: none}}@media (prefers-contrast: more){html[data-dsh-prts]{--prts-line: currentColor; --prts-line-strong: currentColor}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] ),html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::before,html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::after{scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important}}html[data-dsh-prts]{--prts-hero-mark-base: clamp(300px,38%,520px); --prts-hero-mark-size: min(var(--prts-hero-mark-base),32dvh)}html[data-dsh-prts] [data-prts-region=\"sessions\"] > * > [data-slot=\"sidebar\"] > :first-child > button[aria-label*=\"new session\" i]{min-height: 40px; display: grid !important; place-items: center; margin: 0 0 14px; border: 1px solid var(--prts-line) !important; border-radius: var(--prts-radius-card) !important; background: var(--prts-panel-raised) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-rail-brand],html[data-dsh-prts] [data-prts-nav-rail] > button,html[data-dsh-prts] [data-prts-nav-bottom] > button{position: relative; width: 100%; min-width: 0; min-height: 48px; display: grid; place-items: center; padding: 0; border: 0; border-bottom: 1px solid #242b2f; border-radius: 0; background: transparent; color: #aeb8bd !important; cursor: pointer; clip-path: none}html[data-dsh-prts] [data-prts-rail-brand]{height: 64px; border-bottom-color: #30383d}html[data-dsh-prts] [data-prts-rail-brand]:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-rail-brand][aria-expanded=\"true\"],html[data-dsh-prts] [data-prts-nav-rail] > button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-nav-bottom] > button:is(:hover,:focus-visible){background: #151a1d; color: #f3f6f7 !important}html[data-dsh-prts] [data-prts-rail-brand][aria-expanded=\"true\"]::after{content: \"\"; position: absolute; inset: 7px auto 7px 0; width: 2px; background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-nav-rail] small,html[data-dsh-prts] [data-prts-connection-label]{position: absolute; z-index: 180; top: 50%; left: calc(100% + 9px); width: max-content; max-width: 180px; padding: 6px 8px; border: 1px solid #3d474d; border-radius: 3px; opacity: 0; background: #0e1215; color: #eef2f3; font: 700 9px/1.2 var(--prts-mono); letter-spacing: .04em; text-align: left; transform: translate3d(-5px,-50%,0); transition: opacity 130ms ease,transform 160ms var(--prts-ease-snap); pointer-events: none; white-space: nowrap}html[data-dsh-prts] [data-prts-nav-rail] button:is(:hover,:focus-visible) small,html[data-dsh-prts] [data-prts-connection-indicator]:is(:hover,:focus-visible) [data-prts-connection-label]{opacity: 1; transform: translate3d(0,-50%,0)}html[data-dsh-prts] [data-prts-connection-indicator]{position: relative; min-height: 38px; padding: 0; color: #9da8ad}html[data-dsh-prts] [data-prts-nav-bottom] svg,html[data-dsh-prts] [data-prts-nav-bottom] b{display: block; color: currentColor}html[data-dsh-prts] [data-message-role=\"user\"],html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"],html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-composer-fallback],html[data-dsh-prts] [data-composer-card] button,html[data-dsh-prts] [data-prts-conversation-control],html[data-dsh-prts] [data-produced-files-row] > button[type=\"button\"],html[data-dsh-prts] [data-prts-to-bottom]{border-radius: 3px !important; clip-path: none !important}html[data-dsh-prts] [data-prts-facility-face]{right: 0 !important; border: 0 !important; background: var(--prts-line-strong)}html[data-dsh-prts] [data-prts-facility-face]::after{content: \"\"; position: absolute; inset: 1px; background: var(--prts-panel-raised); clip-path: polygon( 3px 0,calc(50% - 25px) 0,calc(50% - 20px) 3.333px,calc(50% + 20px) 3.333px,calc(50% + 25px) 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px )}html[data-dsh-prts] [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-actions] button{border: 1px solid var(--prts-line-strong) !important; border-radius: 3px !important; clip-path: none !important}html[data-dsh-prts] [data-prts-hero-active]{display: grid; grid-template-rows: minmax(220px,1fr) auto; align-content: center; gap: clamp(28px,5dvh,54px); padding-top: 24px; padding-bottom: 34px}html[data-dsh-prts] [data-prts-hero-active] [data-phase=\"hero\"]{min-height: min(36dvh,390px); align-self: end}html[data-dsh-prts] [data-prts-hero-active] [data-composer-seat]{align-self: start; justify-self: center}html[data-dsh-prts]{--prts-hero-mark-base: clamp(320px,42%,580px); --prts-hero-mark-size: min(var(--prts-hero-mark-base),42dvh)}html[data-dsh-prts] [data-prts-region=\"frame\"]{position: relative}html[data-dsh-prts] [data-prts-region=\"frame\"] > [data-shell-overlay]{position: absolute !important; z-index: 120; inset: 0; min-width: 0; min-height: 0; pointer-events: none}html[data-dsh-prts] [data-prts-region=\"frame\"] > [data-shell-overlay] > *{pointer-events: auto}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.settings\"]{opacity: 1; visibility: visible; pointer-events: auto}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.settings\"] > button{color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-workspace-icon]{display: none !important}html[data-dsh-prts] [data-prts-workspace-disclosure]{position: relative; z-index: 4; width: 14px; flex: 0 0 14px; display: grid; place-items: center; margin-left: calc(var(--prts-spine-width) + 4px); color: var(--prts-muted); transform: translate3d(var(--prts-row-shift),0,0); transition: transform 220ms var(--prts-ease-spring),color 160ms ease}html[data-dsh-prts] [data-prts-workspace-row]::before,html[data-dsh-prts] [data-prts-session-row]::before{clip-path: polygon( 1px 0,calc(100% - 1px) 0,100% 1px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 1px),calc(100% - 1px) 100%,1px 100%,0 calc(100% - 1px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 1px ) !important}html[data-dsh-prts] :is([data-prts-workspace-row],[data-prts-session-row]) [data-prts-facility-face]{right: var(--prts-row-end-reserve) !important}html[data-dsh-prts] [data-prts-facility-face]{border: 0 !important; background: var(--prts-line-strong) !important; clip-path: polygon( 1px 0,calc(50% - 25px) 0,calc(50% - 20px) 3.333px,calc(50% + 20px) 3.333px,calc(50% + 25px) 0,calc(100% - 1px) 0,100% 1px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 1px),calc(100% - 1px) 100%,1px 100%,0 calc(100% - 1px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 1px ) !important}html[data-dsh-prts] [data-prts-facility-face]::after{content: \"\"; position: absolute; inset: 1px; background: var(--prts-panel-raised); clip-path: polygon( 0 0,calc(50% - 24px) 0,calc(50% - 19px) 3.333px,calc(50% + 19px) 3.333px,calc(50% + 24px) 0,100% 0,100% calc(50% - 4px),calc(100% - 2px) calc(50% - 2px),calc(100% - 2px) calc(50% + 2px),100% calc(50% + 4px),100% 100%,0 100%,0 calc(50% + 4px),2px calc(50% + 2px),2px calc(50% - 2px),0 calc(50% - 4px) )}html[data-dsh-prts] [data-prts-workspace-actions]{width: 57px !important}html[data-dsh-prts] [data-prts-session-actions]{width: 28px !important}html[data-dsh-prts] [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-actions] button{width: 28px !important; min-width: 28px !important; position: relative; isolation: isolate; overflow: hidden; border: 0 !important; border-radius: 0 !important; background: var(--prts-line) !important; clip-path: polygon( 1px 0,calc(100% - 1px) 0,100% 1px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 1px),calc(100% - 1px) 100%,1px 100%,0 calc(100% - 1px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 1px ) !important}html[data-dsh-prts] [data-prts-workspace-actions] button::before,html[data-dsh-prts] [data-prts-session-actions] button::before{content: \"\"; position: absolute; z-index: -1; inset: 1px; background: var(--prts-panel-raised); clip-path: polygon( 0 0,100% 0,100% calc(50% - 4px),calc(100% - 2px) calc(50% - 2px),calc(100% - 2px) calc(50% + 2px),100% calc(50% + 4px),100% 100%,0 100%,0 calc(50% + 4px),2px calc(50% + 2px),2px calc(50% - 2px),0 calc(50% - 4px) ); pointer-events: none}html[data-dsh-prts] [data-prts-workspace-actions] button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-session-actions] button:is(:hover,:focus-visible){background: var(--prts-yellow) !important}html[data-dsh-prts] [data-prts-session-time]{position: relative; z-index: 3; flex: 0 0 auto; margin-right: 39px; padding-left: 8px; transform: translate3d(var(--prts-row-shift),0,0); transition: opacity 120ms ease,transform 220ms var(--prts-ease-spring)}html[data-dsh-prts] [data-prts-session-row]:hover [data-prts-session-time]{opacity: 0}html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-composer-fallback]{position: relative; isolation: isolate; overflow: visible; border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; clip-path: none !important; backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-composer-card]::before,html[data-dsh-prts] [data-prts-composer-fallback]::before{content: \"\"; position: absolute; z-index: 0; inset: 0; background: var(--prts-line-strong); clip-path: polygon( 3px 0,calc(50% - 42px) 0,calc(50% - 37px) 5px,calc(50% + 37px) 5px,calc(50% + 42px) 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ); box-shadow: 0 14px 34px rgba(0,0,0,.18); pointer-events: none}html[data-dsh-prts] [data-composer-card]::after,html[data-dsh-prts] [data-prts-composer-fallback]::after{content: \"\"; position: absolute; z-index: 1; inset: 1px 1px 3px; background: var(--prts-composer-surface,var(--prts-active-glass)); clip-path: polygon( 2px 0,calc(50% - 41px) 0,calc(50% - 36px) 5px,calc(50% + 36px) 5px,calc(50% + 41px) 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter); pointer-events: none}html[data-dsh-prts] [data-composer-card] > :not([data-prts-composer-signal]),html[data-dsh-prts] [data-prts-composer-fallback] > :not([data-prts-composer-signal]){position: relative; z-index: 2}html[data-dsh-prts] [data-prts-composer-signal]{position: absolute; z-index: 3; inset: 0; overflow: visible; pointer-events: none}html[data-dsh-prts] [data-prts-composer-signal]::before{content: \"\"; position: absolute; left: 50%; background: var(--prts-yellow); opacity: .82; pointer-events: none; transition: transform 160ms var(--prts-ease-snap),opacity 160ms ease}html[data-dsh-prts] [data-prts-composer-signal]::before{bottom: 0; width: calc(100% - 6px); height: 3px; transform: translateX(-50%) scaleX(.16)}html[data-dsh-prts] [data-composer-card]:focus-within,html[data-dsh-prts] [data-prts-composer-fallback]:focus-within{--prts-composer-surface: color-mix(in srgb,var(--prts-active-glass) 94%,var(--prts-ink) 6%)}html[data-dsh-prts] :is([data-composer-card],[data-prts-composer-fallback]):focus-within [data-prts-composer-signal]::before{opacity: 1; transform: translateX(-50%) scaleX(1)}html[data-dsh-prts] [data-composer-card] textarea:focus-visible,html[data-dsh-prts] [data-prts-composer-fallback] textarea:focus-visible{outline: none !important}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-composer-signal]::before{transition: none}}html[data-dsh-prts] [data-prts-theme-settings] :is(input,textarea,select):focus-visible,html[data-dsh-prts] [data-prts-floating-input]:focus-visible{outline: none !important; border-color: var(--prts-yellow) !important; box-shadow: 0 0 0 1px var(--prts-yellow) !important}html[data-dsh-prts] [data-prts-conversation-control=\"header\"]{height: 36px; min-height: 36px; display: inline-flex; align-items: center; gap: 6px; padding: 0 10px}html[data-dsh-prts] [data-prts-conversation-control=\"header\"] svg{width: 16px; height: 16px; flex: 0 0 16px}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] button[aria-label*=\"send\" i],html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] button[type=\"submit\"]{min-width: 40px !important; padding: 0 !important; font-size: 11px}html[data-dsh-prts] [data-prts-hero-active] [data-prts-glass-control=\"action\"]{width: 36px !important; min-width: 36px !important; padding: 0 !important; flex: 0 0 36px}html[data-dsh-prts] :is( [data-composer-card] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-composer-fallback] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-glass-control],[data-prts-conversation-control]:not([data-prts-conversation-control=\"micro\"]),[data-produced-files-row] > button[type=\"button\"] ){--prts-control-outline: var(--prts-line); --prts-control-surface: var(--prts-panel-raised); position: relative; isolation: isolate; overflow: hidden; border: 0 !important; border-radius: 0 !important; background: var(--prts-control-outline) !important; color: var(--prts-ink) !important; clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ) !important}html[data-dsh-prts] :is( [data-composer-card] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-composer-fallback] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-glass-control],[data-prts-conversation-control]:not([data-prts-conversation-control=\"micro\"]),[data-produced-files-row] > button[type=\"button\"] )::before{content: \"\"; position: absolute; z-index: -1; inset: 1px; background: var(--prts-control-surface); clip-path: polygon( 2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); pointer-events: none}html[data-dsh-prts] :is( [data-composer-card] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-composer-fallback] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-glass-control],[data-prts-conversation-control]:not([data-prts-conversation-control=\"micro\"]),[data-produced-files-row] > button[type=\"button\"] ):is(:hover,:focus-visible){--prts-control-outline: var(--prts-yellow)}html[data-dsh-prts] :is( [data-prts-glass-control=\"model\"],[data-prts-glass-control=\"permission\"],[data-prts-glass-control=\"preset\"],[data-prts-conversation-control=\"utility\"],[data-produced-files-row] > button[type=\"button\"] ){--prts-control-surface: var(--prts-active-glass) !important}html[data-dsh-prts] [data-composer-card] button[aria-label*=\"send\" i],html[data-dsh-prts] [data-composer-card] button[type=\"submit\"],html[data-dsh-prts] [data-prts-conversation-control=\"cta\"]{font-size: 11px; --prts-control-outline: var(--prts-yellow) !important; --prts-control-surface: var(--prts-yellow) !important; color: var(--prts-yellow-ink) !important}html[data-dsh-prts] [data-prts-conversation-control=\"danger\"]{--prts-control-outline: var(--prts-red) !important; --prts-control-surface: color-mix(in srgb,var(--prts-red) 14%,var(--prts-panel-raised)) !important; color: var(--prts-red) !important}html[data-dsh-prts] [data-prts-hero-active]{--prts-hero-narrow-spacer: clamp(24px,8dvh,72px); --prts-hero-wide-spacer: clamp(96px,22dvh,340px); min-height: 100%; height: calc(100% - 48px) !important; overflow-y: auto; display: grid; grid-template-columns: minmax(0,1fr); grid-template-rows: minmax(0,1fr) auto min( var(--prts-hero-wide-spacer),max(var(--prts-hero-narrow-spacer),calc(var(--prts-hero-narrow-spacer) + 63vw - 403.2px)) ); align-content: stretch; gap: clamp(24px,calc(5vw - 8px),40px); padding: clamp(18px,calc(1.875vw + 6px),24px) clamp(12px,3vw,42px) 0 clamp(18px,3vw,42px)}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card],html[data-dsh-prts] [data-prts-hero-active] [data-prts-composer-fallback]{width: 100%; margin-inline: auto; padding: 10px 12px}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] textarea,html[data-dsh-prts] [data-prts-hero-active] [data-prts-composer-fallback] textarea{min-height: 64px; line-height: 1.55; resize: vertical}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] button,html[data-dsh-prts] [data-prts-hero-active] [data-prts-glass-control]{min-height: 36px}html[data-dsh-prts] [data-prts-hero-active]::before{margin-top: calc(var(--prts-hero-mark-size) + 44px)}html[data-dsh-prts] [data-prts-hero-active] [data-phase=\"hero\"]{grid-row: 1; min-height: 0; align-self: stretch}html[data-dsh-prts] [data-prts-hero-active] [data-composer-seat]{grid-row: 2; width: min(calc(780px + 32px),100%); min-width: 0 !important; align-self: end; justify-self: center}html[data-dsh-prts] [data-prts-theme-settings]{--prts-settings-text: .875rem; --prts-settings-small: .75rem; --prts-settings-heading: .875rem; position: fixed; z-index: 10000; inset: 50% auto auto 50%; width: min(clamp(50rem,55vw,65rem),calc(100vw - 2rem)); height: auto; max-width: none; max-height: min(60rem,calc(100dvh - 2rem)); container: prts-settings / inline-size; margin: 0; padding: 0; overflow: visible; border: 0; border-radius: 0; background: transparent; color: var(--prts-ink); box-shadow: 0 28px 90px rgba(0,0,0,.46); clip-path: none; opacity: 0; transform: translate(-50%,calc(-50% + 8px)) scale(.992); pointer-events: none; transition: opacity 150ms ease,transform 220ms var(--prts-ease-spring)}html[data-dsh-prts] [data-prts-theme-settings][open]{display: block}html[data-dsh-prts] [data-prts-theme-settings][data-prts-settings-visible]{opacity: 1; transform: translate(-50%,-50%) scale(1); pointer-events: auto}html[data-dsh-prts] [data-prts-theme-settings][data-prts-resizing]{transition: none}html[data-dsh-prts] [data-prts-theme-settings][data-prts-resizing]::backdrop,html[data-dsh-prts] [data-prts-settings-backdrop][data-prts-resizing]{backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-prts-theme-settings][data-prts-resizing] [data-prts-option-sample=\"glass\"]::after{backdrop-filter: none; -webkit-backdrop-filter: none; transition: none}html[data-dsh-prts] [data-prts-theme-settings]::before{content: none}html[data-dsh-prts] [data-prts-theme-settings]::backdrop{background: color-mix(in srgb,var(--prts-canvas) 72%,transparent); backdrop-filter: blur(5px) saturate(.82); -webkit-backdrop-filter: blur(5px) saturate(.82)}html[data-dsh-prts] [data-prts-settings-backdrop]{z-index: 9999; inset: 0; background: color-mix(in srgb,var(--prts-canvas) 72%,transparent); backdrop-filter: blur(5px) saturate(.82); -webkit-backdrop-filter: blur(5px) saturate(.82)}html[data-dsh-prts] [data-prts-settings-frame]{position: relative; height: auto; max-height: inherit; display: grid; grid-template-rows: auto minmax(0,1fr); overflow: hidden; isolation: isolate; border: 1px solid var(--prts-line-strong); background: linear-gradient(125deg,color-mix(in srgb,var(--prts-cyan) 4%,transparent),transparent 34%),var(--prts-panel); clip-path: polygon(4px 0,calc(100% - 38px) 0,100% 38px,100% calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,0 calc(100% - 4px),0 4px)}html[data-dsh-prts] [data-prts-settings-frame]::before{content: \"\"; position: absolute; z-index: 3; top: 0; right: 37px; width: 118px; height: 2px; background: var(--prts-cyan); pointer-events: none}html[data-dsh-prts] [data-prts-theme-settings-header]{display: grid; align-items: center; min-height: 68px; grid-template-columns: minmax(180px,auto) minmax(0,1fr); gap: 14px; padding: 13px 48px 12px 16px; border-bottom: 1px solid var(--prts-line-strong); background: color-mix(in srgb,var(--prts-canvas-elevated) 92%,transparent)}html[data-dsh-prts] [data-prts-theme-settings-header] > span{display: grid; gap: 4px}html[data-dsh-prts] [data-prts-theme-settings-header] small,html[data-dsh-prts] [data-prts-theme-settings] section > header small,html[data-dsh-prts] [data-prts-theme-settings] summary small,html[data-dsh-prts] [data-prts-settings-actions] small{color: var(--prts-muted); font: 700 8px/1.3 var(--prts-mono); letter-spacing: .08em}html[data-dsh-prts] [data-prts-theme-settings-header] strong{font: 800 19px/1 var(--prts-display); letter-spacing: .07em}html[data-dsh-prts] [data-prts-settings-summary]{display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px}html[data-dsh-prts] [data-prts-settings-summary] span{min-height: 22px; padding: 4px 7px; box-shadow: inset 0 0 0 1px var(--prts-line); background: color-mix(in srgb,var(--prts-panel-raised) 86%,transparent); color: var(--prts-cyan); font: 700 8px/1 var(--prts-mono); clip-path: polygon(2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px)}html[data-dsh-prts] [data-prts-theme-settings-close]{position: absolute; z-index: 5; top: 13px; right: 13px; width: 36px; height: 36px; color: var(--prts-ink)}html[data-dsh-prts] [data-prts-theme-settings-scroll]{min-height: 0; overflow-y: auto; padding: 12px; scrollbar-gutter: stable}html[data-dsh-prts] [data-prts-settings-presets],html[data-dsh-prts] [data-prts-settings-common],html[data-dsh-prts] [data-prts-settings-advanced],html[data-dsh-prts] [data-prts-settings-actions]{position: relative; margin: 0; overflow: hidden; border: 0; border-bottom: 1px solid var(--prts-line-strong); background: color-mix(in srgb,var(--prts-canvas-elevated) 82%,transparent); clip-path: none}html[data-dsh-prts] [data-prts-settings-presets] > header,html[data-dsh-prts] [data-prts-settings-common] > header{min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 11px; border-bottom: 1px solid color-mix(in srgb,var(--prts-line) 72%,transparent)}html[data-dsh-prts] [data-prts-settings-presets] > header span,html[data-dsh-prts] [data-prts-settings-common] > header span,html[data-dsh-prts] [data-prts-settings-advanced] summary > span{display: flex; align-items: baseline; gap: 9px}html[data-dsh-prts] [data-prts-settings-presets] > header strong,html[data-dsh-prts] [data-prts-settings-common] > header strong,html[data-dsh-prts] [data-prts-settings-advanced] summary strong{font: 800 13px/1 var(--prts-display); letter-spacing: .05em}html[data-dsh-prts] [data-prts-advanced-summary]{pointer-events: none; color: var(--prts-cyan); font: 800 8px/1 var(--prts-mono); letter-spacing: .06em}html[data-dsh-prts] [data-prts-settings-presets],html[data-dsh-prts] [data-prts-settings-common],html[data-dsh-prts] [data-prts-settings-advanced],html[data-dsh-prts] [data-prts-settings-actions]{border-inline: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-settings-presets]{border-top: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-settings-presets] > div{display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0; padding: 0}html[data-dsh-prts] [data-prts-preset-card]{display: grid; text-align: left; min-height: 66px; align-content: center; gap: 6px; padding: 11px 12px !important; border-right: 1px solid var(--prts-line) !important; position: relative; overflow: hidden; box-shadow: none; background: transparent !important; clip-path: none}html[data-dsh-prts] [data-prts-preset-card]:last-child{border-right: 0 !important}html[data-dsh-prts] [data-prts-preset-card] strong{font-size: 12px}html[data-dsh-prts] [data-prts-preset-card] span{overflow: hidden; font-size: 8px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-preset-card].is-selected{box-shadow: inset 0 -2px 0 var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 9%,transparent) !important}html[data-dsh-prts] [data-prts-settings-common-grid]{display: grid; grid-template-columns: repeat(2,minmax(0,1fr))}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{min-height: 50px; grid-template-columns: 94px minmax(0,1fr); align-items: center; gap: 8px; padding: 7px 10px; border-right: 1px solid var(--prts-line); border-bottom: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:nth-child(2n){border-right: 0}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:nth-last-child(-n + 2){border-bottom: 0}html[data-dsh-prts] [data-prts-setting-row] > div{min-width: 0; display: flex; gap: 4px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row] > span{min-width: 0; display: grid; gap: 3px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row] > span > strong{font: 700 9px/1.1 var(--prts-display)}html[data-dsh-prts] [data-prts-setting-note]{color: var(--prts-yellow); font: 700 7px/1.25 var(--prts-mono); letter-spacing: 0}html[data-dsh-prts] [data-prts-settings-common] button[data-prts-setting-key]{min-width: 0; flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 5px}html[data-dsh-prts] [data-prts-option-sample]{position: relative; width: 22px; height: 14px; flex: 0 0 22px; overflow: hidden; border: 1px solid color-mix(in srgb,currentColor 45%,var(--prts-line)); background: var(--prts-canvas)}html[data-dsh-prts] [data-prts-option-sample=\"texture\"][data-prts-option-sample-value=\"off\"]{background: linear-gradient(var(--prts-line),var(--prts-line)) 50% 50% / 12px 1px no-repeat,var(--prts-canvas)}html[data-dsh-prts] [data-prts-option-sample=\"texture\"][data-prts-option-sample-value=\"restrained\"]{background: repeating-linear-gradient(115deg,var(--prts-canvas) 0 6px,color-mix(in srgb,var(--prts-cyan) 38%,var(--prts-canvas)) 6px 7px)}html[data-dsh-prts] [data-prts-option-sample=\"texture\"][data-prts-option-sample-value=\"full\"]{background: repeating-linear-gradient(115deg,transparent 0 4px,color-mix(in srgb,var(--prts-cyan) 62%,transparent) 4px 5px),repeating-linear-gradient(25deg,var(--prts-canvas) 0 7px,color-mix(in srgb,var(--prts-line-strong) 72%,var(--prts-canvas)) 7px 8px)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"]{background: linear-gradient(135deg,color-mix(in srgb,var(--prts-cyan) 54%,transparent) 25%,transparent 25%) 0 0 / 8px 8px,linear-gradient(315deg,color-mix(in srgb,var(--prts-yellow) 38%,transparent) 25%,transparent 25%) 4px 4px / 8px 8px,var(--prts-canvas)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"]::after{content: \"\"; position: absolute; inset: 0; background: color-mix(in srgb,var(--prts-panel-raised) 64%,transparent); backdrop-filter: blur(2px) saturate(1.15); -webkit-backdrop-filter: blur(2px) saturate(1.15)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"off\"]::after{background: var(--prts-panel-raised); backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"soft\"]::after{background: color-mix(in srgb,var(--prts-panel-raised) 82%,transparent); backdrop-filter: blur(1px); -webkit-backdrop-filter: blur(1px)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"standard\"]::after{background: color-mix(in srgb,var(--prts-panel-raised) 62%,transparent)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"clear\"]::after{background: color-mix(in srgb,var(--prts-panel-raised) 34%,transparent); backdrop-filter: blur(4px) saturate(1.35); -webkit-backdrop-filter: blur(4px) saturate(1.35)}html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key],html[data-dsh-prts] [data-prts-retry-save],html[data-dsh-prts] [data-prts-reset-visual],html[data-dsh-prts] [data-prts-reset-confirm-action],html[data-dsh-prts] [data-prts-reset-cancel]{position: relative; overflow: hidden; min-height: 30px; padding: 6px 8px; border: 0 !important; box-shadow: inset 0 0 0 1px var(--prts-line); background: var(--prts-panel-raised); color: var(--prts-muted); font: 700 8px/1 var(--prts-mono); white-space: nowrap; clip-path: polygon(2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px)}html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key].is-selected{box-shadow: inset 0 0 0 1px var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 12%,var(--prts-panel-raised)); color: var(--prts-ink); html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key]::after{content: \"\"; position: absolute; z-index: 3; inset: 0; opacity: 0; box-shadow: inset 0 0 0 1px var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 18%,transparent); pointer-events: none}html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key][data-prts-setting-feedback]::after{opacity: 1}}html[data-dsh-prts] [data-prts-theme-settings] button:focus-visible,html[data-dsh-prts] [data-prts-theme-settings] summary:focus-visible,html[data-dsh-prts] [data-prts-theme-settings] input:focus-visible{outline: 2px solid var(--prts-cyan); outline-offset: 2px}html[data-dsh-prts] [data-prts-settings-advanced] summary{min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px; cursor: pointer; list-style: none}html[data-dsh-prts] [data-prts-settings-advanced] summary::-webkit-details-marker{display: none}html[data-dsh-prts] [data-prts-settings-advanced] summary::after{content: \"+\"; width: 24px; height: 24px; display: grid; place-items: center; margin-left: 2px; border: 1px solid var(--prts-line); color: var(--prts-cyan); font: 800 13px/1 var(--prts-mono)}html[data-dsh-prts] [data-prts-settings-advanced][open] summary::after{content: \"−\"}html[data-dsh-prts] [data-prts-settings-advanced-content]{display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); border-top: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-settings-advanced-content] > section{padding: 11px}html[data-dsh-prts] [data-prts-settings-advanced-content] > section + section{border-left: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-advanced-content] section > header{min-height: 30px; display: grid; gap: 4px}html[data-dsh-prts] [data-prts-settings-advanced-content] section > header strong{font-size: 10px}html[data-dsh-prts] [data-prts-settings-advanced-content] section > header span{color: var(--prts-muted); font-size: 8px}html[data-dsh-prts] [data-prts-particle-detail] > div{display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; margin-top: 8px}html[data-dsh-prts] [data-prts-particle-detail] button[role=\"radio\"]{min-width: 0; display: grid; gap: 5px}html[data-dsh-prts] [data-prts-particle-detail-preview]{height: 32px; display: grid; grid-template-columns: repeat(6,1fr); place-items: center; overflow: hidden; border: 1px solid color-mix(in srgb,currentColor 44%,transparent)}html[data-dsh-prts] [data-prts-particle-detail-preview] b{width: 2px; height: 2px; background: currentColor}html[data-dsh-prts] [data-prts-particle-error]{margin: 8px 0 0; color: var(--prts-yellow); font: 700 8px/1.4 var(--prts-mono)}html[data-dsh-prts] [data-prts-scale-calibration]{--prts-calibration-distance: 96px; margin: 8px 0 0; padding: 8px; overflow: hidden; border: 1px solid var(--prts-line); background: color-mix(in srgb,var(--prts-panel-raised) 84%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-viewport]{position: relative; width: 100%; height: 94px; overflow: hidden}html[data-dsh-prts] [data-prts-scale-calibration-canvas]{position: absolute; top: 0; left: 0; width: 360px; height: 94px; transform-origin: top left}html[data-dsh-prts] [data-prts-scale-calibration-sidebar]{position: absolute; inset: 8px auto 8px 0; width: 4px; background: var(--prts-line-strong); box-shadow: 8px 0 0 color-mix(in srgb,var(--prts-line) 45%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-measure]{position: absolute; top: 6px; left: 0; width: var(--prts-calibration-distance); height: 18px; border-top: 1px solid var(--prts-cyan); color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-scale-calibration-measure]::before,html[data-dsh-prts] [data-prts-scale-calibration-measure]::after{content: \"\"; position: absolute; top: -4px; width: 1px; height: 7px; background: currentColor}html[data-dsh-prts] [data-prts-scale-calibration-measure]::before{left: 0}html[data-dsh-prts] [data-prts-scale-calibration-measure]::after{right: 0}html[data-dsh-prts] [data-prts-scale-calibration-value]{position: absolute; top: 4px; right: 3px; padding-left: 4px; background: var(--prts-panel-raised); color: currentColor; font: 800 8px/1 var(--prts-mono)}html[data-dsh-prts] [data-prts-scale-calibration-rail]{position: absolute; top: 29px; left: var(--prts-calibration-distance); width: 32px; height: 58px; border: 1px solid var(--prts-line-strong); background: color-mix(in srgb,var(--prts-canvas) 62%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-rail] i{position: absolute; top: calc(5px + var(--prts-calibration-tick) * 6px); left: 2px; width: 9px; height: 1px; background: var(--prts-muted)}html[data-dsh-prts] [data-prts-scale-calibration-rail] i:nth-child(4n + 1){width: 24px}html[data-dsh-prts] [data-prts-scale-calibration-rail] i:nth-child(4n + 2){width: 18px}html[data-dsh-prts] [data-prts-scale-calibration-rail] i:last-child{width: 24px; background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-scale-calibration-gap]{position: absolute; top: 29px; left: calc(var(--prts-calibration-distance) + 32px); width: 12px; height: 58px; background: repeating-linear-gradient(135deg,transparent 0 3px,color-mix(in srgb,var(--prts-line) 42%,transparent) 3px 4px)}html[data-dsh-prts] [data-prts-scale-calibration-content]{position: absolute; inset: 29px 0 7px calc(var(--prts-calibration-distance) + 44px); min-width: 16px; overflow: hidden; border-left: 1px solid var(--prts-cyan); background: color-mix(in srgb,var(--prts-panel) 84%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-content] i{display: block; width: min(78%,138px); height: 1px; margin: 18px 10px 9px; background: var(--prts-line-strong); box-shadow: 0 8px 0 var(--prts-line)}html[data-dsh-prts] [data-prts-scale-calibration-content] small{margin-left: 10px; color: var(--prts-dim); font: 700 7px/1 var(--prts-mono); white-space: nowrap}html[data-dsh-prts] [data-prts-scale-calibration-meta]{min-height: 20px; display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 4px; padding-top: 7px; border-top: 1px solid var(--prts-line); font: 700 8px/1.3 var(--prts-mono)}html[data-dsh-prts] [data-prts-scale-calibration-status]{margin-left: auto; color: var(--prts-muted); text-align: right}html[data-dsh-prts] [data-prts-scale-calibration][data-prts-calibration-mode=\"configured\"] [data-prts-scale-calibration-status],html[data-dsh-prts] [data-prts-scale-calibration][data-prts-calibration-mode=\"simulated\"] [data-prts-scale-calibration-status]{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-scale-calibration][data-prts-calibration-mode=\"centered\"] [data-prts-scale-calibration-status],html[data-dsh-prts] [data-prts-scale-calibration-scale]{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-setting-range-row]{display: grid; gap: 7px; padding: 8px 0 0; border: 0}html[data-dsh-prts] [data-prts-setting-range-row] > div{display: flex; align-items: center; gap: 8px}html[data-dsh-prts] [data-prts-setting-range-row] input[type=\"range\"]{min-width: 0; flex: 1}html[data-dsh-prts] [data-prts-setting-range]{accent-color: var(--prts-cyan)}html[data-dsh-prts] :is([data-prts-scale-distance-output],[data-prts-scale-focus-output]){min-width: 42px; color: var(--prts-cyan); font: 800 8px/1 var(--prts-mono); text-align: right}html[data-dsh-prts] [data-prts-scale-focus-preview]{width: 34px; min-width: 34px; height: 30px; display: grid; align-content: center; gap: 4px}html[data-dsh-prts] [data-prts-scale-focus-preview] i{display: block; height: 1px; max-width: 30px; background: var(--prts-yellow); transition: width 100ms ease}html[data-dsh-prts] [data-prts-settings-actions]{min-height: 58px; display: block; padding: 0; border-bottom: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-persistence-error],html[data-dsh-prts] [data-prts-reset-zone]{min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 11px}html[data-dsh-prts] [data-prts-persistence-error]{border-bottom: 1px solid var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 7%,transparent)}html[data-dsh-prts] [data-prts-persistence-error] > span,html[data-dsh-prts] [data-prts-reset-zone] > span{display: grid; gap: 4px}html[data-dsh-prts] [data-prts-persistence-error] strong{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-reset-visual],html[data-dsh-prts] [data-prts-reset-confirm-action]{color: var(--prts-yellow); box-shadow: inset 0 0 0 1px var(--prts-yellow)}html[data-dsh-prts] [data-prts-reset-confirm]{display: flex; align-items: center; justify-content: flex-end; gap: 5px; color: var(--prts-yellow); font: 700 8px/1.3 var(--prts-mono)}html[data-dsh-prts] [hidden]{display: none !important}html[data-dsh-prts] :is( [data-prts-theme-settings-header] small,[data-prts-theme-settings] section > header small,[data-prts-theme-settings] summary small,[data-prts-settings-actions] small,[data-prts-settings-summary] span,[data-prts-advanced-summary],[data-prts-preset-card] span,[data-prts-setting-note],[data-prts-settings-advanced-content] section > header span,[data-prts-particle-error],[data-prts-scale-calibration-value],[data-prts-scale-calibration-content] small,[data-prts-scale-calibration-meta],[data-prts-scale-distance-output],[data-prts-reset-confirm] ){font-size: var(--prts-settings-small); line-height: 1.4}html[data-dsh-prts] :is( [data-prts-settings-presets] > header strong,[data-prts-settings-common] > header strong,[data-prts-settings-advanced] summary strong,[data-prts-preset-card] strong,[data-prts-settings-common] [data-prts-setting-row] > span > strong,[data-prts-settings-advanced-content] section > header strong,[data-prts-theme-settings] button[data-prts-setting-key],[data-prts-retry-save],[data-prts-reset-visual],[data-prts-reset-confirm-action],[data-prts-reset-cancel] ){font-size: var(--prts-settings-text); line-height: 1.25}html[data-dsh-prts] [data-prts-theme-settings-header] strong{font-size: 1.375rem; line-height: 1.1}html[data-dsh-prts] [data-prts-settings-summary] span{min-height: 28px; padding: 6px 9px}html[data-dsh-prts] [data-prts-preset-card]{min-height: 84px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{min-height: 72px; grid-template-columns: minmax(7.5rem,auto) minmax(0,1fr)}html[data-dsh-prts] :is( [data-prts-theme-settings] button[data-prts-setting-key],[data-prts-retry-save],[data-prts-reset-visual],[data-prts-reset-confirm-action],[data-prts-reset-cancel] ){min-height: 40px; padding: 8px 10px}@container prts-settings (max-width: 52rem){html[data-dsh-prts] [data-prts-settings-common-grid],html[data-dsh-prts] [data-prts-settings-advanced-content]{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{border-right: 0}html[data-dsh-prts] [data-prts-settings-advanced-content] > section + section{border-left: 0; border-top: 1px solid var(--prts-line)}}@media (max-height: 820px) and (min-width: 721px){html[data-dsh-prts] [data-prts-theme-settings-header]{min-height: 60px; padding-block: 10px}html[data-dsh-prts] [data-prts-theme-settings-close]{top: 10px}}@media (max-width: 720px){html[data-dsh-prts] [data-prts-theme-settings]{inset: 0; width: 100vw; height: 100dvh; max-height: none; margin: 0; transform: translateY(10px)}html[data-dsh-prts] [data-prts-theme-settings][data-prts-settings-visible]{transform: translateY(0)}html[data-dsh-prts] [data-prts-settings-frame]{height: 100%; max-height: none; clip-path: none; border: 0}html[data-dsh-prts] [data-prts-settings-frame]::before{right: 0}html[data-dsh-prts] [data-prts-theme-settings-header]{grid-template-columns: minmax(0,1fr); padding: 12px 48px 11px 13px}html[data-dsh-prts] [data-prts-settings-summary]{display: none}html[data-dsh-prts] [data-prts-theme-settings-scroll]{padding: 8px; scrollbar-gutter: auto}html[data-dsh-prts] [data-prts-settings-presets] > div{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-preset-card]{min-height: 54px; border-right: 0 !important; border-bottom: 1px solid var(--prts-line) !important}html[data-dsh-prts] [data-prts-preset-card]:last-child{border-bottom: 0 !important}html[data-dsh-prts] [data-prts-settings-common-grid]{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{min-height: 62px}html[data-dsh-prts] [data-prts-settings-common] button[data-prts-setting-key]{min-height: 40px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{border-right: 0; border-bottom: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:nth-last-child(2){border-bottom: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:last-child{border-bottom: 0}html[data-dsh-prts] [data-prts-settings-advanced-content]{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-settings-advanced-content] > section + section{border-left: 0; border-top: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-reset-zone]{align-items: flex-start; flex-direction: column}html[data-dsh-prts] [data-prts-reset-confirm]{width: 100%; flex-wrap: wrap; justify-content: flex-start}}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key][data-prts-setting-feedback]::after{animation: prts-setting-feedback 300ms ease-out both}}@keyframes prts-setting-feedback{0%{opacity: .82}100%{opacity: 0}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-theme-settings]{transition-duration: 1ms}}@media (prefers-reduced-transparency: reduce){html[data-dsh-prts] [data-prts-theme-settings]::backdrop,html[data-dsh-prts] [data-prts-settings-backdrop]{background: color-mix(in srgb,var(--prts-canvas) 94%,transparent); backdrop-filter: none; -webkit-backdrop-filter: none}}html[data-dsh-prts] [data-prts-facility-defs]{position: absolute; width: 0; height: 0; overflow: hidden; pointer-events: none}html[data-dsh-prts] [data-prts-facility-svg]{position: absolute; z-index: -1; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none}html[data-dsh-prts] [data-prts-facility-layer=\"surface\"]{fill: var(--prts-facility-surface,var(--prts-panel-raised))}html[data-dsh-prts] [data-prts-facility-layer=\"texture\"]{fill: none; opacity: 0; pointer-events: none; transition: opacity 160ms ease}html[data-dsh-prts] [data-prts-facility-layer=\"outline\"]{fill: none; stroke: var(--prts-facility-outline,var(--prts-line-strong)); stroke-width: 1; stroke-linejoin: miter; stroke-miterlimit: 2; vector-effect: non-scaling-stroke; shape-rendering: geometricPrecision; pointer-events: none}html[data-dsh-prts] [data-prts-facility-vector][data-prts-facility-texture=\"grid\"] [data-prts-facility-layer=\"texture\"]{fill: var(--prts-facility-texture-color,var(--prts-cyan)); opacity: var(--prts-facility-texture-opacity,.12); mask: url(\"#prts-facility-grid-mask\")}html[data-dsh-prts] [data-prts-facility-vector][data-prts-facility-texture=\"scanline\"] [data-prts-facility-layer=\"texture\"]{fill: var(--prts-facility-texture-color,var(--prts-cyan)); opacity: var(--prts-facility-texture-opacity,.1); mask: url(\"#prts-facility-scanline-mask\")}html[data-dsh-prts] [data-prts-workspace-row]{--prts-facility-texture-color: var(--prts-cyan); --prts-silhouette-fill: #f3f6f7; --prts-silhouette-far-opacity: .06; --prts-silhouette-near-opacity: .12}html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-workspace-row]{--prts-silhouette-fill: #3f4d56; --prts-silhouette-far-opacity: .13; --prts-silhouette-near-opacity: .26}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"],html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]){--prts-silhouette-far-opacity: .24; --prts-silhouette-near-opacity: .52}html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-workspace-row][aria-expanded=\"true\"],html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]){--prts-silhouette-far-opacity: .25; --prts-silhouette-near-opacity: .5}html[data-dsh-prts] [data-prts-facility-texture=\"silhouette\"] [data-prts-facility-layer=\"texture\"]{opacity: 0}html[data-dsh-prts] [data-prts-facility-silhouette]{fill: var(--prts-silhouette-fill); opacity: 0; pointer-events: none}html[data-dsh-prts] [data-prts-facility-texture=\"silhouette\"] [data-prts-facility-silhouette]{opacity: 1}html[data-dsh-prts] [data-prts-silhouette-layer]{transform-box: fill-box; transform-origin: left center; animation-timing-function: linear; animation-iteration-count: infinite; animation-play-state: paused; will-change: transform; transition: opacity 180ms ease}html[data-dsh-prts] [data-prts-silhouette-layer=\"far\"]{opacity: var(--prts-silhouette-far-opacity); animation-name: prts-silhouette-far-drift; animation-duration: 22.4s}html[data-dsh-prts] [data-prts-silhouette-layer=\"near\"]{opacity: var(--prts-silhouette-near-opacity); animation-name: prts-silhouette-near-drift; animation-duration: 6.4s}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts]:not([data-prts-motion=\"reduced\"]) [data-prts-workspace-row]:hover [data-prts-silhouette-layer]{animation-play-state: running}}@keyframes prts-silhouette-far-drift{to{transform: translate3d(-512px,0,0)}}@keyframes prts-silhouette-near-drift{to{transform: translate3d(-512px,0,0)}}html[data-dsh-prts] [data-prts-facility-texture=\"pickup\"] [data-prts-facility-layer=\"texture\"]{opacity: 0}html[data-dsh-prts] [data-prts-session-pickup]{color: var(--prts-session-pickup-fill); fill: currentColor; opacity: 0; transform: translate3d(5px,0,0); transform-box: view-box; transform-origin: center; transition: opacity 150ms ease,transform 240ms cubic-bezier(.22,1,.36,1); pointer-events: none}html[data-dsh-prts] [data-prts-session-row]:hover [data-prts-facility-texture=\"pickup\"] [data-prts-session-pickup]{opacity: .58; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-session-pickup-baseline]{fill: none; stroke: currentColor; stroke-width: 1; opacity: .2; vector-effect: non-scaling-stroke}html[data-dsh-prts] [data-prts-session-pickup-indicator]{fill: var(--prts-yellow)}html[data-dsh-prts] [data-prts-session-pickup-bar]{transform-box: fill-box; transform-origin: center}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(1){--prts-pickup-duration: 520ms; --prts-pickup-delay: -.12s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(2){--prts-pickup-duration: 1180ms; --prts-pickup-delay: -.28s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(3){--prts-pickup-duration: 760ms; --prts-pickup-delay: -.44s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(4){--prts-pickup-duration: 1420ms; --prts-pickup-delay: -.18s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(5){--prts-pickup-duration: 640ms; --prts-pickup-delay: -.36s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(6){--prts-pickup-duration: 980ms; --prts-pickup-delay: -.52s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(7){--prts-pickup-duration: 480ms; --prts-pickup-delay: -.22s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(8){--prts-pickup-duration: 1260ms; --prts-pickup-delay: -.46s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(9){--prts-pickup-duration: 720ms; --prts-pickup-delay: -.14s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(10){--prts-pickup-duration: 1520ms; --prts-pickup-delay: -.4s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(11){--prts-pickup-duration: 560ms; --prts-pickup-delay: -.3s}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts]:not([data-prts-motion=\"reduced\"]) [data-prts-session-row]:hover [data-prts-session-pickup-indicator]{animation: prts-session-record-indicator 1.1s ease-in-out infinite}html[data-dsh-prts]:not([data-prts-motion=\"reduced\"]) [data-prts-session-row]:hover [data-prts-session-pickup-bar]{animation: prts-session-pickup-sample var(--prts-pickup-duration) ease-in-out var(--prts-pickup-delay) infinite}}@keyframes prts-session-record-indicator{0%,100%{opacity: .45}50%{opacity: 1}}@keyframes prts-session-pickup-sample{0%,100%{transform: scaleY(.28)}34%{transform: scaleY(1.08)}57%{transform: scaleY(.46)}78%{transform: scaleY(.86)}}html[data-dsh-prts] [data-prts-session-row]{--prts-facility-texture-color: var(--prts-muted); --prts-session-pickup-fill: #f3f6f7}html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-session-row]{--prts-session-pickup-fill: #3f4d56}html[data-dsh-prts] [data-prts-session-row][aria-selected=\"true\"]{--prts-facility-texture-color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-workspace-row] > [data-prts-facility-spine],html[data-dsh-prts] [data-prts-session-row] > [data-prts-facility-spine]{--prts-facility-surface: var(--prts-line-strong); position: absolute !important; z-index: 2 !important; inset: 0 auto 0 0; height: 100% !important; isolation: isolate; width: var(--prts-spine-width); min-width: 0; transform: scaleX(var(--prts-spine-rest)) !important; transform-origin: left center; transition: transform 220ms var(--prts-ease-spring); pointer-events: none}html[data-dsh-prts] [data-prts-workspace-row] > [data-prts-facility-spine]{--prts-facility-surface: var(--prts-cyan)}html[data-dsh-prts] [data-prts-session-row][aria-selected=\"true\"] > [data-prts-facility-spine]{--prts-facility-surface: var(--prts-yellow)}html[data-dsh-prts] [data-prts-facility-spine] [data-prts-facility-layer=\"outline\"]{display: none}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"] > [data-prts-facility-spine],html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) > [data-prts-facility-spine],html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) > [data-prts-facility-spine]{transform: scaleX(1) !important}html[data-dsh-prts] [data-prts-workspace-row][data-prts-spine-vector]::before,html[data-dsh-prts] [data-prts-session-row][data-prts-spine-vector]::before{content: none !important; display: none !important}html[data-dsh-prts] [data-prts-facility-face][data-prts-facility-vector]{border: 0 !important; background: transparent !important; clip-path: none !important}html[data-dsh-prts] [data-prts-facility-face][data-prts-facility-vector]::after{content: none !important; display: none !important}html[data-dsh-prts] :is( [data-prts-workspace-actions],[data-prts-session-actions] ) button[data-prts-facility-vector]{--prts-facility-outline: var(--prts-line); --prts-facility-surface: var(--prts-panel-raised); overflow: visible; border: 0 !important; background: transparent !important; clip-path: none !important}html[data-dsh-prts] :is( [data-prts-workspace-actions],[data-prts-session-actions] ) button[data-prts-facility-vector]::before{content: none !important; display: none !important}html[data-dsh-prts] :is( [data-prts-workspace-actions],[data-prts-session-actions] ) button[data-prts-facility-vector]:is(:hover,:focus-visible){--prts-facility-outline: var(--prts-yellow); background: transparent !important}html[data-dsh-prts] [data-message-role]::before,html[data-dsh-prts] [data-chat-flow-kind]::before{content: none !important; display: none !important}html[data-dsh-prts] [data-conversation-scroll]:not([data-prts-hero-active])[data-prts-conversation-scale-ready]::before,html[data-dsh-prts] [data-conversation-scroll]:not([data-prts-hero-active])[data-prts-conversation-scale-empty]::before{content: none !important; display: none !important}html[data-dsh-prts] [data-prts-conversation-scale]{position: absolute; z-index: 8; width: 32px; min-height: 84px; margin: 0; padding: 0; overflow: hidden; opacity: .54; visibility: visible; transition: opacity 100ms ease,filter 150ms ease,visibility 0s linear; pointer-events: auto; touch-action: none; cursor: pointer; isolation: isolate}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-resizing]{opacity: .38; filter: none; transition: none}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-resizing] :is( [data-prts-conversation-scale-accent],[data-prts-conversation-scale-history] ){filter: none; transition: none}html[data-dsh-prts] [data-prts-conversation-scale]:is( [data-prts-conversation-scale-obstructed],[data-prts-conversation-scale-space-obstructed] ){opacity: 0; visibility: hidden; transition-delay: 0s,0s,100ms; pointer-events: none}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-scale-blocked]{opacity: 0; visibility: hidden; transition: none; pointer-events: none}html[data-dsh-prts] [data-prts-conversation-scale]:focus{outline: none}html[data-dsh-prts] [data-prts-conversation-scale]:focus-visible{filter: drop-shadow(0 0 7px color-mix(in srgb,var(--prts-cyan) 34%,transparent))}html[data-dsh-prts] [data-prts-conversation-scale-svg]{position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: hidden; shape-rendering: geometricPrecision}html[data-dsh-prts] [data-prts-conversation-scale-marks]{pointer-events: none}html[data-dsh-prts] :is( [data-prts-conversation-scale-gray],[data-prts-conversation-scale-accent],[data-prts-conversation-scale-history] ){fill: none; stroke-width: 1; stroke-linecap: square; vector-effect: non-scaling-stroke; pointer-events: none}html[data-dsh-prts] [data-prts-conversation-scale-gray]{stroke: color-mix(in srgb,var(--prts-muted) 76%,var(--prts-line-strong))}html[data-dsh-prts] [data-prts-conversation-scale-accent]{stroke: var(--prts-yellow); filter: drop-shadow(0 0 4px color-mix(in srgb,var(--prts-yellow) 42%,transparent))}html[data-dsh-prts] [data-prts-conversation-scale-history]{stroke: var(--prts-cyan); stroke-width: 1.5; filter: drop-shadow(0 0 4px color-mix(in srgb,var(--prts-cyan) 38%,transparent))}html[data-dsh-prts] [data-prts-conversation-scale-history]{transition: stroke-width 100ms ease,filter 120ms ease}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-history-selected] [data-prts-conversation-scale-history]{stroke-width: 2.5; filter: drop-shadow(0 0 3px color-mix(in srgb,var(--prts-cyan) 78%,transparent)) drop-shadow(0 0 8px color-mix(in srgb,var(--prts-cyan) 48%,transparent))}html[data-dsh-prts] [data-prts-conversation-history-hint],html[data-dsh-prts] [data-prts-conversation-history-hint] *{box-sizing: border-box}html[data-dsh-prts] [data-prts-conversation-history-hint]{position: absolute; z-index: 13; height: 8px; transform: translateY(-50%); pointer-events: auto}html[data-dsh-prts] [data-prts-conversation-history-hint][hidden],html[data-dsh-prts] [data-prts-conversation-history-tooltip][hidden]{display: none}html[data-dsh-prts] [data-prts-conversation-history-trigger]{width: 30px; min-width: 30px; height: 8px; min-height: 8px; max-height: 8px; padding: 0; display: block; border: 0; border-radius: 0; opacity: 0; background: transparent; cursor: pointer}html[data-dsh-prts] [data-prts-conversation-history-tooltip]{position: absolute; top: var(--prts-history-tooltip-top,50%); left: calc(100% + 10px); width: 360px; height: 128px; margin: 0; padding: 1px; overflow: visible; border: 0; background: var(--prts-line-strong); color: var(--prts-ink); clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ); opacity: .98; transform: translate3d(0,0,0); pointer-events: none; isolation: isolate; animation: prts-conversation-history-tooltip-in 120ms var(--prts-ease-snap)}html[data-dsh-prts] [data-prts-conversation-history-tooltip]::before{content: \"\"; position: absolute; z-index: 0; inset: 1px; background: var(--prts-active-glass); clip-path: polygon( 2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-conversation-history-tooltip] [data-prts-conversation-preview-row=\"question\"] b{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-conversation-history-tooltip-label]{overflow: hidden; color: var(--prts-ink); text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-conversation-history-tooltip-content]{min-width: 0; display: grid; gap: 3px}html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] strong{color: var(--prts-ink); font-size: 15px; font-weight: 750}html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] span{overflow: hidden; color: var(--prts-muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-conversation-history-tooltip-connector]{position: absolute; z-index: 2; top: var(--prts-history-tooltip-anchor-y,50%); right: 100%; width: 14px; height: 1px; background: linear-gradient(90deg,var(--prts-cyan),var(--prts-line-strong)); transform: translateY(-.5px); pointer-events: none}html[data-dsh-prts] [data-prts-conversation-history-tooltip-connector]::before{content: \"\"; position: absolute; top: -1px; left: 0; width: 3px; height: 3px; background: var(--prts-cyan)}@keyframes prts-conversation-history-tooltip-in{from{opacity: 0; transform: translate3d(-4px,0,0)}to{opacity: .98; transform: translate3d(0,0,0)}}html[data-dsh-prts] [data-prts-conversation-scale-hit]{pointer-events: all}html[data-dsh-prts] [data-prts-conversation-history-status],html[data-dsh-prts] [data-prts-conversation-history-status] *{box-sizing: border-box}html[data-dsh-prts] [data-prts-conversation-history-status]{position: absolute; z-index: 13; min-height: 34px; max-width: min(320px,calc(100% - 72px)); display: flex; align-items: center; gap: 10px; padding: 5px 6px 5px 10px; border: 1px solid var(--prts-line-strong); background: var(--prts-active-glass); color: var(--prts-ink); box-shadow: 0 8px 22px color-mix(in srgb,var(--prts-canvas) 22%,transparent); clip-path: polygon(3px 0,100% 0,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px); font: 700 12px/1.35 var(--prts-mono); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-conversation-history-status][hidden]{display: none}html[data-dsh-prts] [data-prts-conversation-history-text]{min-width: 0}html[data-dsh-prts] [data-prts-conversation-history-action]{min-width: 44px; min-height: 24px; padding: 3px 8px; border: 1px solid var(--prts-cyan); border-radius: 0; background: transparent; color: var(--prts-cyan); font: inherit; cursor: pointer}html[data-dsh-prts] [data-prts-conversation-history-status][data-prts-history-phase=\"error\"]{border-color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-history-status][data-prts-history-phase=\"loading\"]{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-conversation-preview]{--prts-preview-anchor-y: 46px; position: absolute; z-index: 12; width: 360px; max-width: calc(100% - 64px); height: 128px; margin: 0; padding: 1px; overflow: visible; border: 0; background: var(--prts-line-strong); color: var(--prts-ink); clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ); opacity: 0; visibility: hidden; transform: translate3d(-4px,0,0); transition: opacity 100ms ease,transform 120ms var(--prts-ease-snap),visibility 0s linear 120ms; pointer-events: none; isolation: isolate}html[data-dsh-prts] [data-prts-conversation-preview]::before{content: \"\"; position: absolute; z-index: 0; inset: 1px; background: var(--prts-active-glass); clip-path: polygon( 2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-conversation-preview][data-prts-conversation-preview-visible]{opacity: .98; visibility: visible; transform: translate3d(0,0,0); transition-delay: 0s}html[data-dsh-prts] [data-prts-conversation-preview-connector]{position: absolute; z-index: 2; top: var(--prts-preview-anchor-y); right: 100%; width: 14px; height: 1px; background: linear-gradient(90deg,var(--prts-yellow),var(--prts-line-strong)); transform: translateY(-.5px); pointer-events: none}html[data-dsh-prts] [data-prts-conversation-preview-connector]::before{content: \"\"; position: absolute; top: -1px; left: 0; width: 3px; height: 3px; background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-preview-body]{position: relative; z-index: 1; height: 100%; display: grid; grid-template-rows: 32px minmax(0,1fr); padding: 10px 14px 12px; font-family: var(--prts-mono)}html[data-dsh-prts] [data-prts-conversation-preview-row]{min-width: 0; display: grid; grid-template-columns: 24px minmax(0,1fr); column-gap: 8px; align-items: start; font-size: 15px; line-height: 1.45}html[data-dsh-prts] [data-prts-conversation-preview-row] b{font-size: 14px; font-weight: 750; line-height: 1.55; letter-spacing: .08em}html[data-dsh-prts] [data-prts-conversation-preview-row=\"question\"]{border-bottom: 1px solid color-mix(in srgb,var(--prts-line) 72%,transparent); color: var(--prts-ink)}html[data-dsh-prts] [data-prts-conversation-preview-row=\"question\"] b{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-preview-row=\"answer\"]{padding-top: 6px; color: var(--prts-muted)}html[data-dsh-prts] [data-prts-conversation-preview-row=\"answer\"] b{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-conversation-preview-question]{display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-conversation-preview-answer]{display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3}html[data-dsh-prts] [data-prts-conversation-preview][data-prts-preview-state=\"streaming\"] [data-prts-conversation-preview-answer]{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-scale-empty]{display: none}@media (max-width: 640px){html[data-dsh-prts] :is( [data-prts-conversation-scale],[data-prts-conversation-preview],[data-prts-conversation-history-hint],[data-prts-conversation-history-status] ){display: none !important}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-conversation-scale],html[data-dsh-prts] [data-prts-conversation-preview],html[data-dsh-prts] [data-prts-conversation-history-hint],html[data-dsh-prts] [data-prts-conversation-history-tooltip],html[data-dsh-prts] :is( [data-prts-conversation-scale-gray],[data-prts-conversation-scale-accent],[data-prts-conversation-scale-history] ){animation: none !important; transition: none !important}}html[data-dsh-prts] [data-prts-startup]{--prts-startup-bg: #07090b; --prts-startup-ink: #e8edef; --prts-startup-muted: #7d898f; --prts-startup-line: #394349; --prts-startup-accent: #f0c800; --prts-startup-progress: 0; position: fixed; z-index: 2147480000; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; min-height: 100dvh; margin: 0; padding: 0; border: 0; overflow: hidden; isolation: isolate; box-sizing: border-box; background: transparent; color: var(--prts-startup-ink); font-family: var(--prts-body,sans-serif); opacity: 0; outline: 0; pointer-events: auto; transition: opacity 120ms ease}html[data-dsh-prts] [data-prts-startup]::before,html[data-dsh-prts] [data-prts-startup]::after{content: \"\"; position: absolute; z-index: -3; top: 0; bottom: 0; width: calc(50% + 2px); background: var(--prts-startup-bg); transition: transform 350ms cubic-bezier(.76,0,.24,1)}html[data-dsh-prts] [data-prts-startup]::before{left: 0}html[data-dsh-prts] [data-prts-startup]::after{right: 0}html[data-dsh-prts] [data-prts-startup][data-visible]{opacity: 1}html[data-dsh-prts] [data-prts-startup][data-exiting]::before{transform: translate3d(-101%,0,0)}html[data-dsh-prts] [data-prts-startup][data-exiting]::after{transform: translate3d(101%,0,0)}html[data-dsh-prts] [data-prts-startup-grid]{position: absolute; z-index: -2; inset: 0; opacity: 0; background: linear-gradient(90deg,transparent calc(50% - .5px),rgba(232,237,239,.17) 50%,transparent calc(50% + .5px)),linear-gradient(0deg,transparent calc(50% - .5px),rgba(232,237,239,.09) 50%,transparent calc(50% + .5px)),repeating-linear-gradient(90deg,rgba(232,237,239,.045) 0 1px,transparent 1px 80px),repeating-linear-gradient(0deg,rgba(232,237,239,.035) 0 1px,transparent 1px 80px); transform: scale3d(1.04,1.04,1); transition: opacity 220ms linear,transform 520ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-grid]{opacity: 1; transform: scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup-scan]{position: absolute; z-index: 4; top: -18%; right: 0; left: 0; height: 18%; opacity: 0; background: linear-gradient(180deg,transparent,rgba(240,200,0,.035) 68%,rgba(240,200,0,.24)); border-bottom: 1px solid rgba(240,200,0,.62); pointer-events: none}html[data-dsh-prts] [data-prts-startup][data-visible]:not([data-reduced-motion]) [data-prts-startup-scan]{opacity: 1; animation: prts-startup-scan 1100ms linear 120ms 2 both}html[data-dsh-prts] [data-prts-startup-cut]{position: absolute; z-index: 6; top: -15%; width: 8px; height: 130%; opacity: 0; background: var(--prts-startup-accent); transform: skewX(-13deg) translate3d(0,0,0); pointer-events: none}html[data-dsh-prts] [data-prts-startup-cut=\"left\"]{left: calc(50% - 4px)}html[data-dsh-prts] [data-prts-startup-cut=\"right\"]{right: calc(50% - 4px)}html[data-dsh-prts] [data-prts-startup][data-exiting] [data-prts-startup-cut=\"left\"]{animation: prts-startup-cut-left 350ms cubic-bezier(.76,0,.24,1) both}html[data-dsh-prts] [data-prts-startup][data-exiting] [data-prts-startup-cut=\"right\"]{animation: prts-startup-cut-right 350ms cubic-bezier(.76,0,.24,1) both}html[data-dsh-prts] [data-prts-startup-header]{position: absolute; z-index: 2; top: clamp(22px,4.5dvh,52px); right: clamp(22px,4vw,68px); left: clamp(22px,4vw,68px); display: flex; align-items: baseline; justify-content: space-between; gap: 24px; padding-bottom: 10px; border-bottom: 1px solid var(--prts-startup-line); opacity: 0; transform: translate3d(0,-9px,0); transition: opacity 180ms linear 60ms,transform 320ms cubic-bezier(.16,1,.3,1) 60ms}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-header]{opacity: 1; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-startup-header] span{font: 800 clamp(10px,1vw,13px)/1 var(--prts-display,sans-serif); letter-spacing: .18em}html[data-dsh-prts] [data-prts-startup-header] small,html[data-dsh-prts] [data-prts-startup-telemetry],html[data-dsh-prts] [data-prts-startup-coordinate]{color: var(--prts-startup-muted); font: 700 8px/1.35 var(--prts-mono,monospace); letter-spacing: .12em}html[data-dsh-prts] [data-prts-startup-telemetry]{position: absolute; z-index: 2; top: 50%; left: clamp(22px,4vw,68px); display: grid; gap: 12px; padding-left: 12px; border-left: 2px solid var(--prts-startup-accent); opacity: 0; transform: translate3d(-9px,-50%,0); transition: opacity 200ms linear 100ms,transform 360ms cubic-bezier(.16,1,.3,1) 100ms}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-telemetry]{opacity: 1; transform: translate3d(0,-50%,0)}html[data-dsh-prts] [data-prts-startup-core]{position: absolute; z-index: 3; top: 49%; left: 50%; width: min(76vw,560px); display: grid; justify-items: center; gap: clamp(15px,2.4dvh,26px); transform: translate3d(-50%,-50%,0)}html[data-dsh-prts] [data-prts-startup-frame]{position: relative; width: clamp(220px,27vw,320px); aspect-ratio: 1; display: grid; place-items: center}html[data-dsh-prts] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup-frame-inner]{position: absolute; inset: 15%; border: 1px solid var(--prts-startup-line); opacity: 0; transform: rotate(45deg) scale3d(.72,.72,1); transition: opacity 160ms linear,transform 420ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup-frame-inner]{inset: 23%; border-color: rgba(240,200,0,.76); transform: rotate(-45deg) scale3d(.68,.68,1); transition-delay: 80ms}html[data-dsh-prts] [data-prts-startup-reticle]{position: absolute; inset: 7%; opacity: 0; background: linear-gradient(var(--prts-startup-accent),var(--prts-startup-accent)) 50% 0 / 1px 15% no-repeat,linear-gradient(var(--prts-startup-accent),var(--prts-startup-accent)) 50% 100% / 1px 15% no-repeat,linear-gradient(90deg,var(--prts-startup-accent),var(--prts-startup-accent)) 0 50% / 15% 1px no-repeat,linear-gradient(90deg,var(--prts-startup-accent),var(--prts-startup-accent)) 100% 50% / 15% 1px no-repeat; transform: scale3d(.8,.8,1); transition: opacity 160ms linear,transform 400ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup-emblem]{position: relative; z-index: 2; width: 180px; max-width: 62%; height: auto; display: block; opacity: 0; clip-path: inset(48% 0 48% 0); transform: scale3d(.96,.96,1); transition: opacity 160ms linear,clip-path 380ms cubic-bezier(.16,1,.3,1),transform 420ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"linking\"] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-stage=\"authenticating\"] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-frame-outer]{opacity: .92; transform: rotate(45deg) scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"authenticating\"] :is([data-prts-startup-frame-inner],[data-prts-startup-reticle]),html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] :is([data-prts-startup-frame-inner],[data-prts-startup-reticle]),html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] :is([data-prts-startup-frame-inner],[data-prts-startup-reticle]){opacity: 1; transform: rotate(-45deg) scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"authenticating\"] [data-prts-startup-reticle],html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] [data-prts-startup-reticle],html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-reticle]{transform: scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] [data-prts-startup-emblem],html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-emblem]{opacity: 1; clip-path: inset(0 0 0 0); transform: scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup-signature]{min-height: 44px; display: flex; align-items: center; gap: 10px; opacity: 0; transform: translate3d(0,8px,0); transition: opacity 180ms linear,transform 230ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup-signature] > span,html[data-dsh-prts] [data-prts-startup-signature] svg{width: 42px; height: 42px; display: block}html[data-dsh-prts] [data-prts-startup-signature] small{color: var(--prts-startup-muted); font: 800 8px/1.3 var(--prts-mono,monospace); letter-spacing: .1em}html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-signature]{opacity: 1; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-startup-state]{display: grid; justify-items: center; gap: 6px; text-align: center; opacity: 1; transform: translate3d(0,0,0); transition: opacity 90ms linear,transform 90ms cubic-bezier(.4,0,1,1)}html[data-dsh-prts] [data-prts-startup][data-copy-transition] [data-prts-startup-state]{opacity: 0; transform: translate3d(0,-4px,0)}html[data-dsh-prts] [data-prts-startup-state] strong{font: 900 clamp(18px,2.4vw,30px)/1 var(--prts-display,sans-serif); letter-spacing: .16em}html[data-dsh-prts] [data-prts-startup-state] span{color: var(--prts-startup-muted); font: 700 10px/1.2 var(--prts-mono,monospace); letter-spacing: .12em}html[data-dsh-prts] [data-prts-startup-progress]{position: absolute; z-index: 3; right: clamp(22px,7vw,120px); bottom: clamp(28px,6dvh,70px); left: clamp(22px,7vw,120px); display: grid; gap: 10px; opacity: 0; transform: translate3d(0,10px,0); transition: opacity 220ms linear 100ms,transform 480ms cubic-bezier(.16,1,.3,1) 100ms}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-progress]{opacity: 1; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-startup-progress] output{justify-self: start; color: var(--prts-startup-muted); font: 800 9px/1 var(--prts-mono,monospace); letter-spacing: .12em}html[data-dsh-prts] [data-prts-startup-percent]{color: var(--prts-startup-ink)}html[data-dsh-prts] [data-prts-startup-track]{position: relative; height: 18px; border-top: 1px solid var(--prts-startup-line)}html[data-dsh-prts] [data-prts-startup-fill]{position: absolute; top: -2px; right: 0; left: 0; height: 3px; background: var(--prts-startup-accent); transform: scaleX(var(--prts-startup-progress)); transform-origin: left center; will-change: transform}html[data-dsh-prts] [data-prts-startup-ticks]{position: absolute; inset: 4px 0 0; display: grid; grid-template-columns: repeat(21,minmax(0,1fr))}html[data-dsh-prts] [data-prts-startup-ticks] i{width: 1px; height: 4px; background: var(--prts-startup-line)}html[data-dsh-prts] [data-prts-startup-ticks] i[data-major]{height: 9px; background: var(--prts-startup-muted)}html[data-dsh-prts] [data-prts-startup-coordinate]{position: absolute; right: clamp(22px,4vw,68px); top: 50%; writing-mode: vertical-rl; transform: translateY(-50%)}html[data-dsh-prts] [data-prts-startup][data-exit-content] > :not([data-prts-startup-cut]){opacity: 0; transition: opacity 120ms linear}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-grid],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-header],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-telemetry],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-coordinate],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-state],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-inner],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-reticle],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-emblem],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-signature],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-progress]{opacity: 1; clip-path: none; transform: none; animation: none; transition: none}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-outer]{transform: rotate(45deg)}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-inner]{transform: rotate(-45deg)}html[data-dsh-prts] [data-prts-startup][data-reduced-motion]{transition: opacity 160ms ease}html[data-dsh-prts] [data-prts-startup][data-reduced-motion][data-exiting]{opacity: 0}html[data-dsh-prts] [data-prts-startup][data-reduced-motion][data-exiting] > :not([data-prts-startup-cut]){opacity: 1}html[data-dsh-prts] [data-prts-startup][data-reduced-motion]::before,html[data-dsh-prts] [data-prts-startup][data-reduced-motion]::after{transform: none; transition: none}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-cut]{display: none}@keyframes prts-startup-scan{from{transform: translate3d(0,0,0)}to{transform: translate3d(0,660%,0)}}@keyframes prts-startup-cut-left{0%{opacity: 0; transform: skewX(-13deg) translate3d(0,0,0)}18%{opacity: 1}100%{opacity: 0; transform: skewX(-13deg) translate3d(-50vw,0,0)}}@keyframes prts-startup-cut-right{0%{opacity: 0; transform: skewX(-13deg) translate3d(0,0,0)}18%{opacity: .72}100%{opacity: 0; transform: skewX(-13deg) translate3d(50vw,0,0)}}@media (max-width: 640px){html[data-dsh-prts] [data-prts-startup-header]{right: 18px; left: 18px}html[data-dsh-prts] [data-prts-startup-header] small,html[data-dsh-prts] [data-prts-startup-telemetry],html[data-dsh-prts] [data-prts-startup-coordinate]{display: none}html[data-dsh-prts] [data-prts-startup-core]{top: 47%; width: calc(100vw - 32px)}html[data-dsh-prts] [data-prts-startup-frame]{width: min(66vw,240px)}html[data-dsh-prts] [data-prts-startup-signature] > span,html[data-dsh-prts] [data-prts-startup-signature] svg{width: 34px; height: 34px}html[data-dsh-prts] [data-prts-startup-state] strong{max-width: 94vw; font-size: clamp(15px,5vw,22px); letter-spacing: .1em}html[data-dsh-prts] [data-prts-startup-progress]{right: 20px; bottom: max(28px,env(safe-area-inset-bottom)); left: 20px}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-startup] *,html[data-dsh-prts] [data-prts-startup]::before,html[data-dsh-prts] [data-prts-startup]::after{animation: none !important}}";
|
|
6
|
+
const PRTS_VERSION = "0.1.93";
|
|
7
|
+
const PRTS_CSS = "html[data-dsh-prts]{--prts-canvas: #080a0c; --prts-canvas-elevated: #0d1114; --prts-rail: #060809; --prts-panel: #11161a; --prts-panel-raised: #171d21; --prts-panel-muted: #20272c; --prts-ink: #edf1f2; --prts-muted: #98a3a9; --prts-dim: #68747a; --prts-line: #38434a; --prts-line-strong: #5e6a70; --prts-yellow: #f0c800; --prts-yellow-ink: #161300; --prts-cyan: #5ccddb; --prts-red: #ee625a; --prts-green: #8fcf79; --prts-host-top-inset: 0px; --prts-rail-width: 52px; --prts-nav-width: 52px; --prts-sessions-width: 286px; --prts-sessions-compact: 54px; --prts-workspace-height: 38px; --prts-session-height: 36px; --prts-facility-gap: 7px; --prts-facility-height: var(--prts-workspace-height); --prts-spine-width: 8px; --prts-spine-rest: .25; --prts-spine-travel: 6px; --prts-chamfer: 3px; --prts-radius-control: 3px; --prts-radius-card: 3px; --prts-radius-overlay: 4px; --prts-body: 'Noto Sans SC','Microsoft YaHei UI','Segoe UI',sans-serif; --prts-display: 'Arial Narrow','Noto Sans SC',sans-serif; --prts-mono: 'Roboto Mono','Noto Sans Mono CJK SC',Consolas,monospace; --prts-ease-spring: cubic-bezier(.2,.86,.28,1.16); --prts-ease-snap: cubic-bezier(.22,1,.36,1); --prts-shadow-glass-overlay: 0 18px 48px rgba(0,0,0,.32),inset 0 1px rgba(255,255,255,.06); --prts-glass-border: rgba(119,140,150,.52); --prts-glass-soft-surface: rgba(15,21,25,.82); --prts-glass-standard-surface: rgba(15,21,25,.9); --prts-glass-clear-surface: rgba(15,21,25,.72); --prts-glass-dense: rgba(7,10,12,.94); --prts-active-glass: var(--prts-glass-standard-surface); --prts-active-glass-filter: blur(18px) saturate(145%); color-scheme: dark; accent-color: var(--prts-yellow)}html[data-dsh-prts][data-prts-scheme=\"dark\"]{color-scheme: dark}html[data-dsh-prts][data-prts-scheme=\"light\"]{--prts-canvas: #eef1f3; --prts-canvas-elevated: #e5eaed; --prts-rail: #111518; --prts-panel: #f7f9fa; --prts-panel-raised: #e5eaed; --prts-panel-muted: #d5dde1; --prts-ink: #15191c; --prts-muted: #4f5c63; --prts-dim: #738087; --prts-line: #9eabb1; --prts-line-strong: #65727a; --prts-glass-border: rgba(62,82,92,.48); --prts-glass-soft-surface: rgba(247,250,251,.9); --prts-glass-standard-surface: rgba(244,249,251,.94); --prts-glass-clear-surface: rgba(244,249,251,.78); --prts-glass-dense: rgba(249,251,252,.97); --prts-shadow-glass-overlay: 0 18px 44px rgba(48,63,70,.18),inset 0 1px rgba(255,255,255,.86); color-scheme: light}html[data-dsh-prts][data-prts-glass=\"soft\"]{--prts-active-glass: var(--prts-glass-soft-surface); --prts-active-glass-filter: blur(18px) saturate(145%)}html[data-dsh-prts][data-prts-glass=\"standard\"]{--prts-active-glass: var(--prts-glass-standard-surface); --prts-active-glass-filter: blur(22px) saturate(155%)}html[data-dsh-prts][data-prts-glass=\"clear\"]{--prts-active-glass: var(--prts-glass-clear-surface); --prts-active-glass-filter: blur(28px) saturate(180%)}html[data-dsh-prts][data-prts-glass=\"off\"]{--prts-active-glass: var(--prts-panel); --prts-active-glass-filter: none}html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] ),html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::before,html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::after{box-sizing: border-box}html[data-dsh-prts] body{--dsw-alias-bg-base: var(--prts-canvas); --dsw-alias-bg-layer-1: var(--prts-panel); --dsw-alias-bg-layer-2: var(--prts-panel-raised); --dsw-alias-bg-layer-3: var(--prts-panel-muted); --dsw-alias-label-primary: var(--prts-ink); --dsw-alias-label-secondary: var(--prts-muted); --dsw-alias-border-l2: var(--prts-line); min-height: 100dvh; margin: 0; overflow: hidden; background: var(--prts-canvas); color: var(--prts-ink); font-family: var(--prts-body)}html[data-dsh-prts] ::selection{background: var(--prts-yellow); color: var(--prts-yellow-ink)}html[data-dsh-prts] a{color: var(--prts-cyan); text-underline-offset: 3px}html[data-dsh-prts] [data-prts-shell] :is(button,input,textarea,select),html[data-dsh-prts] [data-prts-theme-settings] :is(button,input,textarea,select){font: inherit}html[data-dsh-prts] [data-prts-shell] button,html[data-dsh-prts] [data-prts-theme-settings] button{color: inherit}html[data-dsh-prts] :focus-visible{outline: 2px solid var(--prts-yellow) !important; outline-offset: 2px !important}html[data-dsh-prts] [hidden]{display: none !important}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"]{--prts-nav-width: 0px}html[data-dsh-prts] [data-prts-shell]{position: fixed; z-index: 124; inset: var(--prts-host-top-inset) auto 0 0; width: var(--prts-nav-width); pointer-events: none; font-family: var(--prts-mono)}html[data-dsh-prts] [data-prts-shell] button,html[data-dsh-prts] [data-prts-nav-rail]{pointer-events: auto}html[data-dsh-prts] [data-prts-topbar]{display: none}html[data-dsh-prts] [data-prts-nav-rail]{position: fixed; z-index: 120; inset: var(--prts-host-top-inset) auto 0 0; width: var(--prts-rail-width); display: flex; flex-direction: column; align-items: stretch; border-right: 1px solid #30383d; background: var(--prts-rail); color: #e8edef; box-shadow: 4px 0 18px rgba(0,0,0,.18)}html[data-dsh-prts] [data-prts-rail-launcher]{display: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-nav-rail]{opacity: 0; visibility: hidden; transform: translate3d(-100%,0,0); transition: transform 180ms var(--prts-ease-snap),opacity 120ms ease,visibility 0s linear 180ms; pointer-events: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"][data-prts-rail-open] [data-prts-nav-rail]{opacity: 1; visibility: visible; transform: translate3d(0,0,0); transition-delay: 0s; pointer-events: auto}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"][data-prts-rail-open] [data-prts-rail-launcher]{opacity: 0; visibility: hidden; pointer-events: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]{position: fixed; z-index: 121; top: 50%; left: 0; width: 12px; height: 96px; display: grid; place-items: center; padding: 0; overflow: hidden; border: 1px solid color-mix(in srgb,var(--prts-yellow) 40%,transparent); border-left: 0; border-radius: 0 3px 3px 0; opacity: .34; background: color-mix(in srgb,var(--prts-rail) 86%,transparent); color: var(--prts-yellow); font: 700 8px/1 var(--prts-mono); letter-spacing: .08em; transform: translateY(-50%); transition: width 140ms var(--prts-ease-snap),opacity 120ms ease,background-color 120ms ease; cursor: pointer}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher] > span{opacity: 0; writing-mode: vertical-rl; transition: opacity 100ms ease}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]:is(:hover,:focus-visible){width: 40px; opacity: 1; background: var(--prts-rail)}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]:is(:hover,:focus-visible) > span{opacity: 1}@media (hover: none),(pointer: coarse){html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher]{top: calc(var(--prts-host-top-inset) + 12px); width: 40px; height: 40px; opacity: .92; transform: none}html[data-dsh-prts][data-prts-rail-mode=\"overlay\"] [data-prts-rail-launcher] > span{opacity: 1}}html[data-dsh-prts] [data-prts-rail-brand]{height: 64px; display: grid; place-items: center; padding: 8px 5px; border-bottom: 1px solid #30383d; overflow: hidden}html[data-dsh-prts] [data-prts-rail-brand] svg{width: 38px; height: 38px; color: #edf1f2}html[data-dsh-prts] [data-prts-rail-brand] > span{position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0)}html[data-dsh-prts] [data-prts-nav-rail] > button{position: relative; width: 100%; min-height: 52px; display: grid; place-items: center; gap: 2px; padding: 7px 2px 6px; border: 0; border-bottom: 1px solid #242b2f; background: transparent; color: #9fa9ae; cursor: pointer; clip-path: polygon(0 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%)}html[data-dsh-prts] [data-prts-nav-rail] > button::after{content: \"\"; position: absolute; inset: 8px auto 8px 0; width: 2px; background: transparent}html[data-dsh-prts] [data-prts-nav-rail] > button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-nav-rail] > button[aria-expanded=\"true\"]{background: #151a1d; color: #f0f3f4}html[data-dsh-prts] [data-prts-nav-rail] > button[aria-expanded=\"true\"]::after{background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-nav-rail] > button:active{transform: translateY(1px) scale(.98)}html[data-dsh-prts] [data-prts-nav-rail] b{font-size: 15px; line-height: 1}html[data-dsh-prts] [data-prts-nav-rail] small{font-size: 8px; letter-spacing: .04em}html[data-dsh-prts] [data-prts-nav-bottom]{display: grid; margin-top: auto; border-top: 1px solid #30383d}html[data-dsh-prts] [data-prts-connection-indicator]{min-height: 40px; display: grid; place-items: center; gap: 3px; padding: 6px 2px; color: #8c969b; font-size: 7px; text-align: center}html[data-dsh-prts] [data-prts-connection-indicator] i{width: 6px; height: 6px; border: 1px solid currentColor; background: currentColor; transform: rotate(45deg)}html[data-dsh-prts] [data-prts-connection-indicator][data-state=\"connected\"]{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-connection-indicator][data-state=\"disconnected\"]{color: var(--prts-red)}html[data-dsh-prts] [data-prts-scheme-toggle] svg{width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 1.7}html[data-dsh-prts] [data-prts-scheme-toggle]{touch-action: none; user-select: none}html[data-dsh-prts][data-prts-scheme-transition-interactive] [data-prts-scheme-toggle]{cursor: ew-resize}html[data-dsh-prts] [data-prts-scheme-toggle][data-prts-scheme-press]{animation: prts-scheme-toggle-press 100ms var(--prts-ease-snap) both}@keyframes prts-scheme-toggle-press{0%,100%{transform: translateY(0) scale(1)}50%{transform: translateY(0) scale(.96)}}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(root){animation: prts-scheme-view-hold var(--prts-scheme-duration,520ms) linear both}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-old(root),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(root){animation: none; mix-blend-mode: normal}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-old(root){z-index: 1}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(root){z-index: 2; clip-path: inset(0 max(0px,calc(100vw - var(--prts-scheme-reveal-x))) 0 0)}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-grid),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-edge),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-node),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-mark){animation: none}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-grid){z-index: 3}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-edge){z-index: 4}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-node),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-group(prts-scheme-mark){z-index: 5}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-old(prts-scheme-grid),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-old(prts-scheme-edge),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-old(prts-scheme-node),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-old(prts-scheme-mark){opacity: 0; animation: none}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(prts-scheme-grid),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(prts-scheme-edge),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(prts-scheme-node),html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(prts-scheme-mark){opacity: 1; animation: none; mix-blend-mode: normal}@keyframes prts-scheme-view-hold{from,to{opacity: 1}}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]{--prts-scheme-grid-cell: 20px; --prts-scheme-grid-diagonal-cell: 40px; --prts-scheme-grid-axis: rgba(132,158,166,.14); --prts-scheme-grid-node: rgba(150,180,188,.22); --prts-scheme-grid-diagonal-opacity: .16}html[data-dsh-prts][data-prts-scheme-transition=\"light\"]{--prts-scheme-grid-axis: rgba(28,36,41,.12); --prts-scheme-grid-node: rgba(24,31,35,.2); --prts-scheme-grid-diagonal-opacity: .14}html[data-dsh-prts] [data-prts-scheme-reveal]{box-sizing: border-box; position: fixed; z-index: 2147483647; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; margin: 0; padding: 0; overflow: hidden; border: 0; background: transparent; color: #ffd400; --prts-scheme-grid-cell: 20px; --prts-scheme-grid-diagonal-cell: 40px; --prts-scheme-grid-axis: rgba(132,158,166,.08); --prts-scheme-grid-node: rgba(150,180,188,.13); --prts-scheme-grid-diagonal-opacity: .075; pointer-events: none}html[data-dsh-prts] [data-prts-scheme-reveal=\"light\"]{--prts-scheme-grid-axis: rgba(28,36,41,.065); --prts-scheme-grid-node: rgba(24,31,35,.105); --prts-scheme-grid-diagonal-opacity: .06}html[data-dsh-prts] [data-prts-scheme-reveal-edge]{isolation: isolate; position: absolute; top: 0; left: 0; width: 29px; height: 100vh; background: linear-gradient(90deg,transparent 13px,rgba(244,247,247,.96) 13px 14px,rgba(255,212,0,.22) 14px 15px,transparent 15px); transform: translate3d(-14px,0,0); transform-origin: 50% 50%; view-transition-name: prts-scheme-edge; will-change: transform}html[data-dsh-prts] [data-prts-scheme-reveal-grid]{position: absolute; z-index: -2; inset: 0 auto 0 -206px; display: block; width: 220px; height: 100vh; view-transition-name: prts-scheme-grid; pointer-events: none}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(prts-scheme-grid){background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='%2396b4bc' stroke-width='.55'%3E%3Cpath d='M0 0H40M0 20H40M0 40H40M0 0V40M20 0V40M40 0V40' stroke-opacity='.22'/%3E%3Cpath d='M0 0L20 20L0 40M20 0L40 20L20 40' stroke-opacity='.46'/%3E%3Cpath d='M20 0L0 20L20 40M40 0L20 20L40 40' stroke-opacity='.22'/%3E%3C/g%3E%3Cg fill='%2396b4bc' fill-opacity='.36'%3E%3Ccircle cx='0' cy='0' r='1'/%3E%3Ccircle cx='20' cy='0' r='1'/%3E%3Ccircle cx='40' cy='0' r='1'/%3E%3Ccircle cx='0' cy='20' r='1'/%3E%3Ccircle cx='20' cy='20' r='1'/%3E%3Ccircle cx='40' cy='20' r='1'/%3E%3Ccircle cx='0' cy='40' r='1'/%3E%3Ccircle cx='20' cy='40' r='1'/%3E%3Ccircle cx='40' cy='40' r='1'/%3E%3C/g%3E%3C/svg%3E\"); background-repeat: repeat; background-position: calc(220px - var(--prts-scheme-reveal-x)) 0; background-size: var(--prts-scheme-grid-diagonal-cell) var(--prts-scheme-grid-diagonal-cell); -webkit-mask-image: linear-gradient(90deg,transparent 0,rgba(0,0,0,.12) 16%,rgba(0,0,0,.48) 56%,#000 100%); mask-image: linear-gradient(90deg,transparent 0,rgba(0,0,0,.12) 16%,rgba(0,0,0,.48) 56%,#000 100%)}html[data-dsh-prts][data-prts-scheme-transition=\"light\"]::view-transition-new(prts-scheme-grid){background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40'%3E%3Cg fill='none' stroke='%231c2429' stroke-width='.55'%3E%3Cpath d='M0 0H40M0 20H40M0 40H40M0 0V40M20 0V40M40 0V40' stroke-opacity='.2'/%3E%3Cpath d='M0 0L20 20L0 40M20 0L40 20L20 40' stroke-opacity='.42'/%3E%3Cpath d='M20 0L0 20L20 40M40 0L20 20L40 40' stroke-opacity='.2'/%3E%3C/g%3E%3Cg fill='%231c2429' fill-opacity='.32'%3E%3Ccircle cx='0' cy='0' r='1'/%3E%3Ccircle cx='20' cy='0' r='1'/%3E%3Ccircle cx='40' cy='0' r='1'/%3E%3Ccircle cx='0' cy='20' r='1'/%3E%3Ccircle cx='20' cy='20' r='1'/%3E%3Ccircle cx='40' cy='20' r='1'/%3E%3Ccircle cx='0' cy='40' r='1'/%3E%3Ccircle cx='20' cy='40' r='1'/%3E%3Ccircle cx='40' cy='40' r='1'/%3E%3C/g%3E%3C/svg%3E\")}html[data-dsh-prts] [data-prts-scheme-reveal-blend]{position: absolute; z-index: -1; inset: 0; width: 29px; background: linear-gradient(90deg,transparent,rgba(255,212,0,.025) 43%,rgba(235,244,245,.11) 50%,rgba(255,212,0,.018) 58%,transparent); -webkit-backdrop-filter: blur(2px); backdrop-filter: blur(2px); opacity: .54}html[data-dsh-prts] [data-prts-scheme-reveal=\"light\"] [data-prts-scheme-reveal-blend]{background: linear-gradient(90deg,transparent,rgba(28,36,41,.04) 42%,rgba(255,255,255,.2) 50%,rgba(255,212,0,.018) 58%,transparent)}html[data-dsh-prts] [data-prts-scheme-reveal=\"dark\"] [data-prts-scheme-reveal-blend]{background: linear-gradient(90deg,transparent,rgba(132,158,166,.035) 42%,rgba(235,244,245,.12) 50%,rgba(255,212,0,.018) 58%,transparent)}html[data-dsh-prts] [data-prts-scheme-reveal-edge]::before{content: \"\"; position: absolute; top: 18%; left: 7px; width: 15px; height: 28px; border-top: 1px solid rgba(235,244,245,.58); border-bottom: 1px solid rgba(235,244,245,.58); background: linear-gradient(rgba(255,212,0,.72),rgba(255,212,0,.72)) 50% 50% / 100% 1px no-repeat}html[data-dsh-prts] [data-prts-scheme-reveal-edge]::after{content: \"\"; position: absolute; top: calc(18% + 12px); left: 12px; width: 5px; height: 5px; border: 1px solid rgba(255,212,0,.78); background: rgba(8,12,14,.68); transform: rotate(45deg)}html[data-dsh-prts] [data-prts-scheme-reveal-node]{position: absolute; z-index: 2; bottom: clamp(88px,18vh,176px); left: 14px; display: block; box-sizing: border-box; width: 46px; height: 62px; color: #ffd400; font-style: normal; transform: translateX(10px); view-transition-name: prts-scheme-node; transition: transform 120ms var(--prts-ease-snap)}html[data-dsh-prts] [data-prts-scheme-reveal-edge][data-prts-scheme-reveal-side=\"left\"] [data-prts-scheme-reveal-node]{transform: translateX(calc(-100% - 10px))}html[data-dsh-prts] [data-prts-scheme-reveal-node]::before{content: \"\"; position: absolute; top: 30px; left: -10px; width: 10px; border-top: 1px solid rgba(255,212,0,.76)}html[data-dsh-prts] [data-prts-scheme-reveal-edge][data-prts-scheme-reveal-side=\"left\"] [data-prts-scheme-reveal-node]::before{right: -10px; left: auto}html[data-dsh-prts] [data-prts-scheme-reveal-mark]{position: absolute; top: 20px; left: 20px; display: block; width: 6px; height: 6px; border-top: 1px solid currentColor; border-right: 1px solid currentColor; view-transition-name: prts-scheme-mark}html[data-dsh-prts] [data-prts-scheme-reveal-meter]{position: absolute; top: 6px; left: 0; display: block; box-sizing: border-box; width: 6px; height: 50px; border: 1px solid rgba(255,212,0,.34); background: rgba(8,12,14,.32)}html[data-dsh-prts] [data-prts-scheme-reveal-meter]::after{content: \"\"; position: absolute; top: -1px; left: 6px; width: 3px; border-top: 1px solid rgba(255,212,0,.64); box-shadow: 0 24px rgba(255,212,0,.42),0 49px rgba(255,212,0,.64)}html[data-dsh-prts] [data-prts-scheme-reveal-meter-fill]{position: absolute; inset: 1px; display: block; background: currentColor; box-shadow: 0 0 5px rgba(255,212,0,.28); opacity: 0; transform-origin: 50% 100%}html[data-dsh-prts] [data-prts-scheme-reveal-label],html[data-dsh-prts] [data-prts-scheme-reveal-value]{position: absolute; left: 12px; display: block; color: currentColor; font-family: var(--prts-mono); font-style: normal; line-height: 1; white-space: nowrap}html[data-dsh-prts] [data-prts-scheme-reveal-label]{top: 7px; font-size: 7px; font-weight: 600; letter-spacing: .16em; opacity: .72}html[data-dsh-prts] [data-prts-scheme-reveal-value]{bottom: 7px; width: 24px; height: 11px; font-size: 11px; font-weight: 700; letter-spacing: .08em}html[data-dsh-prts][data-prts-scheme-transition-mode=\"view\"]::view-transition-new(prts-scheme-node){background-image: linear-gradient(#ffd400,#ffd400); background-position: left 1px bottom 7px; background-repeat: no-repeat; background-size: 2px var(--prts-scheme-control-meter-height,0); object-fit: none}html[data-dsh-prts][data-prts-scheme-transition-interactive]::view-transition-new(prts-scheme-node){background-image: var(--prts-scheme-control-value-image),linear-gradient(#ffd400,#ffd400); background-position: left 12px bottom 7px,left 1px bottom 7px; background-size: 24px 11px,2px var(--prts-scheme-control-meter-height,0)}html[data-dsh-prts][data-prts-scheme-transition-complete]::view-transition-group(prts-scheme-grid),html[data-dsh-prts][data-prts-scheme-transition-complete]::view-transition-group(prts-scheme-edge),html[data-dsh-prts][data-prts-scheme-transition-complete]::view-transition-group(prts-scheme-node),html[data-dsh-prts][data-prts-scheme-transition-complete]::view-transition-group(prts-scheme-mark){animation: prts-scheme-hud-release 100ms ease-out both}@keyframes prts-scheme-hud-release{0%,35%{opacity: 1}100%{opacity: 0}}@media (max-width: 640px){html[data-dsh-prts] [data-prts-scheme-reveal]{--prts-scheme-grid-cell: 16px; --prts-scheme-grid-diagonal-cell: 32px}}html[data-dsh-prts] [data-prts-scheme-current=\"dark\"] [data-prts-scheme-icon=\"light\"],html[data-dsh-prts] [data-prts-scheme-current=\"light\"] [data-prts-scheme-icon=\"dark\"]{display: none}html[data-dsh-prts] [data-prts-region=\"frame\"]{width: calc(100vw - var(--prts-nav-width)); height: calc(100dvh - var(--prts-host-top-inset)); min-height: 0; margin-left: var(--prts-nav-width); display: grid !important; background: var(--prts-canvas)}html[data-dsh-prts] [data-prts-region=\"sessions\"],html[data-dsh-prts] [data-prts-region=\"operation\"]{min-width: 0; min-height: 0}html[data-dsh-prts] [data-prts-region=\"sessions\"]{box-sizing: border-box; position: relative; z-index: 4; overflow: hidden; border-right: 1px solid var(--prts-line); background: var(--prts-panel); transition: opacity 180ms ease}html[data-dsh-prts] [data-prts-region=\"operation\"]{position: relative; z-index: 1; overflow: hidden; background: var(--prts-canvas); color: var(--prts-ink)}html[data-dsh-prts][data-prts-sessions-collapsed] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.workspaces\"],html[data-dsh-prts][data-prts-sessions-collapsed] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.settings\"]{opacity: 0; pointer-events: none}html[data-dsh-prts] [data-prts-region=\"sessions\"] > *,html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar\"]{height: 100%}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-rc7-sidebar-root]{box-sizing: border-box; width: 100% !important; min-width: var(--prts-sessions-width); padding: 14px 10px; overflow-y: auto; background: transparent !important; color: var(--prts-ink)}html[data-dsh-prts] [data-prts-region=\"sessions\"] > * > [data-slot=\"sidebar\"] > :first-child > button[aria-label*=\"new session\" i]{display: none !important}html[data-dsh-prts] [data-prts-workspace-row],html[data-dsh-prts] [data-prts-session-row]{--prts-row-shift: 0px; --prts-row-end-reserve: 29px; --prts-facility-height: var(--prts-workspace-height); position: relative; width: calc(100% - 20px); height: var(--prts-facility-height) !important; min-height: var(--prts-facility-height); display: flex; align-items: center; gap: 0 !important; margin: 0 0 var(--prts-facility-gap) 0; padding: 0 !important; overflow: visible; border: 0 !important; background: transparent !important; color: var(--prts-ink); isolation: isolate}html[data-dsh-prts] [data-prts-session-row]{--prts-facility-height: var(--prts-session-height); margin-left: 8px}@media (max-height: 820px) and (hover: hover) and (pointer: fine){html[data-dsh-prts]{--prts-workspace-height: 34px; --prts-session-height: 32px; --prts-facility-gap: 5px}}html[data-dsh-prts] [data-prts-workspace-row]::before{background: var(--prts-cyan) !important}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"],html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]),html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open]){--prts-row-shift: var(--prts-spine-travel)}html[data-dsh-prts] [data-prts-workspace-row]::before,html[data-dsh-prts] [data-prts-session-row]::before{content: \"\"; position: absolute; z-index: 2; inset: 0 auto 0 0; width: var(--prts-spine-width); background: var(--prts-line-strong); clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px ); transform: scaleX(var(--prts-spine-rest)); transform-origin: left center; transition: transform 220ms var(--prts-ease-spring),background-color 160ms ease}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"]::before,html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open])::before,html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open])::before{transform: scaleX(1)}html[data-dsh-prts] [data-prts-session-row][aria-selected=\"true\"]::before{background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-facility-face]{position: absolute; z-index: -1; inset: 0 0 0 5px; border: 1px solid var(--prts-line); background: var(--prts-panel-raised); clip-path: polygon( 3px 0,calc(50% - 25px) 0,calc(50% - 20px) 3.333px,calc(50% + 20px) 3.333px,calc(50% + 25px) 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px ); transform: translate3d(var(--prts-row-shift),0,0); transition: transform 220ms var(--prts-ease-spring),border-color 160ms ease,background-color 160ms ease; pointer-events: none}html[data-dsh-prts] :is([data-prts-workspace-row],[data-prts-session-row]) [data-prts-facility-face]{right: var(--prts-row-end-reserve)}html[data-dsh-prts] [data-prts-row-title],html[data-dsh-prts] [data-prts-session-row] > span:not([data-prts-facility-face]):not([data-prts-row-projection]):not([data-prts-session-actions]),html[data-dsh-prts] [data-prts-workspace-row] > span:not([data-prts-facility-face]):not([data-prts-row-projection]):not([data-prts-workspace-actions]){position: relative; z-index: 3; min-width: 0; transform: translate3d(var(--prts-row-shift),0,0); transition: transform 220ms var(--prts-ease-spring),color 160ms ease}html[data-dsh-prts] [data-prts-row-title]{flex: 1; overflow: hidden; padding: 0 10px 0 13px; font-size: 12px; font-weight: 650; line-height: var(--prts-facility-height); text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-session-row] [data-prts-row-title]::before{content: attr(data-prts-session-index); margin-right: 8px; color: var(--prts-dim); font-family: var(--prts-mono); font-size: 9px; letter-spacing: .08em}html[data-dsh-prts] [data-prts-workspace-actions],html[data-dsh-prts] [data-prts-session-actions]{position: absolute; z-index: 5; inset: 0 0 auto auto; height: var(--prts-facility-height) !important; align-items: stretch !important; gap: 1px !important; margin: 0 !important; transform: translate3d(var(--prts-row-shift),0,0)}html[data-dsh-prts] [data-prts-workspace-actions]{width: 57px}html[data-dsh-prts] [data-prts-session-actions]{width: 28px}html[data-dsh-prts] [data-prts-workspace-actions] > *,html[data-dsh-prts] [data-prts-session-actions] > *{height: 100% !important}html[data-dsh-prts] [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-actions] button{width: 28px !important; min-width: 28px !important; height: var(--prts-facility-height) !important; min-height: var(--prts-facility-height) !important; display: grid !important; place-items: center; padding: 0 !important; border: 1px solid var(--prts-line) !important; border-radius: 0 !important; background: var(--prts-panel-raised) !important; color: var(--prts-muted) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px); cursor: pointer}html[data-dsh-prts] [data-prts-workspace-actions] button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-session-actions] button:is(:hover,:focus-visible){border-color: var(--prts-yellow) !important; color: var(--prts-yellow) !important}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-session-actions] button{animation: prts-facility-button-dock 520ms both}html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-workspace-actions] > :nth-child(1) button{animation-delay: 55ms}html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) [data-prts-workspace-actions] > :nth-child(2){animation-delay: 125ms}}@keyframes prts-facility-button-dock{0%{opacity: 0; transform: translate3d(34px,0,0) scaleX(.94)}52%{opacity: 1; transform: translate3d(-4px,0,0) scaleX(.96)}72%{transform: translate3d(3px,0,0) scaleX(1.035)}88%{transform: translate3d(-1px,0,0) scaleX(.99)}100%{opacity: 1; transform: translate3d(0,0,0) scaleX(1)}}html[data-dsh-prts] [data-slot=\"conversation\"]{min-width: 0; height: 100%; background: transparent}html[data-dsh-prts] [data-slot=\"conversation.session.header\"]{border-bottom: 1px solid var(--prts-line); background: color-mix(in srgb,var(--prts-canvas-elevated) 92%,transparent); font-family: var(--prts-mono)}html[data-dsh-prts] [data-session-code]{color: var(--prts-yellow); font-size: 11px; letter-spacing: .12em}html[data-dsh-prts] [data-prts-conversation-control=\"header\"]{margin-left: auto}html[data-dsh-prts] [data-conversation-scroll]{position: relative; z-index: 2}html[data-dsh-prts] [data-conversation-scroll]::before{content: \"\"; position: absolute; z-index: -1; top: 28px; bottom: 140px; left: clamp(30px,3.6vw,52px); width: 1px; background: linear-gradient(var(--prts-line-strong),var(--prts-line),transparent)}html[data-dsh-prts] [data-message-role=\"user\"],html[data-dsh-prts] [data-chat-flow-kind=\"user\"]{position: relative; color: var(--prts-ink)}html[data-dsh-prts] [data-message-role=\"user\"]::before,html[data-dsh-prts] [data-chat-flow-kind=\"user\"]::before{content: \"\"; position: absolute; top: 8px; left: calc(clamp(-66px,-4vw,-42px)); width: 11px; height: 11px; border: 2px solid var(--prts-canvas); background: var(--prts-yellow); box-shadow: 0 0 0 1px var(--prts-yellow); transform: rotate(45deg)}html[data-dsh-prts] [data-message-role=\"user\"],html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"]{border: 1px solid var(--prts-line-strong) !important; border-left: 4px solid var(--prts-yellow) !important; border-radius: var(--prts-radius-card) !important; background: var(--prts-panel-raised) !important; color: var(--prts-ink) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px); box-shadow: none !important}html[data-dsh-prts] [data-message-role=\"user\"] :is([data-markdown],[class*=\"markdown\" i]),html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] :is([data-markdown],[class*=\"markdown\" i]){background: transparent !important}html[data-dsh-prts] [data-message-role=\"user\"] :is(pre,table,blockquote),html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] :is(pre,table,blockquote){border: 1px solid var(--prts-line); background: var(--prts-glass-dense)}html[data-dsh-prts] [data-message-role=\"user\"] :is(pre,code),html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] :is(pre,code){font-family: var(--prts-mono) !important}html[data-dsh-prts] [data-message-role=\"user\"] pre,html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"] pre{max-width: 100%; overflow: auto; padding: 14px; border-left: 3px solid var(--prts-cyan) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [aria-invalid=\"true\"],html[data-dsh-prts] [data-status=\"error\"],html[data-dsh-prts] [data-status=\"denied\"]{border-color: var(--prts-red) !important; color: var(--prts-red) !important}html[data-dsh-prts] [data-prts-ambient-layer]{position: absolute; z-index: 0; inset: 0; overflow: hidden; opacity: .86; background: radial-gradient(circle at 48% 35%,color-mix(in srgb,var(--prts-cyan) 7%,transparent),transparent 32%),linear-gradient(115deg,transparent 0 42%,color-mix(in srgb,var(--prts-line) 18%,transparent) 42.2% 42.5%,transparent 42.7%),repeating-linear-gradient(0deg,transparent 0 27px,color-mix(in srgb,var(--prts-line) 12%,transparent) 27px 28px); pointer-events: none}html[data-dsh-prts][data-prts-texture=\"restrained\"] [data-prts-ambient-layer]{opacity: .56}html[data-dsh-prts][data-prts-texture=\"off\"] [data-prts-ambient-layer]{display: none}html[data-dsh-prts] [data-prts-particle-layer]{position: absolute; z-index: 1; inset: 0; width: 100%; height: 100%; pointer-events: none}html[data-dsh-prts] [data-prts-particle-layer]{opacity: 1; transition: opacity 120ms ease-out}html[data-dsh-prts] [data-prts-resize-shield]{content-visibility: hidden !important; contain-intrinsic-size: auto 800px}html[data-dsh-prts] [data-prts-particle-layer][data-prts-resizing]{opacity: .78; transition: none}html[data-dsh-prts] [data-prts-particle-layer][data-prts-resize-restoring]{opacity: 1; transition: opacity 120ms ease-out}html[data-dsh-prts] [data-prts-ambient-layer][data-prts-resizing]{opacity: .42; background: color-mix(in srgb,var(--prts-panel) 92%,var(--prts-canvas)); transition: none}html[data-dsh-prts] [data-prts-ambient-layer][data-prts-resizing] :is( [data-prts-ambient-glow],[data-prts-session-pickup] ){animation-play-state: paused !important}html[data-dsh-prts] :is( [data-prts-conversation-preview][data-prts-resizing],[data-prts-conversation-history-hint][data-prts-resizing],[data-prts-conversation-history-status][data-prts-resizing],[data-prts-theme-settings][data-prts-resizing],[data-prts-settings-backdrop][data-prts-resizing] ),html[data-dsh-prts] [data-prts-resizing] > [data-composer-card]{backdrop-filter: none !important; -webkit-backdrop-filter: none !important; transition: none !important}html[data-dsh-prts] [data-prts-hero-active]::before{content: \"\"; position: absolute; inset: 0; pointer-events: none}html[data-dsh-prts]{--prts-hero-mark-base: clamp(380px,46%,720px); --prts-hero-mark-size: min(var(--prts-hero-mark-base),42dvh)}html[data-dsh-prts] [data-prts-hero-active] [data-composer-seat],html[data-dsh-prts] [data-prts-hero-active] [data-slot=\"conversation.composer\"]{position: relative; z-index: 5}html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-composer-fallback]{position: relative; border: 1px solid var(--prts-line-strong) !important; border-bottom: 3px solid var(--prts-yellow) !important; border-radius: var(--prts-radius-card) !important; background: var(--prts-active-glass) !important; clip-path: polygon(3px 0,calc(50% - 42px) 0,calc(50% - 37px) 5px,calc(50% + 37px) 5px,calc(50% + 42px) 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px); box-shadow: 0 14px 34px rgba(0,0,0,.18); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-composer-card] textarea,html[data-dsh-prts] [data-prts-composer-fallback] textarea{border: 0 !important; background: transparent !important; color: var(--prts-ink) !important; caret-color: var(--prts-yellow)}html[data-dsh-prts] [data-composer-card] button,html[data-dsh-prts] [data-prts-conversation-control]{border: 1px solid var(--prts-line) !important; border-radius: var(--prts-radius-control) !important; background: var(--prts-panel-raised) !important; color: var(--prts-ink) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px)}html[data-dsh-prts] [data-composer-card] button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-conversation-control]:is(:hover,:focus-visible){border-color: var(--prts-yellow) !important}html[data-dsh-prts] [data-composer-card] button[aria-label*=\"send\" i],html[data-dsh-prts] [data-composer-card] button[type=\"submit\"]{background: var(--prts-yellow) !important; color: var(--prts-yellow-ink) !important}html[data-dsh-prts] [data-composer-card] button:active,html[data-dsh-prts] [data-prts-conversation-control]:active{transform: translateY(1px) scale(.98)}html[data-dsh-prts] [data-produced-files-row] > button[type=\"button\"],html[data-dsh-prts] [data-prts-to-bottom]{min-height: 36px; border: 1px solid var(--prts-line) !important; background: var(--prts-active-glass) !important; color: var(--prts-ink) !important; clip-path: polygon(3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px)}html[data-dsh-prts] [data-prts-glass-control=\"model\"],html[data-dsh-prts] [data-prts-glass-control=\"permission\"],html[data-dsh-prts] [data-prts-glass-control=\"preset\"]{border: 1px solid var(--prts-line) !important; border-radius: var(--prts-radius-control) !important; background: var(--prts-active-glass) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-glass-menu],html[data-dsh-prts] [data-prts-floating-glass=\"menu\"],html[data-dsh-prts] [data-prts-floating-glass=\"listbox\"],html[data-dsh-prts] [data-prts-floating-glass=\"popover\"]{border: 1px solid var(--prts-glass-border) !important; border-radius: var(--prts-radius-overlay) !important; background: var(--prts-active-glass) !important; color: var(--prts-ink) !important; box-shadow: var(--prts-shadow-glass-overlay) !important; backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-floating-glass=\"dialog\"]{border: 1px solid var(--prts-glass-border) !important; border-radius: var(--prts-radius-overlay) !important; background: var(--prts-panel) !important; color: var(--prts-ink) !important; box-shadow: var(--prts-shadow-glass-overlay) !important; backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-prts-floating-item]{min-height: 38px; border-radius: var(--prts-radius-control) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-floating-item]:is(:hover,[data-highlighted]){background: var(--prts-panel-muted) !important}html[data-dsh-prts] [data-prts-floating-input]{min-height: 44px; border: 1px solid var(--prts-line) !important; background: var(--prts-panel) !important; color: var(--prts-ink) !important}html[data-dsh-prts] :is( [data-prts-floating-glass=\"menu\"],[data-prts-floating-glass=\"listbox\"],[data-prts-floating-glass=\"popover\"] ) [data-prts-floating-danger]{color: var(--prts-red) !important}html[data-dsh-prts] [data-prts-floating-scrim]{background: rgba(3,5,6,.62) !important}html[data-dsh-prts-settings] .prts-plugin-settings{width: 100%; display: grid; gap: 16px; color: inherit; font: inherit}html[data-dsh-prts-settings] .prts-plugin-settings__header{display: grid; gap: 5px; padding-bottom: 14px; border-bottom: 1px solid color-mix(in srgb,currentColor 18%,transparent)}html[data-dsh-prts-settings] .prts-plugin-settings__header h3,html[data-dsh-prts-settings] .prts-plugin-settings__header p{margin: 0}html[data-dsh-prts-settings] .prts-plugin-settings__header h3{font-size: 18px; font-weight: 650}html[data-dsh-prts-settings] .prts-plugin-settings__header p,html[data-dsh-prts-settings] .prts-plugin-settings__copy small{color: color-mix(in srgb,currentColor 62%,transparent); font-size: 12px; line-height: 1.5}html[data-dsh-prts-settings] .prts-plugin-settings__safe{margin: 0; padding: 10px 12px; border: 1px solid color-mix(in srgb,#df5750 42%,transparent); border-radius: 8px; background: color-mix(in srgb,#df5750 8%,transparent); color: inherit; font-size: 12px}html[data-dsh-prts-settings] .prts-plugin-settings__list{overflow: hidden; border: 1px solid color-mix(in srgb,currentColor 16%,transparent); border-radius: 10px}html[data-dsh-prts-settings] .prts-plugin-settings__row{min-height: 64px; display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 12px 14px}html[data-dsh-prts-settings] .prts-plugin-settings__row + .prts-plugin-settings__row{border-top: 1px solid color-mix(in srgb,currentColor 12%,transparent)}html[data-dsh-prts-settings] .prts-plugin-settings__copy{min-width: 0; display: grid; gap: 3px}html[data-dsh-prts-settings] .prts-plugin-settings__copy strong{font-size: 13px; font-weight: 600}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch']{position: relative; width: 42px; height: 24px; flex: 0 0 auto; padding: 0; border: 0; border-radius: 999px; background: color-mix(in srgb,currentColor 18%,transparent); color: inherit; cursor: pointer}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'] > span{position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: currentColor; transition: transform 120ms ease}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'].is-active{background: var(--color-primary,#d9b800); color: #111}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'].is-active > span{transform: translateX(18px)}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch']:disabled{cursor: not-allowed; opacity: .45}@media (prefers-reduced-motion: reduce){html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch'] > span{transition: none}}@media (max-width: 640px){html[data-dsh-prts]{--prts-nav-width: 52px}html[data-dsh-prts] [data-conversation-scroll]::before{left: 18px}html[data-dsh-prts] [data-message-role]::before,html[data-dsh-prts] [data-chat-flow-kind]::before{left: -25px}html[data-dsh-prts] [data-slot=\"conversation.session.header\"]{padding-inline: 12px}html[data-dsh-prts-settings] .prts-settings{padding: 12px}}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){html[data-dsh-prts] [data-prts-floating-glass],html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-glass-menu]{background: var(--prts-panel) !important}}@media (hover: hover) and (pointer: fine){html[data-dsh-prts] [data-prts-nav-rail] > button:hover b{transform: translateY(-1px)}}@media (prefers-reduced-transparency: reduce){html[data-dsh-prts]{--prts-active-glass: var(--prts-panel); --prts-active-glass-filter: none}}@media (prefers-contrast: more){html[data-dsh-prts]{--prts-line: currentColor; --prts-line-strong: currentColor}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] ),html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::before,html[data-dsh-prts] :is( [data-prts-shell],[data-prts-shell] *,[data-prts-particle-layer],[data-prts-ambient-layer],[data-prts-conversation-scale],[data-prts-conversation-scale] *,[data-prts-conversation-preview],[data-prts-conversation-preview] *,[data-prts-facility-face],[data-composer-card],[data-prts-composer-fallback],[data-prts-conversation-control],[data-prts-to-bottom] )::after{scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important}}html[data-dsh-prts]{--prts-hero-mark-base: clamp(300px,38%,520px); --prts-hero-mark-size: min(var(--prts-hero-mark-base),32dvh)}html[data-dsh-prts] [data-prts-region=\"sessions\"] > * > [data-slot=\"sidebar\"] > :first-child > button[aria-label*=\"new session\" i]{min-height: 40px; display: grid !important; place-items: center; margin: 0 0 14px; border: 1px solid var(--prts-line) !important; border-radius: var(--prts-radius-card) !important; background: var(--prts-panel-raised) !important; color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-rail-brand],html[data-dsh-prts] [data-prts-nav-rail] > button,html[data-dsh-prts] [data-prts-nav-bottom] > button{position: relative; width: 100%; min-width: 0; min-height: 48px; display: grid; place-items: center; padding: 0; border: 0; border-bottom: 1px solid #242b2f; border-radius: 0; background: transparent; color: #aeb8bd !important; cursor: pointer; clip-path: none}html[data-dsh-prts] [data-prts-rail-brand]{height: 64px; border-bottom-color: #30383d}html[data-dsh-prts] [data-prts-rail-brand]:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-rail-brand][aria-expanded=\"true\"],html[data-dsh-prts] [data-prts-nav-rail] > button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-nav-bottom] > button:is(:hover,:focus-visible){background: #151a1d; color: #f3f6f7 !important}html[data-dsh-prts] [data-prts-rail-brand][aria-expanded=\"true\"]::after{content: \"\"; position: absolute; inset: 7px auto 7px 0; width: 2px; background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-nav-rail] small,html[data-dsh-prts] [data-prts-connection-label]{position: absolute; z-index: 180; top: 50%; left: calc(100% + 9px); width: max-content; max-width: 180px; padding: 6px 8px; border: 1px solid #3d474d; border-radius: 3px; opacity: 0; background: #0e1215; color: #eef2f3; font: 700 9px/1.2 var(--prts-mono); letter-spacing: .04em; text-align: left; transform: translate3d(-5px,-50%,0); transition: opacity 130ms ease,transform 160ms var(--prts-ease-snap); pointer-events: none; white-space: nowrap}html[data-dsh-prts] [data-prts-nav-rail] button:is(:hover,:focus-visible) small,html[data-dsh-prts] [data-prts-connection-indicator]:is(:hover,:focus-visible) [data-prts-connection-label]{opacity: 1; transform: translate3d(0,-50%,0)}html[data-dsh-prts] [data-prts-connection-indicator]{position: relative; min-height: 38px; padding: 0; color: #9da8ad}html[data-dsh-prts] [data-prts-nav-bottom] svg,html[data-dsh-prts] [data-prts-nav-bottom] b{display: block; color: currentColor}html[data-dsh-prts] [data-message-role=\"user\"],html[data-dsh-prts] [data-chat-flow-kind=\"user\"] [class$=\"_bubble\"],html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-composer-fallback],html[data-dsh-prts] [data-composer-card] button,html[data-dsh-prts] [data-prts-conversation-control],html[data-dsh-prts] [data-produced-files-row] > button[type=\"button\"],html[data-dsh-prts] [data-prts-to-bottom]{border-radius: 3px !important; clip-path: none !important}html[data-dsh-prts] [data-prts-facility-face]{right: 0 !important; border: 0 !important; background: var(--prts-line-strong)}html[data-dsh-prts] [data-prts-facility-face]::after{content: \"\"; position: absolute; inset: 1px; background: var(--prts-panel-raised); clip-path: polygon( 3px 0,calc(50% - 25px) 0,calc(50% - 20px) 3.333px,calc(50% + 20px) 3.333px,calc(50% + 25px) 0,calc(100% - 3px) 0,100% 3px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 3px )}html[data-dsh-prts] [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-actions] button{border: 1px solid var(--prts-line-strong) !important; border-radius: 3px !important; clip-path: none !important}html[data-dsh-prts] [data-prts-hero-active]{display: grid; grid-template-rows: minmax(220px,1fr) auto; align-content: center; gap: clamp(28px,5dvh,54px); padding-top: 24px; padding-bottom: 34px}html[data-dsh-prts] [data-prts-hero-active] [data-phase=\"hero\"]{min-height: min(36dvh,390px); align-self: end}html[data-dsh-prts] [data-prts-hero-active] [data-composer-seat]{align-self: start; justify-self: center}html[data-dsh-prts]{--prts-hero-mark-base: clamp(320px,42%,580px); --prts-hero-mark-size: min(var(--prts-hero-mark-base),42dvh)}html[data-dsh-prts] [data-prts-region=\"frame\"]{position: relative}html[data-dsh-prts] [data-prts-region=\"frame\"] > [data-shell-overlay]{position: absolute !important; z-index: 120; inset: 0; min-width: 0; min-height: 0; pointer-events: none}html[data-dsh-prts] [data-prts-region=\"frame\"] > [data-shell-overlay] > *{pointer-events: auto}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.settings\"]{opacity: 1; visibility: visible; pointer-events: auto}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.settings\"] > button{color: var(--prts-ink) !important}html[data-dsh-prts] [data-prts-workspace-icon]{display: none !important}html[data-dsh-prts] [data-prts-workspace-disclosure]{position: relative; z-index: 4; width: 14px; flex: 0 0 14px; display: grid; place-items: center; margin-left: calc(var(--prts-spine-width) + 4px); color: var(--prts-muted); transform: translate3d(var(--prts-row-shift),0,0); transition: transform 220ms var(--prts-ease-spring),color 160ms ease}html[data-dsh-prts] [data-prts-workspace-row]::before,html[data-dsh-prts] [data-prts-session-row]::before{clip-path: polygon( 1px 0,calc(100% - 1px) 0,100% 1px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 1px),calc(100% - 1px) 100%,1px 100%,0 calc(100% - 1px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 1px ) !important}html[data-dsh-prts] :is([data-prts-workspace-row],[data-prts-session-row]) [data-prts-facility-face]{right: var(--prts-row-end-reserve) !important}html[data-dsh-prts] [data-prts-facility-face]{border: 0 !important; background: var(--prts-line-strong) !important; clip-path: polygon( 1px 0,calc(50% - 25px) 0,calc(50% - 20px) 3.333px,calc(50% + 20px) 3.333px,calc(50% + 25px) 0,calc(100% - 1px) 0,100% 1px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 1px),calc(100% - 1px) 100%,1px 100%,0 calc(100% - 1px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 1px ) !important}html[data-dsh-prts] [data-prts-facility-face]::after{content: \"\"; position: absolute; inset: 1px; background: var(--prts-panel-raised); clip-path: polygon( 0 0,calc(50% - 24px) 0,calc(50% - 19px) 3.333px,calc(50% + 19px) 3.333px,calc(50% + 24px) 0,100% 0,100% calc(50% - 4px),calc(100% - 2px) calc(50% - 2px),calc(100% - 2px) calc(50% + 2px),100% calc(50% + 4px),100% 100%,0 100%,0 calc(50% + 4px),2px calc(50% + 2px),2px calc(50% - 2px),0 calc(50% - 4px) )}html[data-dsh-prts] [data-prts-workspace-actions]{width: 57px !important}html[data-dsh-prts] [data-prts-session-actions]{width: 28px !important}html[data-dsh-prts] [data-prts-workspace-actions] button,html[data-dsh-prts] [data-prts-session-actions] button{width: 28px !important; min-width: 28px !important; position: relative; isolation: isolate; overflow: hidden; border: 0 !important; border-radius: 0 !important; background: var(--prts-line) !important; clip-path: polygon( 1px 0,calc(100% - 1px) 0,100% 1px,100% calc(50% - 5px),calc(100% - 2px) calc(50% - 3px),calc(100% - 2px) calc(50% + 3px),100% calc(50% + 5px),100% calc(100% - 1px),calc(100% - 1px) 100%,1px 100%,0 calc(100% - 1px),0 calc(50% + 5px),2px calc(50% + 3px),2px calc(50% - 3px),0 calc(50% - 5px),0 1px ) !important}html[data-dsh-prts] [data-prts-workspace-actions] button::before,html[data-dsh-prts] [data-prts-session-actions] button::before{content: \"\"; position: absolute; z-index: -1; inset: 1px; background: var(--prts-panel-raised); clip-path: polygon( 0 0,100% 0,100% calc(50% - 4px),calc(100% - 2px) calc(50% - 2px),calc(100% - 2px) calc(50% + 2px),100% calc(50% + 4px),100% 100%,0 100%,0 calc(50% + 4px),2px calc(50% + 2px),2px calc(50% - 2px),0 calc(50% - 4px) ); pointer-events: none}html[data-dsh-prts] [data-prts-workspace-actions] button:is(:hover,:focus-visible),html[data-dsh-prts] [data-prts-session-actions] button:is(:hover,:focus-visible){background: var(--prts-yellow) !important}html[data-dsh-prts] [data-prts-session-time]{position: relative; z-index: 3; flex: 0 0 auto; margin-right: 39px; padding-left: 8px; transform: translate3d(var(--prts-row-shift),0,0); transition: opacity 120ms ease,transform 220ms var(--prts-ease-spring)}html[data-dsh-prts] [data-prts-session-row]:hover [data-prts-session-time]{opacity: 0}html[data-dsh-prts] [data-composer-card],html[data-dsh-prts] [data-prts-composer-fallback]{position: relative; isolation: isolate; overflow: visible; border: 0 !important; border-radius: 0 !important; background: transparent !important; box-shadow: none !important; clip-path: none !important; backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-composer-card]::before,html[data-dsh-prts] [data-prts-composer-fallback]::before{content: \"\"; position: absolute; z-index: 0; inset: 0; background: var(--prts-line-strong); clip-path: polygon( 3px 0,calc(50% - 42px) 0,calc(50% - 37px) 5px,calc(50% + 37px) 5px,calc(50% + 42px) 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ); box-shadow: 0 14px 34px rgba(0,0,0,.18); pointer-events: none}html[data-dsh-prts] [data-composer-card]::after,html[data-dsh-prts] [data-prts-composer-fallback]::after{content: \"\"; position: absolute; z-index: 1; inset: 1px 1px 3px; background: var(--prts-composer-surface,var(--prts-active-glass)); clip-path: polygon( 2px 0,calc(50% - 41px) 0,calc(50% - 36px) 5px,calc(50% + 36px) 5px,calc(50% + 41px) 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter); pointer-events: none}html[data-dsh-prts] [data-composer-card] > :not([data-prts-composer-signal]),html[data-dsh-prts] [data-prts-composer-fallback] > :not([data-prts-composer-signal]){position: relative; z-index: 2}html[data-dsh-prts] [data-prts-composer-signal]{position: absolute; z-index: 3; inset: 0; overflow: visible; pointer-events: none}html[data-dsh-prts] [data-prts-composer-signal]::before{content: \"\"; position: absolute; left: 50%; background: var(--prts-yellow); opacity: .82; pointer-events: none; transition: transform 160ms var(--prts-ease-snap),opacity 160ms ease}html[data-dsh-prts] [data-prts-composer-signal]::before{bottom: 0; width: calc(100% - 6px); height: 3px; transform: translateX(-50%) scaleX(.16)}html[data-dsh-prts] [data-composer-card]:focus-within,html[data-dsh-prts] [data-prts-composer-fallback]:focus-within{--prts-composer-surface: color-mix(in srgb,var(--prts-active-glass) 94%,var(--prts-ink) 6%)}html[data-dsh-prts] :is([data-composer-card],[data-prts-composer-fallback]):focus-within [data-prts-composer-signal]::before{opacity: 1; transform: translateX(-50%) scaleX(1)}html[data-dsh-prts] [data-composer-card] textarea:focus-visible,html[data-dsh-prts] [data-prts-composer-fallback] textarea:focus-visible{outline: none !important}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-composer-signal]::before{transition: none}}html[data-dsh-prts] [data-prts-theme-settings] :is(input,textarea,select):focus-visible,html[data-dsh-prts] [data-prts-floating-input]:focus-visible{outline: none !important; border-color: var(--prts-yellow) !important; box-shadow: 0 0 0 1px var(--prts-yellow) !important}html[data-dsh-prts] [data-prts-conversation-control=\"header\"]{height: 36px; min-height: 36px; display: inline-flex; align-items: center; gap: 6px; padding: 0 10px}html[data-dsh-prts] [data-prts-conversation-control=\"header\"] svg{width: 16px; height: 16px; flex: 0 0 16px}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] button[aria-label*=\"send\" i],html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] button[type=\"submit\"]{min-width: 40px !important; padding: 0 !important; font-size: 11px}html[data-dsh-prts] [data-prts-hero-active] [data-prts-glass-control=\"action\"]{width: 36px !important; min-width: 36px !important; padding: 0 !important; flex: 0 0 36px}html[data-dsh-prts] :is( [data-composer-card] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-composer-fallback] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-glass-control],[data-prts-conversation-control]:not([data-prts-conversation-control=\"micro\"]),[data-produced-files-row] > button[type=\"button\"] ){--prts-control-outline: var(--prts-line); --prts-control-surface: var(--prts-panel-raised); position: relative; isolation: isolate; overflow: hidden; border: 0 !important; border-radius: 0 !important; background: var(--prts-control-outline) !important; color: var(--prts-ink) !important; clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ) !important}html[data-dsh-prts] :is( [data-composer-card] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-composer-fallback] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-glass-control],[data-prts-conversation-control]:not([data-prts-conversation-control=\"micro\"]),[data-produced-files-row] > button[type=\"button\"] )::before{content: \"\"; position: absolute; z-index: -1; inset: 1px; background: var(--prts-control-surface); clip-path: polygon( 2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); pointer-events: none}html[data-dsh-prts] :is( [data-composer-card] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-composer-fallback] button:not([data-prts-glass-menu] *):not([data-prts-floating-glass] *):not([role=\"menu\"] *):not([role=\"listbox\"] *),[data-prts-glass-control],[data-prts-conversation-control]:not([data-prts-conversation-control=\"micro\"]),[data-produced-files-row] > button[type=\"button\"] ):is(:hover,:focus-visible){--prts-control-outline: var(--prts-yellow)}html[data-dsh-prts] :is( [data-prts-glass-control=\"model\"],[data-prts-glass-control=\"permission\"],[data-prts-glass-control=\"preset\"],[data-prts-conversation-control=\"utility\"],[data-produced-files-row] > button[type=\"button\"] ){--prts-control-surface: var(--prts-active-glass) !important}html[data-dsh-prts] [data-composer-card] button[aria-label*=\"send\" i],html[data-dsh-prts] [data-composer-card] button[type=\"submit\"],html[data-dsh-prts] [data-prts-conversation-control=\"cta\"]{font-size: 11px; --prts-control-outline: var(--prts-yellow) !important; --prts-control-surface: var(--prts-yellow) !important; color: var(--prts-yellow-ink) !important}html[data-dsh-prts] [data-prts-conversation-control=\"danger\"]{--prts-control-outline: var(--prts-red) !important; --prts-control-surface: color-mix(in srgb,var(--prts-red) 14%,var(--prts-panel-raised)) !important; color: var(--prts-red) !important}html[data-dsh-prts] [data-prts-hero-active]{--prts-hero-narrow-spacer: clamp(24px,8dvh,72px); --prts-hero-wide-spacer: clamp(96px,22dvh,340px); min-height: 100%; height: calc(100% - 48px) !important; overflow-y: auto; display: grid; grid-template-columns: minmax(0,1fr); grid-template-rows: minmax(0,1fr) auto min( var(--prts-hero-wide-spacer),max(var(--prts-hero-narrow-spacer),calc(var(--prts-hero-narrow-spacer) + 63vw - 403.2px)) ); align-content: stretch; gap: clamp(24px,calc(5vw - 8px),40px); padding: clamp(18px,calc(1.875vw + 6px),24px) clamp(12px,3vw,42px) 0 clamp(18px,3vw,42px)}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card],html[data-dsh-prts] [data-prts-hero-active] [data-prts-composer-fallback]{width: 100%; margin-inline: auto; padding: 10px 12px}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] textarea,html[data-dsh-prts] [data-prts-hero-active] [data-prts-composer-fallback] textarea{min-height: 64px; line-height: 1.55; resize: vertical}html[data-dsh-prts] [data-prts-hero-active] [data-composer-card] button,html[data-dsh-prts] [data-prts-hero-active] [data-prts-glass-control]{min-height: 36px}html[data-dsh-prts] [data-prts-hero-active]::before{margin-top: calc(var(--prts-hero-mark-size) + 44px)}html[data-dsh-prts] [data-prts-hero-active] [data-phase=\"hero\"]{grid-row: 1; min-height: 0; align-self: stretch}html[data-dsh-prts] [data-prts-hero-active] [data-composer-seat]{grid-row: 2; width: min(calc(780px + 32px),100%); min-width: 0 !important; align-self: end; justify-self: center}html[data-dsh-prts] [data-prts-theme-settings]{--prts-settings-text: .875rem; --prts-settings-small: .75rem; --prts-settings-heading: .875rem; position: fixed; z-index: 10000; inset: 50% auto auto 50%; width: min(clamp(50rem,55vw,65rem),calc(100vw - 2rem)); height: auto; max-width: none; max-height: min(60rem,calc(100dvh - 2rem)); container: prts-settings / inline-size; margin: 0; padding: 0; overflow: visible; border: 0; border-radius: 0; background: transparent; color: var(--prts-ink); box-shadow: 0 28px 90px rgba(0,0,0,.46); clip-path: none; opacity: 0; transform: translate(-50%,calc(-50% + 8px)) scale(.992); pointer-events: none; transition: opacity 150ms ease,transform 220ms var(--prts-ease-spring)}html[data-dsh-prts] [data-prts-theme-settings][open]{display: block}html[data-dsh-prts] [data-prts-theme-settings][data-prts-settings-visible]{opacity: 1; transform: translate(-50%,-50%) scale(1); pointer-events: auto}html[data-dsh-prts] [data-prts-theme-settings][data-prts-resizing]{transition: none}html[data-dsh-prts] [data-prts-theme-settings][data-prts-resizing]::backdrop,html[data-dsh-prts] [data-prts-settings-backdrop][data-prts-resizing]{backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-prts-theme-settings][data-prts-resizing] [data-prts-option-sample=\"glass\"]::after{backdrop-filter: none; -webkit-backdrop-filter: none; transition: none}html[data-dsh-prts] [data-prts-theme-settings]::before{content: none}html[data-dsh-prts] [data-prts-theme-settings]::backdrop{background: color-mix(in srgb,var(--prts-canvas) 72%,transparent); backdrop-filter: blur(5px) saturate(.82); -webkit-backdrop-filter: blur(5px) saturate(.82)}html[data-dsh-prts] [data-prts-settings-backdrop]{z-index: 9999; inset: 0; background: color-mix(in srgb,var(--prts-canvas) 72%,transparent); backdrop-filter: blur(5px) saturate(.82); -webkit-backdrop-filter: blur(5px) saturate(.82)}html[data-dsh-prts] [data-prts-settings-frame]{position: relative; height: auto; max-height: inherit; display: grid; grid-template-rows: auto minmax(0,1fr); overflow: hidden; isolation: isolate; border: 1px solid var(--prts-line-strong); background: linear-gradient(125deg,color-mix(in srgb,var(--prts-cyan) 4%,transparent),transparent 34%),var(--prts-panel); clip-path: polygon(4px 0,calc(100% - 38px) 0,100% 38px,100% calc(100% - 4px),calc(100% - 4px) 100%,4px 100%,0 calc(100% - 4px),0 4px)}html[data-dsh-prts] [data-prts-settings-frame]::before{content: \"\"; position: absolute; z-index: 3; top: 0; right: 37px; width: 118px; height: 2px; background: var(--prts-cyan); pointer-events: none}html[data-dsh-prts] [data-prts-theme-settings-header]{display: grid; align-items: center; min-height: 68px; grid-template-columns: minmax(180px,auto) minmax(0,1fr); gap: 14px; padding: 13px 48px 12px 16px; border-bottom: 1px solid var(--prts-line-strong); background: color-mix(in srgb,var(--prts-canvas-elevated) 92%,transparent)}html[data-dsh-prts] [data-prts-theme-settings-header] > span{display: grid; gap: 4px}html[data-dsh-prts] [data-prts-theme-settings-header] small,html[data-dsh-prts] [data-prts-theme-settings] section > header small,html[data-dsh-prts] [data-prts-theme-settings] summary small,html[data-dsh-prts] [data-prts-settings-actions] small{color: var(--prts-muted); font: 700 8px/1.3 var(--prts-mono); letter-spacing: .08em}html[data-dsh-prts] [data-prts-theme-settings-header] strong{font: 800 19px/1 var(--prts-display); letter-spacing: .07em}html[data-dsh-prts] [data-prts-settings-summary]{display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 6px}html[data-dsh-prts] [data-prts-settings-summary] span{min-height: 22px; padding: 4px 7px; box-shadow: inset 0 0 0 1px var(--prts-line); background: color-mix(in srgb,var(--prts-panel-raised) 86%,transparent); color: var(--prts-cyan); font: 700 8px/1 var(--prts-mono); clip-path: polygon(2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px)}html[data-dsh-prts] [data-prts-theme-settings-close]{position: absolute; z-index: 5; top: 13px; right: 13px; width: 36px; height: 36px; color: var(--prts-ink)}html[data-dsh-prts] [data-prts-theme-settings-scroll]{min-height: 0; overflow-y: auto; padding: 12px; scrollbar-gutter: stable}html[data-dsh-prts] [data-prts-settings-presets],html[data-dsh-prts] [data-prts-settings-common],html[data-dsh-prts] [data-prts-settings-advanced],html[data-dsh-prts] [data-prts-settings-actions]{position: relative; margin: 0; overflow: hidden; border: 0; border-bottom: 1px solid var(--prts-line-strong); background: color-mix(in srgb,var(--prts-canvas-elevated) 82%,transparent); clip-path: none}html[data-dsh-prts] [data-prts-settings-presets] > header,html[data-dsh-prts] [data-prts-settings-common] > header{min-height: 42px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 11px; border-bottom: 1px solid color-mix(in srgb,var(--prts-line) 72%,transparent)}html[data-dsh-prts] [data-prts-settings-presets] > header span,html[data-dsh-prts] [data-prts-settings-common] > header span,html[data-dsh-prts] [data-prts-settings-advanced] summary > span{display: flex; align-items: baseline; gap: 9px}html[data-dsh-prts] [data-prts-settings-presets] > header strong,html[data-dsh-prts] [data-prts-settings-common] > header strong,html[data-dsh-prts] [data-prts-settings-advanced] summary strong{font: 800 13px/1 var(--prts-display); letter-spacing: .05em}html[data-dsh-prts] [data-prts-advanced-summary]{pointer-events: none; color: var(--prts-cyan); font: 800 8px/1 var(--prts-mono); letter-spacing: .06em}html[data-dsh-prts] [data-prts-settings-presets],html[data-dsh-prts] [data-prts-settings-common],html[data-dsh-prts] [data-prts-settings-advanced],html[data-dsh-prts] [data-prts-settings-actions]{border-inline: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-settings-presets]{border-top: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-settings-presets] > div{display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 0; padding: 0}html[data-dsh-prts] [data-prts-preset-card]{display: grid; text-align: left; min-height: 66px; align-content: center; gap: 6px; padding: 11px 12px !important; border-right: 1px solid var(--prts-line) !important; position: relative; overflow: hidden; box-shadow: none; background: transparent !important; clip-path: none}html[data-dsh-prts] [data-prts-preset-card]:last-child{border-right: 0 !important}html[data-dsh-prts] [data-prts-preset-card] strong{font-size: 12px}html[data-dsh-prts] [data-prts-preset-card] span{overflow: hidden; font-size: 8px; line-height: 1.35; text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-preset-card].is-selected{box-shadow: inset 0 -2px 0 var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 9%,transparent) !important}html[data-dsh-prts] [data-prts-settings-common-grid]{display: grid; grid-template-columns: repeat(2,minmax(0,1fr))}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{min-height: 50px; grid-template-columns: 94px minmax(0,1fr); align-items: center; gap: 8px; padding: 7px 10px; border-right: 1px solid var(--prts-line); border-bottom: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:nth-child(2n){border-right: 0}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:nth-last-child(-n + 2){border-bottom: 0}html[data-dsh-prts] [data-prts-setting-row] > div{min-width: 0; display: flex; gap: 4px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row] > span{min-width: 0; display: grid; gap: 3px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row] > span > strong{font: 700 9px/1.1 var(--prts-display)}html[data-dsh-prts] [data-prts-setting-note]{color: var(--prts-yellow); font: 700 7px/1.25 var(--prts-mono); letter-spacing: 0}html[data-dsh-prts] [data-prts-settings-common] button[data-prts-setting-key]{min-width: 0; flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 5px}html[data-dsh-prts] [data-prts-option-sample]{position: relative; width: 22px; height: 14px; flex: 0 0 22px; overflow: hidden; border: 1px solid color-mix(in srgb,currentColor 45%,var(--prts-line)); background: var(--prts-canvas)}html[data-dsh-prts] [data-prts-option-sample=\"texture\"][data-prts-option-sample-value=\"off\"]{background: linear-gradient(var(--prts-line),var(--prts-line)) 50% 50% / 12px 1px no-repeat,var(--prts-canvas)}html[data-dsh-prts] [data-prts-option-sample=\"texture\"][data-prts-option-sample-value=\"restrained\"]{background: repeating-linear-gradient(115deg,var(--prts-canvas) 0 6px,color-mix(in srgb,var(--prts-cyan) 38%,var(--prts-canvas)) 6px 7px)}html[data-dsh-prts] [data-prts-option-sample=\"texture\"][data-prts-option-sample-value=\"full\"]{background: repeating-linear-gradient(115deg,transparent 0 4px,color-mix(in srgb,var(--prts-cyan) 62%,transparent) 4px 5px),repeating-linear-gradient(25deg,var(--prts-canvas) 0 7px,color-mix(in srgb,var(--prts-line-strong) 72%,var(--prts-canvas)) 7px 8px)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"]{background: linear-gradient(135deg,color-mix(in srgb,var(--prts-cyan) 54%,transparent) 25%,transparent 25%) 0 0 / 8px 8px,linear-gradient(315deg,color-mix(in srgb,var(--prts-yellow) 38%,transparent) 25%,transparent 25%) 4px 4px / 8px 8px,var(--prts-canvas)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"]::after{content: \"\"; position: absolute; inset: 0; background: color-mix(in srgb,var(--prts-panel-raised) 64%,transparent); backdrop-filter: blur(2px) saturate(1.15); -webkit-backdrop-filter: blur(2px) saturate(1.15)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"off\"]::after{background: var(--prts-panel-raised); backdrop-filter: none; -webkit-backdrop-filter: none}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"soft\"]::after{background: color-mix(in srgb,var(--prts-panel-raised) 82%,transparent); backdrop-filter: blur(1px); -webkit-backdrop-filter: blur(1px)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"standard\"]::after{background: color-mix(in srgb,var(--prts-panel-raised) 62%,transparent)}html[data-dsh-prts] [data-prts-option-sample=\"glass\"][data-prts-option-sample-value=\"clear\"]::after{background: color-mix(in srgb,var(--prts-panel-raised) 34%,transparent); backdrop-filter: blur(4px) saturate(1.35); -webkit-backdrop-filter: blur(4px) saturate(1.35)}html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key],html[data-dsh-prts] [data-prts-retry-save],html[data-dsh-prts] [data-prts-reset-visual],html[data-dsh-prts] [data-prts-reset-confirm-action],html[data-dsh-prts] [data-prts-reset-cancel]{position: relative; overflow: hidden; min-height: 30px; padding: 6px 8px; border: 0 !important; box-shadow: inset 0 0 0 1px var(--prts-line); background: var(--prts-panel-raised); color: var(--prts-muted); font: 700 8px/1 var(--prts-mono); white-space: nowrap; clip-path: polygon(2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px)}html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key].is-selected{box-shadow: inset 0 0 0 1px var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 12%,var(--prts-panel-raised)); color: var(--prts-ink); html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key]::after{content: \"\"; position: absolute; z-index: 3; inset: 0; opacity: 0; box-shadow: inset 0 0 0 1px var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 18%,transparent); pointer-events: none}html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key][data-prts-setting-feedback]::after{opacity: 1}}html[data-dsh-prts] [data-prts-theme-settings] button:focus-visible,html[data-dsh-prts] [data-prts-theme-settings] summary:focus-visible,html[data-dsh-prts] [data-prts-theme-settings] input:focus-visible{outline: 2px solid var(--prts-cyan); outline-offset: 2px}html[data-dsh-prts] [data-prts-settings-advanced] summary{min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px; cursor: pointer; list-style: none}html[data-dsh-prts] [data-prts-settings-advanced] summary::-webkit-details-marker{display: none}html[data-dsh-prts] [data-prts-settings-advanced] summary::after{content: \"+\"; width: 24px; height: 24px; display: grid; place-items: center; margin-left: 2px; border: 1px solid var(--prts-line); color: var(--prts-cyan); font: 800 13px/1 var(--prts-mono)}html[data-dsh-prts] [data-prts-settings-advanced][open] summary::after{content: \"−\"}html[data-dsh-prts] [data-prts-settings-advanced-content]{display: grid; grid-template-columns: minmax(0,.8fr) minmax(0,1.2fr); border-top: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-settings-advanced-content] > section{padding: 11px}html[data-dsh-prts] [data-prts-settings-advanced-content] > section + section{border-left: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-advanced-content] section > header{min-height: 30px; display: grid; gap: 4px}html[data-dsh-prts] [data-prts-settings-advanced-content] section > header strong{font-size: 10px}html[data-dsh-prts] [data-prts-settings-advanced-content] section > header span{color: var(--prts-muted); font-size: 8px}html[data-dsh-prts] [data-prts-particle-detail] > div{display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 5px; margin-top: 8px}html[data-dsh-prts] [data-prts-particle-detail] button[role=\"radio\"]{min-width: 0; display: grid; gap: 5px}html[data-dsh-prts] [data-prts-particle-detail-preview]{height: 32px; display: grid; grid-template-columns: repeat(6,1fr); place-items: center; overflow: hidden; border: 1px solid color-mix(in srgb,currentColor 44%,transparent)}html[data-dsh-prts] [data-prts-particle-detail-preview] b{width: 2px; height: 2px; background: currentColor}html[data-dsh-prts] [data-prts-particle-traversal]{margin-top: 9px; padding-top: 9px; border-top: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-particle-traversal] > span{display: grid; gap: 3px}html[data-dsh-prts] [data-prts-particle-traversal] > span strong{font-size: 9px}html[data-dsh-prts] [data-prts-particle-traversal] > span small{color: var(--prts-muted); font: 600 8px/1.35 var(--prts-mono)}html[data-dsh-prts] [data-prts-particle-traversal-output]{min-width: 132px; color: var(--prts-cyan); font: 800 8px/1.2 var(--prts-mono); text-align: right}html[data-dsh-prts] [data-prts-particle-error]{margin: 8px 0 0; color: var(--prts-yellow); font: 700 8px/1.4 var(--prts-mono)}html[data-dsh-prts] [data-prts-scale-calibration]{--prts-calibration-distance: 96px; margin: 8px 0 0; padding: 8px; overflow: hidden; border: 1px solid var(--prts-line); background: color-mix(in srgb,var(--prts-panel-raised) 84%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-viewport]{position: relative; width: 100%; height: 94px; overflow: hidden}html[data-dsh-prts] [data-prts-scale-calibration-canvas]{position: absolute; top: 0; left: 0; width: 360px; height: 94px; transform-origin: top left}html[data-dsh-prts] [data-prts-scale-calibration-sidebar]{position: absolute; inset: 8px auto 8px 0; width: 4px; background: var(--prts-line-strong); box-shadow: 8px 0 0 color-mix(in srgb,var(--prts-line) 45%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-measure]{position: absolute; top: 6px; left: 0; width: var(--prts-calibration-distance); height: 18px; border-top: 1px solid var(--prts-cyan); color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-scale-calibration-measure]::before,html[data-dsh-prts] [data-prts-scale-calibration-measure]::after{content: \"\"; position: absolute; top: -4px; width: 1px; height: 7px; background: currentColor}html[data-dsh-prts] [data-prts-scale-calibration-measure]::before{left: 0}html[data-dsh-prts] [data-prts-scale-calibration-measure]::after{right: 0}html[data-dsh-prts] [data-prts-scale-calibration-value]{position: absolute; top: 4px; right: 3px; padding-left: 4px; background: var(--prts-panel-raised); color: currentColor; font: 800 8px/1 var(--prts-mono)}html[data-dsh-prts] [data-prts-scale-calibration-rail]{position: absolute; top: 29px; left: var(--prts-calibration-distance); width: 32px; height: 58px; border: 1px solid var(--prts-line-strong); background: color-mix(in srgb,var(--prts-canvas) 62%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-rail] i{position: absolute; top: calc(5px + var(--prts-calibration-tick) * 6px); left: 2px; width: 9px; height: 1px; background: var(--prts-muted)}html[data-dsh-prts] [data-prts-scale-calibration-rail] i:nth-child(4n + 1){width: 24px}html[data-dsh-prts] [data-prts-scale-calibration-rail] i:nth-child(4n + 2){width: 18px}html[data-dsh-prts] [data-prts-scale-calibration-rail] i:last-child{width: 24px; background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-scale-calibration-gap]{position: absolute; top: 29px; left: calc(var(--prts-calibration-distance) + 32px); width: 12px; height: 58px; background: repeating-linear-gradient(135deg,transparent 0 3px,color-mix(in srgb,var(--prts-line) 42%,transparent) 3px 4px)}html[data-dsh-prts] [data-prts-scale-calibration-content]{position: absolute; inset: 29px 0 7px calc(var(--prts-calibration-distance) + 44px); min-width: 16px; overflow: hidden; border-left: 1px solid var(--prts-cyan); background: color-mix(in srgb,var(--prts-panel) 84%,transparent)}html[data-dsh-prts] [data-prts-scale-calibration-content] i{display: block; width: min(78%,138px); height: 1px; margin: 18px 10px 9px; background: var(--prts-line-strong); box-shadow: 0 8px 0 var(--prts-line)}html[data-dsh-prts] [data-prts-scale-calibration-content] small{margin-left: 10px; color: var(--prts-dim); font: 700 7px/1 var(--prts-mono); white-space: nowrap}html[data-dsh-prts] [data-prts-scale-calibration-meta]{min-height: 20px; display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 4px; padding-top: 7px; border-top: 1px solid var(--prts-line); font: 700 8px/1.3 var(--prts-mono)}html[data-dsh-prts] [data-prts-scale-calibration-status]{margin-left: auto; color: var(--prts-muted); text-align: right}html[data-dsh-prts] [data-prts-scale-calibration][data-prts-calibration-mode=\"configured\"] [data-prts-scale-calibration-status],html[data-dsh-prts] [data-prts-scale-calibration][data-prts-calibration-mode=\"simulated\"] [data-prts-scale-calibration-status]{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-scale-calibration][data-prts-calibration-mode=\"centered\"] [data-prts-scale-calibration-status],html[data-dsh-prts] [data-prts-scale-calibration-scale]{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-setting-range-row]{display: grid; gap: 7px; padding: 8px 0 0; border: 0}html[data-dsh-prts] [data-prts-setting-range-row] > div{display: flex; align-items: center; gap: 8px}html[data-dsh-prts] [data-prts-setting-range-row] input[type=\"range\"]{min-width: 0; flex: 1}html[data-dsh-prts] [data-prts-setting-range]{accent-color: var(--prts-cyan)}html[data-dsh-prts] :is([data-prts-scale-distance-output],[data-prts-scale-focus-output]){min-width: 42px; color: var(--prts-cyan); font: 800 8px/1 var(--prts-mono); text-align: right}html[data-dsh-prts] [data-prts-scale-focus-preview]{width: 34px; min-width: 34px; height: 30px; display: grid; align-content: center; gap: 4px}html[data-dsh-prts] [data-prts-scale-focus-preview] i{display: block; height: 1px; max-width: 30px; background: var(--prts-yellow); transition: width 100ms ease}html[data-dsh-prts] [data-prts-settings-actions]{min-height: 58px; display: block; padding: 0; border-bottom: 1px solid var(--prts-line-strong)}html[data-dsh-prts] [data-prts-persistence-error],html[data-dsh-prts] [data-prts-reset-zone]{min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 9px 11px}html[data-dsh-prts] [data-prts-persistence-error]{border-bottom: 1px solid var(--prts-yellow); background: color-mix(in srgb,var(--prts-yellow) 7%,transparent)}html[data-dsh-prts] [data-prts-persistence-error] > span,html[data-dsh-prts] [data-prts-reset-zone] > span{display: grid; gap: 4px}html[data-dsh-prts] [data-prts-persistence-error] strong{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-reset-visual],html[data-dsh-prts] [data-prts-reset-confirm-action]{color: var(--prts-yellow); box-shadow: inset 0 0 0 1px var(--prts-yellow)}html[data-dsh-prts] [data-prts-reset-confirm]{display: flex; align-items: center; justify-content: flex-end; gap: 5px; color: var(--prts-yellow); font: 700 8px/1.3 var(--prts-mono)}html[data-dsh-prts] [hidden]{display: none !important}html[data-dsh-prts] :is( [data-prts-theme-settings-header] small,[data-prts-theme-settings] section > header small,[data-prts-theme-settings] summary small,[data-prts-settings-actions] small,[data-prts-settings-summary] span,[data-prts-advanced-summary],[data-prts-preset-card] span,[data-prts-setting-note],[data-prts-settings-advanced-content] section > header span,[data-prts-particle-error],[data-prts-scale-calibration-value],[data-prts-scale-calibration-content] small,[data-prts-scale-calibration-meta],[data-prts-scale-distance-output],[data-prts-reset-confirm] ){font-size: var(--prts-settings-small); line-height: 1.4}html[data-dsh-prts] :is( [data-prts-settings-presets] > header strong,[data-prts-settings-common] > header strong,[data-prts-settings-advanced] summary strong,[data-prts-preset-card] strong,[data-prts-settings-common] [data-prts-setting-row] > span > strong,[data-prts-settings-advanced-content] section > header strong,[data-prts-theme-settings] button[data-prts-setting-key],[data-prts-retry-save],[data-prts-reset-visual],[data-prts-reset-confirm-action],[data-prts-reset-cancel] ){font-size: var(--prts-settings-text); line-height: 1.25}html[data-dsh-prts] [data-prts-theme-settings-header] strong{font-size: 1.375rem; line-height: 1.1}html[data-dsh-prts] [data-prts-settings-summary] span{min-height: 28px; padding: 6px 9px}html[data-dsh-prts] [data-prts-preset-card]{min-height: 84px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{min-height: 72px; grid-template-columns: minmax(7.5rem,auto) minmax(0,1fr)}html[data-dsh-prts] :is( [data-prts-theme-settings] button[data-prts-setting-key],[data-prts-retry-save],[data-prts-reset-visual],[data-prts-reset-confirm-action],[data-prts-reset-cancel] ){min-height: 40px; padding: 8px 10px}@container prts-settings (max-width: 52rem){html[data-dsh-prts] [data-prts-settings-common-grid],html[data-dsh-prts] [data-prts-settings-advanced-content]{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{border-right: 0}html[data-dsh-prts] [data-prts-settings-advanced-content] > section + section{border-left: 0; border-top: 1px solid var(--prts-line)}}@media (max-height: 820px) and (min-width: 721px){html[data-dsh-prts] [data-prts-theme-settings-header]{min-height: 60px; padding-block: 10px}html[data-dsh-prts] [data-prts-theme-settings-close]{top: 10px}}@media (max-width: 720px){html[data-dsh-prts] [data-prts-theme-settings]{inset: 0; width: 100vw; height: 100dvh; max-height: none; margin: 0; transform: translateY(10px)}html[data-dsh-prts] [data-prts-theme-settings][data-prts-settings-visible]{transform: translateY(0)}html[data-dsh-prts] [data-prts-settings-frame]{height: 100%; max-height: none; clip-path: none; border: 0}html[data-dsh-prts] [data-prts-settings-frame]::before{right: 0}html[data-dsh-prts] [data-prts-theme-settings-header]{grid-template-columns: minmax(0,1fr); padding: 12px 48px 11px 13px}html[data-dsh-prts] [data-prts-settings-summary]{display: none}html[data-dsh-prts] [data-prts-theme-settings-scroll]{padding: 8px; scrollbar-gutter: auto}html[data-dsh-prts] [data-prts-settings-presets] > div{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-preset-card]{min-height: 54px; border-right: 0 !important; border-bottom: 1px solid var(--prts-line) !important}html[data-dsh-prts] [data-prts-preset-card]:last-child{border-bottom: 0 !important}html[data-dsh-prts] [data-prts-settings-common-grid]{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{min-height: 62px}html[data-dsh-prts] [data-prts-settings-common] button[data-prts-setting-key]{min-height: 40px}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]{border-right: 0; border-bottom: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:nth-last-child(2){border-bottom: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-settings-common] [data-prts-setting-row]:last-child{border-bottom: 0}html[data-dsh-prts] [data-prts-settings-advanced-content]{grid-template-columns: minmax(0,1fr)}html[data-dsh-prts] [data-prts-settings-advanced-content] > section + section{border-left: 0; border-top: 1px solid var(--prts-line)}html[data-dsh-prts] [data-prts-reset-zone]{align-items: flex-start; flex-direction: column}html[data-dsh-prts] [data-prts-reset-confirm]{width: 100%; flex-wrap: wrap; justify-content: flex-start}}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts] [data-prts-theme-settings] button[data-prts-setting-key][data-prts-setting-feedback]::after{animation: prts-setting-feedback 300ms ease-out both}}@keyframes prts-setting-feedback{0%{opacity: .82}100%{opacity: 0}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-theme-settings]{transition-duration: 1ms}}@media (prefers-reduced-transparency: reduce){html[data-dsh-prts] [data-prts-theme-settings]::backdrop,html[data-dsh-prts] [data-prts-settings-backdrop]{background: color-mix(in srgb,var(--prts-canvas) 94%,transparent); backdrop-filter: none; -webkit-backdrop-filter: none}}html[data-dsh-prts] [data-prts-facility-defs]{position: absolute; width: 0; height: 0; overflow: hidden; pointer-events: none}html[data-dsh-prts] [data-prts-facility-svg]{position: absolute; z-index: -1; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none}html[data-dsh-prts] [data-prts-facility-layer=\"surface\"]{fill: var(--prts-facility-surface,var(--prts-panel-raised))}html[data-dsh-prts] [data-prts-facility-layer=\"texture\"]{fill: none; opacity: 0; pointer-events: none; transition: opacity 160ms ease}html[data-dsh-prts] [data-prts-facility-layer=\"outline\"]{fill: none; stroke: var(--prts-facility-outline,var(--prts-line-strong)); stroke-width: 1; stroke-linejoin: miter; stroke-miterlimit: 2; vector-effect: non-scaling-stroke; shape-rendering: geometricPrecision; pointer-events: none}html[data-dsh-prts] [data-prts-facility-vector][data-prts-facility-texture=\"grid\"] [data-prts-facility-layer=\"texture\"]{fill: var(--prts-facility-texture-color,var(--prts-cyan)); opacity: var(--prts-facility-texture-opacity,.12); mask: url(\"#prts-facility-grid-mask\")}html[data-dsh-prts] [data-prts-facility-vector][data-prts-facility-texture=\"scanline\"] [data-prts-facility-layer=\"texture\"]{fill: var(--prts-facility-texture-color,var(--prts-cyan)); opacity: var(--prts-facility-texture-opacity,.1); mask: url(\"#prts-facility-scanline-mask\")}html[data-dsh-prts] [data-prts-workspace-row]{--prts-facility-texture-color: var(--prts-cyan); --prts-silhouette-fill: #f3f6f7; --prts-silhouette-far-opacity: .06; --prts-silhouette-near-opacity: .12}html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-workspace-row]{--prts-silhouette-fill: #3f4d56; --prts-silhouette-far-opacity: .13; --prts-silhouette-near-opacity: .26}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"],html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]){--prts-silhouette-far-opacity: .24; --prts-silhouette-near-opacity: .52}html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-workspace-row][aria-expanded=\"true\"],html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]){--prts-silhouette-far-opacity: .25; --prts-silhouette-near-opacity: .5}html[data-dsh-prts] [data-prts-facility-texture=\"silhouette\"] [data-prts-facility-layer=\"texture\"]{opacity: 0}html[data-dsh-prts] [data-prts-facility-silhouette]{fill: var(--prts-silhouette-fill); opacity: 0; pointer-events: none}html[data-dsh-prts] [data-prts-facility-texture=\"silhouette\"] [data-prts-facility-silhouette]{opacity: 1}html[data-dsh-prts] [data-prts-silhouette-layer]{transform-box: fill-box; transform-origin: left center; animation-timing-function: linear; animation-iteration-count: infinite; animation-play-state: paused; will-change: transform; transition: opacity 180ms ease}html[data-dsh-prts] [data-prts-silhouette-layer=\"far\"]{opacity: var(--prts-silhouette-far-opacity); animation-name: prts-silhouette-far-drift; animation-duration: 22.4s}html[data-dsh-prts] [data-prts-silhouette-layer=\"near\"]{opacity: var(--prts-silhouette-near-opacity); animation-name: prts-silhouette-near-drift; animation-duration: 6.4s}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts]:not([data-prts-motion=\"reduced\"]) [data-prts-workspace-row]:hover [data-prts-silhouette-layer]{animation-play-state: running}}@keyframes prts-silhouette-far-drift{to{transform: translate3d(-512px,0,0)}}@keyframes prts-silhouette-near-drift{to{transform: translate3d(-512px,0,0)}}html[data-dsh-prts] [data-prts-facility-texture=\"pickup\"] [data-prts-facility-layer=\"texture\"]{opacity: 0}html[data-dsh-prts] [data-prts-session-pickup]{color: var(--prts-session-pickup-fill); fill: currentColor; opacity: 0; transform: translate3d(5px,0,0); transform-box: view-box; transform-origin: center; transition: opacity 150ms ease,transform 240ms cubic-bezier(.22,1,.36,1); pointer-events: none}html[data-dsh-prts] [data-prts-session-row]:hover [data-prts-facility-texture=\"pickup\"] [data-prts-session-pickup]{opacity: .58; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-session-pickup-baseline]{fill: none; stroke: currentColor; stroke-width: 1; opacity: .2; vector-effect: non-scaling-stroke}html[data-dsh-prts] [data-prts-session-pickup-indicator]{fill: var(--prts-yellow)}html[data-dsh-prts] [data-prts-session-pickup-bar]{transform-box: fill-box; transform-origin: center}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(1){--prts-pickup-duration: 520ms; --prts-pickup-delay: -.12s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(2){--prts-pickup-duration: 1180ms; --prts-pickup-delay: -.28s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(3){--prts-pickup-duration: 760ms; --prts-pickup-delay: -.44s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(4){--prts-pickup-duration: 1420ms; --prts-pickup-delay: -.18s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(5){--prts-pickup-duration: 640ms; --prts-pickup-delay: -.36s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(6){--prts-pickup-duration: 980ms; --prts-pickup-delay: -.52s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(7){--prts-pickup-duration: 480ms; --prts-pickup-delay: -.22s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(8){--prts-pickup-duration: 1260ms; --prts-pickup-delay: -.46s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(9){--prts-pickup-duration: 720ms; --prts-pickup-delay: -.14s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(10){--prts-pickup-duration: 1520ms; --prts-pickup-delay: -.4s}html[data-dsh-prts] [data-prts-session-pickup-bar]:nth-of-type(11){--prts-pickup-duration: 560ms; --prts-pickup-delay: -.3s}@media (prefers-reduced-motion: no-preference){html[data-dsh-prts]:not([data-prts-motion=\"reduced\"]) [data-prts-session-row]:hover [data-prts-session-pickup-indicator]{animation: prts-session-record-indicator 1.1s ease-in-out infinite}html[data-dsh-prts]:not([data-prts-motion=\"reduced\"]) [data-prts-session-row]:hover [data-prts-session-pickup-bar]{animation: prts-session-pickup-sample var(--prts-pickup-duration) ease-in-out var(--prts-pickup-delay) infinite}}@keyframes prts-session-record-indicator{0%,100%{opacity: .45}50%{opacity: 1}}@keyframes prts-session-pickup-sample{0%,100%{transform: scaleY(.28)}34%{transform: scaleY(1.08)}57%{transform: scaleY(.46)}78%{transform: scaleY(.86)}}html[data-dsh-prts] [data-prts-session-row]{--prts-facility-texture-color: var(--prts-muted); --prts-session-pickup-fill: #f3f6f7}html[data-dsh-prts][data-prts-scheme=\"light\"] [data-prts-session-row]{--prts-session-pickup-fill: #3f4d56}html[data-dsh-prts] [data-prts-session-row][aria-selected=\"true\"]{--prts-facility-texture-color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-workspace-row] > [data-prts-facility-spine],html[data-dsh-prts] [data-prts-session-row] > [data-prts-facility-spine]{--prts-facility-surface: var(--prts-line-strong); position: absolute !important; z-index: 2 !important; inset: 0 auto 0 0; height: 100% !important; isolation: isolate; width: var(--prts-spine-width); min-width: 0; transform: scaleX(var(--prts-spine-rest)) !important; transform-origin: left center; transition: transform 220ms var(--prts-ease-spring); pointer-events: none}html[data-dsh-prts] [data-prts-workspace-row] > [data-prts-facility-spine]{--prts-facility-surface: var(--prts-cyan)}html[data-dsh-prts] [data-prts-session-row][aria-selected=\"true\"] > [data-prts-facility-spine]{--prts-facility-surface: var(--prts-yellow)}html[data-dsh-prts] [data-prts-facility-spine] [data-prts-facility-layer=\"outline\"]{display: none}html[data-dsh-prts] [data-prts-workspace-row][aria-expanded=\"true\"] > [data-prts-facility-spine],html[data-dsh-prts] [data-prts-workspace-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) > [data-prts-facility-spine],html[data-dsh-prts] [data-prts-session-row]:is(:hover,:focus-within,[data-prts-row-menu-open]) > [data-prts-facility-spine]{transform: scaleX(1) !important}html[data-dsh-prts] [data-prts-workspace-row][data-prts-spine-vector]::before,html[data-dsh-prts] [data-prts-session-row][data-prts-spine-vector]::before{content: none !important; display: none !important}html[data-dsh-prts] [data-prts-facility-face][data-prts-facility-vector]{border: 0 !important; background: transparent !important; clip-path: none !important}html[data-dsh-prts] [data-prts-facility-face][data-prts-facility-vector]::after{content: none !important; display: none !important}html[data-dsh-prts] :is( [data-prts-workspace-actions],[data-prts-session-actions] ) button[data-prts-facility-vector]{--prts-facility-outline: var(--prts-line); --prts-facility-surface: var(--prts-panel-raised); overflow: visible; border: 0 !important; background: transparent !important; clip-path: none !important}html[data-dsh-prts] :is( [data-prts-workspace-actions],[data-prts-session-actions] ) button[data-prts-facility-vector]::before{content: none !important; display: none !important}html[data-dsh-prts] :is( [data-prts-workspace-actions],[data-prts-session-actions] ) button[data-prts-facility-vector]:is(:hover,:focus-visible){--prts-facility-outline: var(--prts-yellow); background: transparent !important}html[data-dsh-prts] [data-message-role]::before,html[data-dsh-prts] [data-chat-flow-kind]::before{content: none !important; display: none !important}html[data-dsh-prts] [data-conversation-scroll]:not([data-prts-hero-active])[data-prts-conversation-scale-ready]::before,html[data-dsh-prts] [data-conversation-scroll]:not([data-prts-hero-active])[data-prts-conversation-scale-empty]::before{content: none !important; display: none !important}html[data-dsh-prts] [data-prts-conversation-scale]{position: absolute; z-index: 8; width: 32px; min-height: 84px; margin: 0; padding: 0; overflow: hidden; opacity: .54; visibility: visible; transition: opacity 100ms ease,filter 150ms ease,visibility 0s linear; pointer-events: auto; touch-action: none; cursor: pointer; isolation: isolate}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-resizing]{opacity: .38; filter: none; transition: none}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-resizing] :is( [data-prts-conversation-scale-accent],[data-prts-conversation-scale-history] ){filter: none; transition: none}html[data-dsh-prts] [data-prts-conversation-scale]:is( [data-prts-conversation-scale-obstructed],[data-prts-conversation-scale-space-obstructed] ){opacity: 0; visibility: hidden; transition-delay: 0s,0s,100ms; pointer-events: none}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-scale-blocked]{opacity: 0; visibility: hidden; transition: none; pointer-events: none}html[data-dsh-prts] [data-prts-conversation-scale]:focus{outline: none}html[data-dsh-prts] [data-prts-conversation-scale]:focus-visible{filter: drop-shadow(0 0 7px color-mix(in srgb,var(--prts-cyan) 34%,transparent))}html[data-dsh-prts] [data-prts-conversation-scale-svg]{position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: hidden; shape-rendering: geometricPrecision}html[data-dsh-prts] [data-prts-conversation-scale-marks]{pointer-events: none}html[data-dsh-prts] :is( [data-prts-conversation-scale-gray],[data-prts-conversation-scale-accent],[data-prts-conversation-scale-history] ){fill: none; stroke-width: 1; stroke-linecap: square; vector-effect: non-scaling-stroke; pointer-events: none}html[data-dsh-prts] [data-prts-conversation-scale-gray]{stroke: color-mix(in srgb,var(--prts-muted) 76%,var(--prts-line-strong))}html[data-dsh-prts] [data-prts-conversation-scale-accent]{stroke: var(--prts-yellow); filter: drop-shadow(0 0 4px color-mix(in srgb,var(--prts-yellow) 42%,transparent))}html[data-dsh-prts] [data-prts-conversation-scale-history]{stroke: var(--prts-cyan); stroke-width: 1.5; filter: drop-shadow(0 0 4px color-mix(in srgb,var(--prts-cyan) 38%,transparent))}html[data-dsh-prts] [data-prts-conversation-scale-history]{transition: stroke-width 100ms ease,filter 120ms ease}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-history-selected] [data-prts-conversation-scale-history]{stroke-width: 2.5; filter: drop-shadow(0 0 3px color-mix(in srgb,var(--prts-cyan) 78%,transparent)) drop-shadow(0 0 8px color-mix(in srgb,var(--prts-cyan) 48%,transparent))}html[data-dsh-prts] [data-prts-conversation-history-hint],html[data-dsh-prts] [data-prts-conversation-history-hint] *{box-sizing: border-box}html[data-dsh-prts] [data-prts-conversation-history-hint]{position: absolute; z-index: 13; height: 8px; transform: translateY(-50%); pointer-events: auto}html[data-dsh-prts] [data-prts-conversation-history-hint][hidden],html[data-dsh-prts] [data-prts-conversation-history-tooltip][hidden]{display: none}html[data-dsh-prts] [data-prts-conversation-history-trigger]{width: 30px; min-width: 30px; height: 8px; min-height: 8px; max-height: 8px; padding: 0; display: block; border: 0; border-radius: 0; opacity: 0; background: transparent; cursor: pointer}html[data-dsh-prts] [data-prts-conversation-history-tooltip]{position: absolute; top: var(--prts-history-tooltip-top,50%); left: calc(100% + 10px); width: 360px; height: 128px; margin: 0; padding: 1px; overflow: visible; border: 0; background: var(--prts-line-strong); color: var(--prts-ink); clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ); opacity: .98; transform: translate3d(0,0,0); pointer-events: none; isolation: isolate; animation: prts-conversation-history-tooltip-in 120ms var(--prts-ease-snap)}html[data-dsh-prts] [data-prts-conversation-history-tooltip]::before{content: \"\"; position: absolute; z-index: 0; inset: 1px; background: var(--prts-active-glass); clip-path: polygon( 2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-conversation-history-tooltip] [data-prts-conversation-preview-row=\"question\"] b{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-conversation-history-tooltip-label]{overflow: hidden; color: var(--prts-ink); text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-conversation-history-tooltip-content]{min-width: 0; display: grid; gap: 3px}html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] strong{color: var(--prts-ink); font-size: 15px; font-weight: 750}html[data-dsh-prts] [data-prts-conversation-history-tooltip-content] span{overflow: hidden; color: var(--prts-muted); font-size: 12px; text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-conversation-history-tooltip-connector]{position: absolute; z-index: 2; top: var(--prts-history-tooltip-anchor-y,50%); right: 100%; width: 14px; height: 1px; background: linear-gradient(90deg,var(--prts-cyan),var(--prts-line-strong)); transform: translateY(-.5px); pointer-events: none}html[data-dsh-prts] [data-prts-conversation-history-tooltip-connector]::before{content: \"\"; position: absolute; top: -1px; left: 0; width: 3px; height: 3px; background: var(--prts-cyan)}@keyframes prts-conversation-history-tooltip-in{from{opacity: 0; transform: translate3d(-4px,0,0)}to{opacity: .98; transform: translate3d(0,0,0)}}html[data-dsh-prts] [data-prts-conversation-scale-hit]{pointer-events: all}html[data-dsh-prts] [data-prts-conversation-history-status],html[data-dsh-prts] [data-prts-conversation-history-status] *{box-sizing: border-box}html[data-dsh-prts] [data-prts-conversation-history-status]{position: absolute; z-index: 13; min-height: 34px; max-width: min(320px,calc(100% - 72px)); display: flex; align-items: center; gap: 10px; padding: 5px 6px 5px 10px; border: 1px solid var(--prts-line-strong); background: var(--prts-active-glass); color: var(--prts-ink); box-shadow: 0 8px 22px color-mix(in srgb,var(--prts-canvas) 22%,transparent); clip-path: polygon(3px 0,100% 0,100% calc(100% - 3px),calc(100% - 3px) 100%,0 100%,0 3px); font: 700 12px/1.35 var(--prts-mono); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-conversation-history-status][hidden]{display: none}html[data-dsh-prts] [data-prts-conversation-history-text]{min-width: 0}html[data-dsh-prts] [data-prts-conversation-history-action]{min-width: 44px; min-height: 24px; padding: 3px 8px; border: 1px solid var(--prts-cyan); border-radius: 0; background: transparent; color: var(--prts-cyan); font: inherit; cursor: pointer}html[data-dsh-prts] [data-prts-conversation-history-status][data-prts-history-phase=\"error\"]{border-color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-history-status][data-prts-history-phase=\"loading\"]{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-conversation-preview]{--prts-preview-anchor-y: 46px; position: absolute; z-index: 12; width: 360px; max-width: calc(100% - 64px); height: 128px; margin: 0; padding: 1px; overflow: visible; border: 0; background: var(--prts-line-strong); color: var(--prts-ink); clip-path: polygon( 3px 0,calc(100% - 3px) 0,100% 3px,100% calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,0 calc(100% - 3px),0 3px ); opacity: 0; visibility: hidden; transform: translate3d(-4px,0,0); transition: opacity 100ms ease,transform 120ms var(--prts-ease-snap),visibility 0s linear 120ms; pointer-events: none; isolation: isolate}html[data-dsh-prts] [data-prts-conversation-preview]::before{content: \"\"; position: absolute; z-index: 0; inset: 1px; background: var(--prts-active-glass); clip-path: polygon( 2px 0,calc(100% - 2px) 0,100% 2px,100% calc(100% - 2px),calc(100% - 2px) 100%,2px 100%,0 calc(100% - 2px),0 2px ); backdrop-filter: var(--prts-active-glass-filter); -webkit-backdrop-filter: var(--prts-active-glass-filter)}html[data-dsh-prts] [data-prts-conversation-preview][data-prts-conversation-preview-visible]{opacity: .98; visibility: visible; transform: translate3d(0,0,0); transition-delay: 0s}html[data-dsh-prts] [data-prts-conversation-preview-connector]{position: absolute; z-index: 2; top: var(--prts-preview-anchor-y); right: 100%; width: 14px; height: 1px; background: linear-gradient(90deg,var(--prts-yellow),var(--prts-line-strong)); transform: translateY(-.5px); pointer-events: none}html[data-dsh-prts] [data-prts-conversation-preview-connector]::before{content: \"\"; position: absolute; top: -1px; left: 0; width: 3px; height: 3px; background: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-preview-body]{position: relative; z-index: 1; height: 100%; display: grid; grid-template-rows: 32px minmax(0,1fr); padding: 10px 14px 12px; font-family: var(--prts-mono)}html[data-dsh-prts] [data-prts-conversation-preview-row]{min-width: 0; display: grid; grid-template-columns: 24px minmax(0,1fr); column-gap: 8px; align-items: start; font-size: 15px; line-height: 1.45}html[data-dsh-prts] [data-prts-conversation-preview-row] b{font-size: 14px; font-weight: 750; line-height: 1.55; letter-spacing: .08em}html[data-dsh-prts] [data-prts-conversation-preview-row=\"question\"]{border-bottom: 1px solid color-mix(in srgb,var(--prts-line) 72%,transparent); color: var(--prts-ink)}html[data-dsh-prts] [data-prts-conversation-preview-row=\"question\"] b{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-preview-row=\"answer\"]{padding-top: 6px; color: var(--prts-muted)}html[data-dsh-prts] [data-prts-conversation-preview-row=\"answer\"] b{color: var(--prts-cyan)}html[data-dsh-prts] [data-prts-conversation-preview-question]{display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap}html[data-dsh-prts] [data-prts-conversation-preview-answer]{display: -webkit-box; overflow: hidden; -webkit-box-orient: vertical; -webkit-line-clamp: 3}html[data-dsh-prts] [data-prts-conversation-preview][data-prts-preview-state=\"streaming\"] [data-prts-conversation-preview-answer]{color: var(--prts-yellow)}html[data-dsh-prts] [data-prts-conversation-scale][data-prts-conversation-scale-empty]{display: none}@media (max-width: 640px){html[data-dsh-prts] :is( [data-prts-conversation-scale],[data-prts-conversation-preview],[data-prts-conversation-history-hint],[data-prts-conversation-history-status] ){display: none !important}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-conversation-scale],html[data-dsh-prts] [data-prts-conversation-preview],html[data-dsh-prts] [data-prts-conversation-history-hint],html[data-dsh-prts] [data-prts-conversation-history-tooltip],html[data-dsh-prts] :is( [data-prts-conversation-scale-gray],[data-prts-conversation-scale-accent],[data-prts-conversation-scale-history] ){animation: none !important; transition: none !important}}html[data-dsh-prts] [data-prts-startup]{--prts-startup-bg: #07090b; --prts-startup-ink: #e8edef; --prts-startup-muted: #7d898f; --prts-startup-line: #394349; --prts-startup-accent: #f0c800; --prts-startup-progress: 0; position: fixed; z-index: 2147480000; inset: 0; width: 100vw; max-width: none; height: 100dvh; max-height: none; min-height: 100dvh; margin: 0; padding: 0; border: 0; overflow: hidden; isolation: isolate; box-sizing: border-box; background: transparent; color: var(--prts-startup-ink); font-family: var(--prts-body,sans-serif); opacity: 0; outline: 0; pointer-events: auto; transition: opacity 120ms ease}html[data-dsh-prts] [data-prts-startup]::before,html[data-dsh-prts] [data-prts-startup]::after{content: \"\"; position: absolute; z-index: -3; top: 0; bottom: 0; width: calc(50% + 2px); background: var(--prts-startup-bg); transition: transform 350ms cubic-bezier(.76,0,.24,1)}html[data-dsh-prts] [data-prts-startup]::before{left: 0}html[data-dsh-prts] [data-prts-startup]::after{right: 0}html[data-dsh-prts] [data-prts-startup][data-visible]{opacity: 1}html[data-dsh-prts] [data-prts-startup][data-exiting]::before{transform: translate3d(-101%,0,0)}html[data-dsh-prts] [data-prts-startup][data-exiting]::after{transform: translate3d(101%,0,0)}html[data-dsh-prts] [data-prts-startup-grid]{position: absolute; z-index: -2; inset: 0; opacity: 0; background: linear-gradient(90deg,transparent calc(50% - .5px),rgba(232,237,239,.17) 50%,transparent calc(50% + .5px)),linear-gradient(0deg,transparent calc(50% - .5px),rgba(232,237,239,.09) 50%,transparent calc(50% + .5px)),repeating-linear-gradient(90deg,rgba(232,237,239,.045) 0 1px,transparent 1px 80px),repeating-linear-gradient(0deg,rgba(232,237,239,.035) 0 1px,transparent 1px 80px); transform: scale3d(1.04,1.04,1); transition: opacity 220ms linear,transform 520ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-grid]{opacity: 1; transform: scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup-scan]{position: absolute; z-index: 4; top: -18%; right: 0; left: 0; height: 18%; opacity: 0; background: linear-gradient(180deg,transparent,rgba(240,200,0,.035) 68%,rgba(240,200,0,.24)); border-bottom: 1px solid rgba(240,200,0,.62); pointer-events: none}html[data-dsh-prts] [data-prts-startup][data-visible]:not([data-reduced-motion]) [data-prts-startup-scan]{opacity: 1; animation: prts-startup-scan 1100ms linear 120ms 2 both}html[data-dsh-prts] [data-prts-startup-cut]{position: absolute; z-index: 6; top: -15%; width: 8px; height: 130%; opacity: 0; background: var(--prts-startup-accent); transform: skewX(-13deg) translate3d(0,0,0); pointer-events: none}html[data-dsh-prts] [data-prts-startup-cut=\"left\"]{left: calc(50% - 4px)}html[data-dsh-prts] [data-prts-startup-cut=\"right\"]{right: calc(50% - 4px)}html[data-dsh-prts] [data-prts-startup][data-exiting] [data-prts-startup-cut=\"left\"]{animation: prts-startup-cut-left 350ms cubic-bezier(.76,0,.24,1) both}html[data-dsh-prts] [data-prts-startup][data-exiting] [data-prts-startup-cut=\"right\"]{animation: prts-startup-cut-right 350ms cubic-bezier(.76,0,.24,1) both}html[data-dsh-prts] [data-prts-startup-header]{position: absolute; z-index: 2; top: clamp(22px,4.5dvh,52px); right: clamp(22px,4vw,68px); left: clamp(22px,4vw,68px); display: flex; align-items: baseline; justify-content: space-between; gap: 24px; padding-bottom: 10px; border-bottom: 1px solid var(--prts-startup-line); opacity: 0; transform: translate3d(0,-9px,0); transition: opacity 180ms linear 60ms,transform 320ms cubic-bezier(.16,1,.3,1) 60ms}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-header]{opacity: 1; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-startup-header] span{font: 800 clamp(10px,1vw,13px)/1 var(--prts-display,sans-serif); letter-spacing: .18em}html[data-dsh-prts] [data-prts-startup-header] small,html[data-dsh-prts] [data-prts-startup-telemetry],html[data-dsh-prts] [data-prts-startup-coordinate]{color: var(--prts-startup-muted); font: 700 8px/1.35 var(--prts-mono,monospace); letter-spacing: .12em}html[data-dsh-prts] [data-prts-startup-telemetry]{position: absolute; z-index: 2; top: 50%; left: clamp(22px,4vw,68px); display: grid; gap: 12px; padding-left: 12px; border-left: 2px solid var(--prts-startup-accent); opacity: 0; transform: translate3d(-9px,-50%,0); transition: opacity 200ms linear 100ms,transform 360ms cubic-bezier(.16,1,.3,1) 100ms}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-telemetry]{opacity: 1; transform: translate3d(0,-50%,0)}html[data-dsh-prts] [data-prts-startup-core]{position: absolute; z-index: 3; top: 49%; left: 50%; width: min(76vw,560px); display: grid; justify-items: center; gap: clamp(15px,2.4dvh,26px); transform: translate3d(-50%,-50%,0)}html[data-dsh-prts] [data-prts-startup-frame]{position: relative; width: clamp(220px,27vw,320px); aspect-ratio: 1; display: grid; place-items: center}html[data-dsh-prts] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup-frame-inner]{position: absolute; inset: 15%; border: 1px solid var(--prts-startup-line); opacity: 0; transform: rotate(45deg) scale3d(.72,.72,1); transition: opacity 160ms linear,transform 420ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup-frame-inner]{inset: 23%; border-color: rgba(240,200,0,.76); transform: rotate(-45deg) scale3d(.68,.68,1); transition-delay: 80ms}html[data-dsh-prts] [data-prts-startup-reticle]{position: absolute; inset: 7%; opacity: 0; background: linear-gradient(var(--prts-startup-accent),var(--prts-startup-accent)) 50% 0 / 1px 15% no-repeat,linear-gradient(var(--prts-startup-accent),var(--prts-startup-accent)) 50% 100% / 1px 15% no-repeat,linear-gradient(90deg,var(--prts-startup-accent),var(--prts-startup-accent)) 0 50% / 15% 1px no-repeat,linear-gradient(90deg,var(--prts-startup-accent),var(--prts-startup-accent)) 100% 50% / 15% 1px no-repeat; transform: scale3d(.8,.8,1); transition: opacity 160ms linear,transform 400ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup-emblem]{position: relative; z-index: 2; width: 180px; max-width: 62%; height: auto; display: block; opacity: 0; clip-path: inset(48% 0 48% 0); transform: scale3d(.96,.96,1); transition: opacity 160ms linear,clip-path 380ms cubic-bezier(.16,1,.3,1),transform 420ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"linking\"] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-stage=\"authenticating\"] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-frame-outer]{opacity: .92; transform: rotate(45deg) scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"authenticating\"] :is([data-prts-startup-frame-inner],[data-prts-startup-reticle]),html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] :is([data-prts-startup-frame-inner],[data-prts-startup-reticle]),html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] :is([data-prts-startup-frame-inner],[data-prts-startup-reticle]){opacity: 1; transform: rotate(-45deg) scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"authenticating\"] [data-prts-startup-reticle],html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] [data-prts-startup-reticle],html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-reticle]{transform: scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup][data-stage=\"visualOnline\"] [data-prts-startup-emblem],html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-emblem]{opacity: 1; clip-path: inset(0 0 0 0); transform: scale3d(1,1,1)}html[data-dsh-prts] [data-prts-startup-signature]{min-height: 44px; display: flex; align-items: center; gap: 10px; opacity: 0; transform: translate3d(0,8px,0); transition: opacity 180ms linear,transform 230ms cubic-bezier(.16,1,.3,1)}html[data-dsh-prts] [data-prts-startup-signature] > span,html[data-dsh-prts] [data-prts-startup-signature] svg{width: 42px; height: 42px; display: block}html[data-dsh-prts] [data-prts-startup-signature] small{color: var(--prts-startup-muted); font: 800 8px/1.3 var(--prts-mono,monospace); letter-spacing: .1em}html[data-dsh-prts] [data-prts-startup][data-stage=\"ready\"] [data-prts-startup-signature]{opacity: 1; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-startup-state]{display: grid; justify-items: center; gap: 6px; text-align: center; opacity: 1; transform: translate3d(0,0,0); transition: opacity 90ms linear,transform 90ms cubic-bezier(.4,0,1,1)}html[data-dsh-prts] [data-prts-startup][data-copy-transition] [data-prts-startup-state]{opacity: 0; transform: translate3d(0,-4px,0)}html[data-dsh-prts] [data-prts-startup-state] strong{font: 900 clamp(18px,2.4vw,30px)/1 var(--prts-display,sans-serif); letter-spacing: .16em}html[data-dsh-prts] [data-prts-startup-state] span{color: var(--prts-startup-muted); font: 700 10px/1.2 var(--prts-mono,monospace); letter-spacing: .12em}html[data-dsh-prts] [data-prts-startup-progress]{position: absolute; z-index: 3; right: clamp(22px,7vw,120px); bottom: clamp(28px,6dvh,70px); left: clamp(22px,7vw,120px); display: grid; gap: 10px; opacity: 0; transform: translate3d(0,10px,0); transition: opacity 220ms linear 100ms,transform 480ms cubic-bezier(.16,1,.3,1) 100ms}html[data-dsh-prts] [data-prts-startup][data-visible] [data-prts-startup-progress]{opacity: 1; transform: translate3d(0,0,0)}html[data-dsh-prts] [data-prts-startup-progress] output{justify-self: start; color: var(--prts-startup-muted); font: 800 9px/1 var(--prts-mono,monospace); letter-spacing: .12em}html[data-dsh-prts] [data-prts-startup-percent]{color: var(--prts-startup-ink)}html[data-dsh-prts] [data-prts-startup-track]{position: relative; height: 18px; border-top: 1px solid var(--prts-startup-line)}html[data-dsh-prts] [data-prts-startup-fill]{position: absolute; top: -2px; right: 0; left: 0; height: 3px; background: var(--prts-startup-accent); transform: scaleX(var(--prts-startup-progress)); transform-origin: left center; will-change: transform}html[data-dsh-prts] [data-prts-startup-ticks]{position: absolute; inset: 4px 0 0; display: grid; grid-template-columns: repeat(21,minmax(0,1fr))}html[data-dsh-prts] [data-prts-startup-ticks] i{width: 1px; height: 4px; background: var(--prts-startup-line)}html[data-dsh-prts] [data-prts-startup-ticks] i[data-major]{height: 9px; background: var(--prts-startup-muted)}html[data-dsh-prts] [data-prts-startup-coordinate]{position: absolute; right: clamp(22px,4vw,68px); top: 50%; writing-mode: vertical-rl; transform: translateY(-50%)}html[data-dsh-prts] [data-prts-startup][data-exit-content] > :not([data-prts-startup-cut]){opacity: 0; transition: opacity 120ms linear}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-grid],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-header],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-telemetry],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-coordinate],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-state],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-outer],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-inner],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-reticle],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-emblem],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-signature],html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-progress]{opacity: 1; clip-path: none; transform: none; animation: none; transition: none}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-outer]{transform: rotate(45deg)}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-frame-inner]{transform: rotate(-45deg)}html[data-dsh-prts] [data-prts-startup][data-reduced-motion]{transition: opacity 160ms ease}html[data-dsh-prts] [data-prts-startup][data-reduced-motion][data-exiting]{opacity: 0}html[data-dsh-prts] [data-prts-startup][data-reduced-motion][data-exiting] > :not([data-prts-startup-cut]){opacity: 1}html[data-dsh-prts] [data-prts-startup][data-reduced-motion]::before,html[data-dsh-prts] [data-prts-startup][data-reduced-motion]::after{transform: none; transition: none}html[data-dsh-prts] [data-prts-startup][data-reduced-motion] [data-prts-startup-cut]{display: none}@keyframes prts-startup-scan{from{transform: translate3d(0,0,0)}to{transform: translate3d(0,660%,0)}}@keyframes prts-startup-cut-left{0%{opacity: 0; transform: skewX(-13deg) translate3d(0,0,0)}18%{opacity: 1}100%{opacity: 0; transform: skewX(-13deg) translate3d(-50vw,0,0)}}@keyframes prts-startup-cut-right{0%{opacity: 0; transform: skewX(-13deg) translate3d(0,0,0)}18%{opacity: .72}100%{opacity: 0; transform: skewX(-13deg) translate3d(50vw,0,0)}}@media (max-width: 640px){html[data-dsh-prts] [data-prts-startup-header]{right: 18px; left: 18px}html[data-dsh-prts] [data-prts-startup-header] small,html[data-dsh-prts] [data-prts-startup-telemetry],html[data-dsh-prts] [data-prts-startup-coordinate]{display: none}html[data-dsh-prts] [data-prts-startup-core]{top: 47%; width: calc(100vw - 32px)}html[data-dsh-prts] [data-prts-startup-frame]{width: min(66vw,240px)}html[data-dsh-prts] [data-prts-startup-signature] > span,html[data-dsh-prts] [data-prts-startup-signature] svg{width: 34px; height: 34px}html[data-dsh-prts] [data-prts-startup-state] strong{max-width: 94vw; font-size: clamp(15px,5vw,22px); letter-spacing: .1em}html[data-dsh-prts] [data-prts-startup-progress]{right: 20px; bottom: max(28px,env(safe-area-inset-bottom)); left: 20px}}@media (prefers-reduced-motion: reduce){html[data-dsh-prts] [data-prts-startup] *,html[data-dsh-prts] [data-prts-startup]::before,html[data-dsh-prts] [data-prts-startup]::after{animation: none !important}}";
|
|
8
8
|
const PRTS_ASSETS = Object.freeze({
|
|
9
9
|
emblem: "<svg id=\"prts-rhodes-emblem\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 510 510\" aria-hidden=\"true\">\n <title>Rhodes Island</title>\n <!-- Fan-made vector redraw traced and size-corrected from the classic Rhodes Island emblem. -->\n <path data-emblem-ink d=\"M 265 71 C 265.589 72.100, 266.295 73, 266.570 73 C 266.845 73, 266.589 72.100, 266 71 C 265.411 69.900, 264.705 69, 264.430 69 C 264.155 69, 264.411 69.900, 265 71 M 243 76 C 242.411 77.100, 242.155 78, 242.430 78 C 242.705 78, 243.411 77.100, 244 76 C 244.589 74.900, 244.845 74, 244.570 74 C 244.295 74, 243.589 74.900, 243 76 M 268 76 C 268.589 77.100, 269.295 78, 269.570 78 C 269.845 78, 269.589 77.100, 269 76 C 268.411 74.900, 267.705 74, 267.430 74 C 267.155 74, 267.411 74.900, 268 76 M 252.585 90.626 C 251.163 93.170, 250 95.645, 250 96.126 C 250 96.607, 252.700 97, 256 97 C 259.602 97, 262 96.572, 262 95.928 C 262 94.348, 256.947 86, 255.990 86 C 255.540 86, 254.008 88.082, 252.585 90.626 M 227 103 C 226.411 104.100, 226.155 105, 226.430 105 C 226.705 105, 227.411 104.100, 228 103 C 228.589 101.900, 228.845 101, 228.570 101 C 228.295 101, 227.589 101.900, 227 103 M 284 103 C 284.589 104.100, 285.295 105, 285.570 105 C 285.845 105, 285.589 104.100, 285 103 C 284.411 101.900, 283.705 101, 283.430 101 C 283.155 101, 283.411 101.900, 284 103 M 220 115 C 219.411 116.100, 219.155 117, 219.430 117 C 219.705 117, 220.411 116.100, 221 115 C 221.589 113.900, 221.845 113, 221.570 113 C 221.295 113, 220.589 113.900, 220 115 M 245.813 113.683 C 246.534 113.972, 247.397 113.936, 247.729 113.604 C 248.061 113.272, 247.471 113.036, 246.417 113.079 C 245.252 113.127, 245.015 113.364, 245.813 113.683 M 291 115 C 291.589 116.100, 292.295 117, 292.570 117 C 292.845 117, 292.589 116.100, 292 115 C 291.411 113.900, 290.705 113, 290.430 113 C 290.155 113, 290.411 113.900, 291 115 M 285.813 143.683 C 286.534 143.972, 287.397 143.936, 287.729 143.604 C 288.061 143.272, 287.471 143.036, 286.417 143.079 C 285.252 143.127, 285.015 143.364, 285.813 143.683 M 224.813 145.683 C 225.534 145.972, 226.397 145.936, 226.729 145.604 C 227.061 145.272, 226.471 145.036, 225.417 145.079 C 224.252 145.127, 224.015 145.364, 224.813 145.683 M 218.813 150.683 C 219.534 150.972, 220.397 150.936, 220.729 150.604 C 221.061 150.272, 220.471 150.036, 219.417 150.079 C 218.252 150.127, 218.015 150.364, 218.813 150.683 M 288.813 152.683 C 289.534 152.972, 290.397 152.936, 290.729 152.604 C 291.061 152.272, 290.471 152.036, 289.417 152.079 C 288.252 152.127, 288.015 152.364, 288.813 152.683 M 218.813 153.683 C 219.534 153.972, 220.397 153.936, 220.729 153.604 C 221.061 153.272, 220.471 153.036, 219.417 153.079 C 218.252 153.127, 218.015 153.364, 218.813 153.683 M 293.813 154.683 C 294.534 154.972, 295.397 154.936, 295.729 154.604 C 296.061 154.272, 295.471 154.036, 294.417 154.079 C 293.252 154.127, 293.015 154.364, 293.813 154.683 M 191 164 C 190.411 165.100, 190.155 166, 190.430 166 C 190.705 166, 191.411 165.100, 192 164 C 192.589 162.900, 192.845 162, 192.570 162 C 192.295 162, 191.589 162.900, 191 164 M 244.979 167.215 C 244.640 171.758, 242.104 192.216, 241.853 192.434 C 241.659 192.602, 238.304 193.044, 234.397 193.416 L 227.295 194.092 226.750 181.482 C 226.451 174.547, 225.952 168.618, 225.641 168.308 C 224.968 167.635, 209.797 169.889, 208.150 170.907 C 206.946 171.652, 206.004 176.004, 203.477 192.500 C 202.635 198, 201.012 208.575, 199.872 216 C 198.731 223.425, 197.568 232.537, 197.286 236.250 L 196.774 243 200.387 243 C 203.522 243, 204 243.314, 204 245.371 C 204 247.479, 204.583 247.817, 209.250 248.419 C 212.137 248.791, 216.188 249.357, 218.250 249.676 C 221.285 250.145, 222 249.945, 222 248.628 C 222 247.548, 222.862 247, 224.559 247 C 226.017 247, 226.851 246.568, 226.498 245.996 C 226.157 245.444, 224.829 245.256, 223.548 245.577 C 222.267 245.899, 220.918 245.676, 220.550 245.081 C 219.856 243.958, 221.562 243.657, 228.235 243.724 C 230.290 243.744, 231.772 243.440, 231.529 243.047 C 231.005 242.199, 230.032 242.282, 247.500 241.672 C 255.200 241.403, 260.600 241.525, 259.501 241.942 C 258.401 242.359, 254.590 242.795, 251.031 242.910 C 247.473 243.026, 241.523 243.759, 237.810 244.540 C 234.097 245.321, 230.297 245.668, 229.366 245.310 C 228.272 244.890, 227.912 245.049, 228.350 245.758 C 228.739 246.386, 228.061 247.148, 226.765 247.540 C 224.150 248.329, 220 252.687, 220 254.643 C 220 256.030, 197.333 347.969, 196.377 350.460 C 195.900 351.703, 191.807 352.905, 179.274 355.485 C 176.645 356.026, 174.648 358.032, 168.486 366.324 C 155.420 383.909, 156.745 382.630, 150.825 383.376 C 140.257 384.708, 119.119 388.548, 118.401 389.266 C 117.997 389.670, 179.054 389.959, 254.083 389.910 C 332.364 389.858, 389.222 389.452, 387.500 388.957 C 384.541 388.106, 364.079 384.326, 356.712 383.270 C 353.216 382.768, 352.155 381.704, 342.914 369.434 L 332.903 356.142 322.983 353.848 L 313.062 351.555 310.975 342.527 C 309.827 337.562, 307.366 327.200, 305.507 319.500 C 303.647 311.800, 300.474 298.300, 298.456 289.500 C 296.437 280.700, 293.709 269.143, 292.393 263.819 C 291.077 258.494, 290 253.242, 290 252.148 C 290 249.990, 291.302 249.559, 301.250 248.425 C 306.408 247.837, 307 247.531, 307 245.451 C 307 243.665, 307.632 243.060, 309.750 242.816 C 312.382 242.514, 312.499 242.264, 312.475 237 C 312.462 233.975, 311.636 225.875, 310.641 219 C 309.646 212.125, 307.710 198.628, 306.338 189.006 C 304.967 179.384, 303.721 171.388, 303.569 171.236 C 302.800 170.467, 285.388 168.391, 284.709 168.988 C 284.273 169.370, 283.641 175.188, 283.302 181.917 C 282.709 193.711, 282.612 194.131, 280.594 193.589 C 279.442 193.280, 275.978 193.021, 272.895 193.014 L 267.290 193 266.395 180.250 L 265.500 167.500 255.250 167.215 C 249.613 167.058, 244.990 167.058, 244.979 167.215 M 336 191 C 336.589 192.100, 337.295 193, 337.570 193 C 337.845 193, 337.589 192.100, 337 191 C 336.411 189.900, 335.705 189, 335.430 189 C 335.155 189, 335.411 189.900, 336 191 M 168 203 C 167.411 204.100, 167.155 205, 167.430 205 C 167.705 205, 168.411 204.100, 169 203 C 169.589 201.900, 169.845 201, 169.570 201 C 169.295 201, 168.589 201.900, 168 203 M 241 201.965 C 238.525 202.259, 237.175 202.742, 238 203.039 C 239.869 203.710, 247.871 202.699, 246.500 201.965 C 245.950 201.670, 243.475 201.670, 241 201.965 M 274 201.378 C 274 201.585, 274.788 202.373, 275.750 203.128 C 277.336 204.371, 277.371 204.336, 276.128 202.750 C 274.821 201.084, 274 200.555, 274 201.378 M 278 201.378 C 278 201.585, 278.788 202.373, 279.750 203.128 C 281.336 204.371, 281.371 204.336, 280.128 202.750 C 278.821 201.084, 278 200.555, 278 201.378 M 343 203 C 343.589 204.100, 344.295 205, 344.570 205 C 344.845 205, 344.589 204.100, 344 203 C 343.411 201.900, 342.705 201, 342.430 201 C 342.155 201, 342.411 201.900, 343 203 M 233.733 203.124 C 234.412 203.808, 235.219 204.115, 235.526 203.807 C 235.834 203.499, 235.279 202.940, 234.293 202.564 C 232.868 202.022, 232.753 202.136, 233.733 203.124 M 270 202.393 C 270 202.609, 270.698 203.054, 271.552 203.382 C 272.442 203.723, 272.843 203.555, 272.493 202.989 C 271.906 202.038, 270 201.583, 270 202.393 M 227.250 203.689 C 228.213 203.941, 229.787 203.941, 230.750 203.689 C 231.713 203.438, 230.925 203.232, 229 203.232 C 227.075 203.232, 226.287 203.438, 227.250 203.689 M 258.250 235.732 C 253.176 236.189, 252.530 238, 257.441 238 C 259.334 238, 261.190 238.498, 261.566 239.107 C 262.048 239.886, 262.486 239.831, 263.049 238.921 C 263.695 237.875, 264.196 237.897, 265.674 239.034 C 266.678 239.807, 266.409 239.216, 265.076 237.720 C 263.742 236.224, 262.617 235.079, 262.576 235.175 C 262.534 235.271, 260.587 235.522, 258.250 235.732 M 340.504 236.373 C 338.696 237.696, 338.710 237.773, 340.888 238.465 C 342.133 238.860, 343.417 238.917, 343.742 238.591 C 344.067 238.266, 343.528 238, 342.544 238 C 341.067 238, 340.972 237.738, 342 236.500 C 343.552 234.629, 342.958 234.579, 340.504 236.373 M 238.335 236.668 C 239.263 237.596, 252.001 237.673, 252 236.750 C 252 236.338, 248.775 236, 244.833 236 C 240.892 236, 237.967 236.301, 238.335 236.668 M 220.815 240.864 C 222.032 241.636, 227 241.250, 227 240.383 C 227 240.173, 225.313 240.007, 223.250 240.015 C 220.860 240.025, 219.977 240.333, 220.815 240.864 M 343.507 241.989 C 343.157 242.555, 343.558 242.723, 344.448 242.382 C 346.180 241.717, 346.497 241, 345.059 241 C 344.541 241, 343.843 241.445, 343.507 241.989 M 168.813 242.683 C 169.534 242.972, 170.397 242.936, 170.729 242.604 C 171.061 242.272, 170.471 242.036, 169.417 242.079 C 168.252 242.127, 168.015 242.364, 168.813 242.683 M 164.083 243.365 C 164.313 243.565, 165.625 244.265, 167 244.920 C 169.357 246.042, 169.389 246.022, 167.559 244.555 C 165.966 243.279, 162.711 242.164, 164.083 243.365 M 163.269 247.693 C 164.242 247.947, 165.592 247.930, 166.269 247.656 C 166.946 247.382, 166.150 247.175, 164.500 247.195 C 162.850 247.215, 162.296 247.439, 163.269 247.693 M 234.269 247.693 C 235.242 247.947, 236.592 247.930, 237.269 247.656 C 237.946 247.382, 237.150 247.175, 235.500 247.195 C 233.850 247.215, 233.296 247.439, 234.269 247.693 M 230 248.703 C 230 249.857, 232.838 252.523, 233.395 251.893 C 233.586 251.677, 232.900 250.634, 231.871 249.575 C 230.842 248.516, 230 248.124, 230 248.703 M 348.441 250.555 C 346.611 252.022, 346.643 252.042, 349 250.920 C 352.061 249.462, 352.628 249, 351.358 249 C 350.821 249, 349.509 249.700, 348.441 250.555 M 372 252 C 372.589 253.100, 373.295 254, 373.570 254 C 373.845 254, 373.589 253.100, 373 252 C 372.411 250.900, 371.705 250, 371.430 250 C 371.155 250, 371.411 250.900, 372 252 M 351.507 254.989 C 351.157 255.555, 351.558 255.723, 352.448 255.382 C 354.180 254.717, 354.497 254, 353.059 254 C 352.541 254, 351.843 254.445, 351.507 254.989 M 156.083 255.356 C 156.313 255.552, 158.075 256.002, 160 256.355 C 162.462 256.807, 163.055 256.706, 162 256.014 C 160.644 255.125, 155.092 254.508, 156.083 255.356 M 352.500 259 C 351.718 260.266, 353.042 260.266, 355 259 C 356.293 258.165, 356.266 258.029, 354.809 258.015 C 353.879 258.007, 352.840 258.450, 352.500 259 M 154.250 262.689 C 155.213 262.941, 156.787 262.941, 157.750 262.689 C 158.713 262.438, 157.925 262.232, 156 262.232 C 154.075 262.232, 153.287 262.438, 154.250 262.689 M 357.441 266.555 C 355.611 268.022, 355.643 268.042, 358 266.920 C 361.061 265.462, 361.628 265, 360.358 265 C 359.821 265, 358.509 265.700, 357.441 266.555 M 149 269.393 C 149 269.609, 149.698 270.054, 150.552 270.382 C 151.442 270.723, 151.843 270.555, 151.493 269.989 C 150.906 269.038, 149 268.583, 149 269.393 M 360.507 269.989 C 360.157 270.555, 360.558 270.723, 361.448 270.382 C 363.180 269.717, 363.497 269, 362.059 269 C 361.541 269, 360.843 269.445, 360.507 269.989 M 362 275 C 361.099 275.582, 360.975 275.975, 361.691 275.985 C 362.346 275.993, 363.160 275.550, 363.500 275 C 364.267 273.758, 363.921 273.758, 362 275 M 143 277.449 C 143 277.724, 144.350 278.647, 146 279.500 C 147.650 280.353, 149 280.826, 149 280.551 C 149 280.276, 147.650 279.353, 146 278.500 C 144.350 277.647, 143 277.174, 143 277.449 M 364.500 279 C 362.870 279.701, 362.812 279.872, 364.191 279.930 C 365.121 279.968, 366.160 279.550, 366.500 279 C 367.211 277.850, 367.176 277.850, 364.500 279 M 141 281.350 C 141 281.581, 142.180 282.543, 143.623 283.489 C 145.066 284.434, 145.941 284.713, 145.567 284.109 C 144.854 282.955, 141 280.626, 141 281.350 M 367 284 C 366.099 284.582, 365.975 284.975, 366.691 284.985 C 367.346 284.993, 368.160 284.550, 368.500 284 C 369.267 282.758, 368.921 282.758, 367 284 M 116 291 C 115.411 292.100, 115.155 293, 115.430 293 C 115.705 293, 116.411 292.100, 117 291 C 117.589 289.900, 117.845 289, 117.570 289 C 117.295 289, 116.589 289.900, 116 291 M 370 290 C 369.099 290.582, 368.975 290.975, 369.691 290.985 C 370.346 290.993, 371.160 290.550, 371.500 290 C 372.267 288.758, 371.921 288.758, 370 290 M 395 291 C 395.589 292.100, 396.295 293, 396.570 293 C 396.845 293, 396.589 292.100, 396 291 C 395.411 289.900, 394.705 289, 394.430 289 C 394.155 289, 394.411 289.900, 395 291 M 139.813 290.683 C 140.534 290.972, 141.397 290.936, 141.729 290.604 C 142.061 290.272, 141.471 290.036, 140.417 290.079 C 139.252 290.127, 139.015 290.364, 139.813 290.683 M 136.500 293 C 137.600 293.473, 139.175 293.859, 140 293.859 C 140.945 293.859, 140.761 293.542, 139.500 293 C 138.400 292.527, 136.825 292.141, 136 292.141 C 135.055 292.141, 135.239 292.458, 136.500 293 M 113 296 C 112.411 297.100, 112.155 298, 112.430 298 C 112.705 298, 113.411 297.100, 114 296 C 114.589 294.900, 114.845 294, 114.570 294 C 114.295 294, 113.589 294.900, 113 296 M 398 296 C 398.589 297.100, 399.295 298, 399.570 298 C 399.845 298, 399.589 297.100, 399 296 C 398.411 294.900, 397.705 294, 397.430 294 C 397.155 294, 397.411 294.900, 398 296 M 135.813 298.683 C 136.534 298.972, 137.397 298.936, 137.729 298.604 C 138.061 298.272, 137.471 298.036, 136.417 298.079 C 135.252 298.127, 135.015 298.364, 135.813 298.683 M 132.083 299.283 C 132.313 299.439, 133.400 300.226, 134.500 301.033 C 136.350 302.390, 136.397 302.369, 135.128 300.750 C 134.373 299.788, 133.285 299, 132.711 299 C 132.137 299, 131.854 299.127, 132.083 299.283 M 377 301 C 376.099 301.582, 375.975 301.975, 376.691 301.985 C 377.346 301.993, 378.160 301.550, 378.500 301 C 379.267 299.758, 378.921 299.758, 377 301 M 128 303.393 C 128 303.609, 128.698 304.054, 129.552 304.382 C 130.442 304.723, 130.843 304.555, 130.493 303.989 C 129.906 303.038, 128 302.583, 128 303.393 M 381.507 303.989 C 381.157 304.555, 381.558 304.723, 382.448 304.382 C 384.180 303.717, 384.497 303, 383.059 303 C 382.541 303, 381.843 303.445, 381.507 303.989 M 103 313 C 102.411 314.100, 102.155 315, 102.430 315 C 102.705 315, 103.411 314.100, 104 313 C 104.589 311.900, 104.845 311, 104.570 311 C 104.295 311, 103.589 311.900, 103 313 M 408 313 C 408.589 314.100, 409.295 315, 409.570 315 C 409.845 315, 409.589 314.100, 409 313 C 408.411 311.900, 407.705 311, 407.430 311 C 407.155 311, 407.411 311.900, 408 313 M 241.702 312.631 C 241.355 312.979, 238.805 313.212, 236.035 313.149 C 231.923 313.057, 230.979 313.354, 230.885 314.768 C 230.821 315.721, 230.686 316.950, 230.585 317.500 C 229.465 323.573, 228.408 326.065, 225.979 328.358 C 224.404 329.844, 222.855 331.882, 222.536 332.887 C 222.217 333.892, 220.953 335.194, 219.728 335.781 C 217.803 336.703, 218.006 336.792, 221.220 336.434 C 223.266 336.206, 225.291 335.962, 225.720 335.892 C 227.910 335.531, 230 336.124, 230 337.107 C 230 337.718, 229.272 337.935, 228.373 337.590 C 227.479 337.246, 226.202 337.417, 225.537 337.969 C 224.872 338.522, 221.775 339.155, 218.655 339.377 C 215.536 339.599, 211.923 340.476, 210.626 341.325 C 208.793 342.526, 207.968 342.606, 206.911 341.685 C 206.164 341.033, 206.329 341.435, 207.277 342.579 C 209.301 345.020, 209.754 348.154, 207.800 346.200 C 205.694 344.094, 204.842 344.915, 206.872 347.093 C 209.099 349.484, 215 350.365, 215 348.307 C 215 347.302, 217.844 347, 227.327 347 L 239.654 347 240.860 340.457 C 241.523 336.859, 241.799 333.484, 241.474 332.957 C 241.148 332.431, 239.334 332, 237.441 332 C 235.178 332, 234 331.526, 234 330.617 C 234 329.856, 233.100 328.998, 232 328.710 C 230.900 328.423, 230 327.643, 230 326.977 C 230 326.259, 230.814 325.979, 232 326.290 C 233.100 326.577, 234 326.389, 234 325.871 C 234 325.325, 234.841 325.380, 236 326 C 237.434 326.767, 238 326.760, 238 325.976 C 238 325.374, 238.450 325.160, 239 325.500 C 239.550 325.840, 240 325.668, 240 325.118 C 240 323.588, 238.223 322.831, 237.776 324.171 C 237.559 324.822, 236.846 325.023, 236.191 324.618 C 234.473 323.556, 234.723 321.956, 236.500 322.638 C 237.325 322.955, 238 322.700, 238 322.072 C 238 321.276, 238.554 321.226, 239.824 321.906 C 241.394 322.746, 241.881 322.231, 243.329 318.191 C 244.253 315.611, 245.008 313.163, 245.005 312.750 C 244.999 311.839, 242.581 311.753, 241.702 312.631 M 388 315.059 C 388 315.641, 388.450 315.840, 389 315.500 C 389.550 315.160, 390 314.684, 390 314.441 C 390 314.198, 389.550 314, 389 314 C 388.450 314, 388 314.477, 388 315.059 M 389.441 318.555 C 387.577 320.049, 387.589 320.067, 389.750 319.020 C 390.988 318.420, 392 317.720, 392 317.465 C 392 316.700, 391.481 316.921, 389.441 318.555 M 119.589 318.856 C 119.298 319.326, 120.172 319.499, 121.530 319.239 C 122.889 318.979, 124 318.594, 124 318.383 C 124 317.610, 120.101 318.027, 119.589 318.856 M 96.500 324 C 95.647 325.650, 95.174 327, 95.449 327 C 95.724 327, 96.647 325.650, 97.500 324 C 98.353 322.350, 98.826 321, 98.551 321 C 98.276 321, 97.353 322.350, 96.500 324 M 414.500 324 C 415.353 325.650, 416.276 327, 416.551 327 C 416.826 327, 416.353 325.650, 415.500 324 C 414.647 322.350, 413.724 321, 413.449 321 C 413.174 321, 413.647 322.350, 414.500 324 M 117.750 323.662 C 118.438 323.940, 119.563 323.940, 120.250 323.662 C 120.938 323.385, 120.375 323.158, 119 323.158 C 117.625 323.158, 117.063 323.385, 117.750 323.662 M 249 326.893 C 249 327.384, 249.739 328.069, 250.641 328.416 C 252.014 328.943, 252.076 328.796, 251.019 327.523 C 249.579 325.788, 249 325.607, 249 326.893 M 289 328.929 C 289 329.518, 288.298 330, 287.441 330 C 286.584 330, 286.174 330.472, 286.530 331.049 C 286.974 331.766, 287.568 331.774, 288.413 331.072 C 289.266 330.365, 290.012 330.412, 290.824 331.224 C 291.471 331.871, 292 332.053, 292 331.629 C 292 331.204, 291.325 330.182, 290.500 329.357 C 289.675 328.532, 289 328.339, 289 328.929 M 90 335 C 89.411 336.100, 89.155 337, 89.430 337 C 89.705 337, 90.411 336.100, 91 335 C 91.589 333.900, 91.845 333, 91.570 333 C 91.295 333, 90.589 333.900, 90 335 M 421 335 C 421.589 336.100, 422.295 337, 422.570 337 C 422.845 337, 422.589 336.100, 422 335 C 421.411 333.900, 420.705 333, 420.430 333 C 420.155 333, 420.411 333.900, 421 335 M 110 334.430 C 110 334.705, 110.900 335.411, 112 336 C 113.100 336.589, 114 336.845, 114 336.570 C 114 336.295, 113.100 335.589, 112 335 C 110.900 334.411, 110 334.155, 110 334.430 M 87 340 C 86.411 341.100, 86.155 342, 86.430 342 C 86.705 342, 87.411 341.100, 88 340 C 88.589 338.900, 88.845 338, 88.570 338 C 88.295 338, 87.589 338.900, 87 340 M 424 340 C 424.589 341.100, 425.295 342, 425.570 342 C 425.845 342, 425.589 341.100, 425 340 C 424.411 338.900, 423.705 338, 423.430 338 C 423.155 338, 423.411 338.900, 424 340 M 430.500 351 C 431.353 352.650, 432.276 354, 432.551 354 C 432.826 354, 432.353 352.650, 431.500 351 C 430.647 349.350, 429.724 348, 429.449 348 C 429.174 348, 429.647 349.350, 430.500 351 M 239.856 349.990 C 238.402 350.419, 232.777 350.807, 227.356 350.851 C 213.724 350.963, 208.330 351.673, 202.378 354.140 C 198.407 355.785, 197.362 356.668, 197.728 358.067 C 198.151 359.686, 193.687 366.973, 191.744 367.835 C 191.328 368.020, 191.245 368.587, 191.559 369.095 C 191.873 369.603, 191.201 371.201, 190.065 372.645 C 188.929 374.088, 188 376.334, 188 377.635 C 188 379.972, 186.479 380.933, 185.833 379.003 C 185.650 378.454, 184.175 379.144, 182.556 380.536 C 180.937 381.927, 179.025 382.840, 178.308 382.565 C 177.590 382.289, 175.989 382.479, 174.751 382.988 C 173.253 383.603, 178.251 383.899, 189.694 383.873 C 201.878 383.846, 207.003 383.494, 207.282 382.667 C 207.567 381.820, 208.131 381.877, 209.337 382.872 C 210.768 384.054, 211 384.019, 211 382.622 C 211 381.730, 211.563 380.993, 212.250 380.985 C 213.118 380.974, 213.061 380.692, 212.064 380.061 C 211.025 379.403, 210.920 378.786, 211.683 377.826 C 212.262 377.097, 213.301 373.439, 213.991 369.698 C 215.274 362.742, 216.852 360.088, 219.821 359.886 C 225.387 359.508, 227.287 358.868, 228.966 356.807 L 230.843 354.500 233.922 357.437 C 235.615 359.052, 237 359.826, 237 359.156 C 237 358.486, 236.325 357.678, 235.500 357.362 C 233.568 356.620, 233.555 355, 235.481 355 C 236.295 355, 237.228 356.062, 237.554 357.360 C 237.977 359.046, 238.768 359.654, 240.323 359.488 C 241.520 359.360, 243.118 359.198, 243.872 359.128 C 244.921 359.030, 244.976 358.676, 244.105 357.627 C 243.478 356.871, 243.234 355.554, 243.562 354.700 C 244.008 353.536, 243.664 353.275, 242.192 353.660 C 241.110 353.943, 239.887 353.627, 239.474 352.957 C 238.990 352.175, 239.217 351.908, 240.111 352.209 C 240.875 352.467, 242.905 352.093, 244.623 351.378 C 247.581 350.148, 249 350.382, 249 352.099 C 249 352.521, 248.100 353.151, 247 353.500 C 244.293 354.359, 244.476 355.470, 247.352 355.635 C 249.290 355.746, 249.717 355.264, 249.784 352.885 C 249.829 351.298, 249.559 349.970, 249.183 349.933 C 248.807 349.895, 247.150 349.718, 245.500 349.537 C 243.850 349.357, 241.310 349.561, 239.856 349.990 M 80 352 C 79.411 353.100, 79.155 354, 79.430 354 C 79.705 354, 80.411 353.100, 81 352 C 81.589 350.900, 81.845 350, 81.570 350 C 81.295 350, 80.589 350.900, 80 352 M 70.500 368 C 69.647 369.650, 69.174 371, 69.449 371 C 69.724 371, 70.647 369.650, 71.500 368 C 72.353 366.350, 72.826 365, 72.551 365 C 72.276 365, 71.353 366.350, 70.500 368 M 440.500 368 C 441.353 369.650, 442.276 371, 442.551 371 C 442.826 371, 442.353 369.650, 441.500 368 C 440.647 366.350, 439.724 365, 439.449 365 C 439.174 365, 439.647 366.350, 440.500 368 M 62.771 381.250 C 60.583 384.623, 58.621 388.640, 59.718 387.500 C 61.120 386.043, 65.245 379, 64.697 379 C 64.440 379, 63.573 380.012, 62.771 381.250 M 450.500 385 C 451.353 386.650, 452.276 388, 452.551 388 C 452.826 388, 452.353 386.650, 451.500 385 C 450.647 383.350, 449.724 382, 449.449 382 C 449.174 382, 449.647 383.350, 450.500 385 M 54 396 C 53.411 397.100, 53.155 398, 53.430 398 C 53.705 398, 54.411 397.100, 55 396 C 55.589 394.900, 55.845 394, 55.570 394 C 55.295 394, 54.589 394.900, 54 396 M 457 396 C 457.589 397.100, 458.295 398, 458.570 398 C 458.845 398, 458.589 397.100, 458 396 C 457.411 394.900, 456.705 394, 456.430 394 C 456.155 394, 456.411 394.900, 457 396 M 289.157 396.997 C 284.674 398.054, 283.600 399.331, 283.600 403.603 C 283.600 406.653, 284.399 407.957, 288.800 412.089 C 294.065 417.033, 295.289 420.311, 292.800 422.800 C 290.577 425.023, 286.069 424.246, 284.781 421.418 C 283.606 418.840, 283.603 418.840, 282.787 421.047 C 281.591 424.280, 283.566 426, 288.476 426 C 293.949 426, 298 422.553, 298 417.897 C 298 415.333, 296.910 413.643, 292.500 409.372 C 286.734 403.787, 285.693 400.770, 288.934 399.035 C 291.715 397.547, 292.670 397.730, 294.961 400.189 L 297 402.377 297 399.689 C 297 398.210, 296.587 397, 296.082 397 C 295.577 397, 294.564 396.822, 293.832 396.604 C 293.099 396.387, 290.996 396.563, 289.157 396.997 M 338.728 396.605 C 338.328 397.006, 337.986 403.221, 337.968 410.417 C 337.930 425.990, 337.502 425.873, 330.911 408.493 C 328.514 402.172, 326.049 397, 325.433 397 C 324.817 397, 322.105 402.962, 319.407 410.250 C 314.653 423.087, 314.404 423.509, 311.415 423.801 C 306.394 424.291, 305.789 422.590, 306.165 409.044 L 306.500 396.997 303.815 396.999 L 301.130 397 301.677 405.750 C 301.977 410.563, 301.794 416.808, 301.270 419.629 L 300.317 424.757 307.832 425.240 C 317.344 425.850, 319 425.419, 319 422.334 C 319 420.996, 319.700 418.546, 320.556 416.891 C 321.862 414.367, 322.623 413.931, 325.277 414.191 C 328.079 414.465, 328.674 415.102, 330.464 419.750 L 332.486 425 338.493 424.921 C 341.797 424.878, 343.938 424.615, 343.250 424.338 C 342.375 423.985, 342 421.030, 342 414.494 L 342 405.156 352.423 415.821 C 358.156 421.687, 363.070 426.263, 363.343 425.990 C 363.617 425.717, 363.989 419.082, 364.170 411.245 L 364.500 396.997 361.820 396.999 C 359.273 397, 359.186 397.161, 360.070 400.243 C 360.581 402.027, 360.979 406.865, 360.952 410.993 L 360.905 418.500 350.181 407.188 C 344.283 400.967, 339.129 396.204, 338.728 396.605 M 120.500 410.900 L 120.500 424.998 123.500 425.001 L 126.500 425.004 126.161 419.002 C 125.704 410.896, 127.123 411.112, 134.368 420.250 C 138.068 424.917, 138.233 425, 143.817 425.002 L 149.500 425.003 149.500 417.752 L 149.500 410.500 156.500 410.500 L 163.500 410.500 163.808 414.210 C 163.977 416.251, 163.676 419.513, 163.139 421.460 L 162.161 425 166.203 425 C 169.623 425, 170.059 424.777, 169.040 423.548 C 168.199 422.535, 167.935 418.305, 168.167 409.547 L 168.500 396.997 165.741 396.999 C 163.019 397, 162.985 397.077, 163.241 402.750 L 163.500 408.500 156.250 408.794 L 149 409.088 149 403.044 C 149 397.118, 148.947 397, 146.250 396.999 L 143.500 396.997 143.829 409.999 C 144.037 418.172, 143.790 423, 143.164 423 C 141.920 423, 134 414.088, 134 412.688 C 134 412.121, 134.670 410.918, 135.488 410.013 C 138.072 407.158, 138.390 402.703, 136.203 400.002 C 134.546 397.955, 133.173 397.519, 127.370 397.190 L 120.500 396.801 120.500 410.900 M 177.841 398.524 C 173.799 400.720, 171 405.994, 171 411.418 C 171 417.617, 173.179 421.540, 177.981 423.990 C 188.943 429.582, 201.010 422.767, 200.982 411 C 200.968 405.329, 199.381 402.173, 195.088 399.280 C 191.091 396.586, 182.132 396.194, 177.841 398.524 M 203.500 410.958 L 203.500 424.916 208.657 425.562 C 216.392 426.530, 221.727 425.277, 225.811 421.534 C 228.969 418.640, 229.399 417.633, 229.791 412.211 C 230.573 401.402, 225.217 397.001, 211.282 396.999 L 203.500 396.999 203.500 410.958 M 232.500 410.884 L 232.500 424.770 237.848 425.323 C 240.790 425.627, 244.165 425.514, 245.348 425.073 C 246.532 424.631, 248.400 424.627, 249.500 425.064 C 253.138 426.511, 257.686 426.035, 260.365 423.927 C 262.417 422.313, 263 420.981, 263 417.905 C 263 414.428, 262.339 413.315, 257.483 408.612 C 252.678 403.958, 252.078 402.960, 252.841 400.884 C 254.017 397.680, 258.429 397.112, 260.193 399.938 C 261.922 402.706, 263 402.538, 263 399.500 C 263 397.182, 262.652 397, 258.223 397 C 251.989 397, 249 399.075, 249 403.403 C 249 406.046, 250.081 407.790, 254.500 412.281 C 260.269 418.143, 260.827 419.486, 258.701 422.395 C 256.870 424.899, 251.803 424.190, 250.513 421.250 C 249.463 418.856, 248 418.225, 248 420.167 C 248 420.808, 247.703 421.036, 247.340 420.673 C 246.977 420.310, 246.033 420.936, 245.243 422.063 C 244.277 423.442, 242.937 424.014, 241.153 423.807 C 238.635 423.516, 238.485 423.181, 238.202 417.250 C 237.910 411.122, 237.955 411, 240.484 411 C 241.902 411, 243.322 411.675, 243.638 412.500 C 244.605 415.018, 246 414.173, 246 411.070 C 246 408.352, 245.801 408.196, 243.250 408.916 C 238.884 410.148, 238 409.306, 238 403.917 C 238 399.161, 238.095 399, 240.893 399 C 242.709 399, 244.052 399.651, 244.500 400.750 C 245.156 402.356, 245.282 402.336, 246.037 400.500 C 247.428 397.118, 247.215 397, 239.750 396.999 L 232.500 396.999 232.500 410.884 M 273.808 410.154 C 274.042 420.168, 273.803 423.509, 272.808 424.140 C 271.991 424.658, 273.046 424.975, 275.613 424.985 L 279.727 425 278.752 419.750 C 278.216 416.863, 278.023 410.563, 278.323 405.750 L 278.870 397 276.185 396.998 L 273.500 396.996 273.808 410.154 M 369.832 408.912 C 370.033 416.150, 369.742 421.614, 369.089 422.834 C 368.077 424.724, 368.401 424.884, 374.610 425.549 C 388.082 426.991, 396 421.606, 396 411 C 396 401.518, 389.941 397.061, 377 397.021 L 369.500 396.997 369.832 408.912 M 127.243 398.850 C 126.651 399.215, 126.041 402.211, 125.886 405.507 C 125.625 411.061, 125.769 411.524, 127.857 411.827 C 131.104 412.298, 133 410.265, 133 406.312 C 133 400.871, 130.085 397.093, 127.243 398.850 M 180.277 399.973 C 177.304 401.785, 176.817 402.736, 175.540 409.225 C 174.858 412.688, 177.272 419.051, 180.203 421.517 C 184.378 425.030, 189.291 424.862, 193.077 421.077 C 195.615 418.539, 196 417.413, 196 412.527 C 196 400.657, 188.706 394.833, 180.277 399.973 M 74 400.059 C 74 400.641, 74.450 400.840, 75 400.500 C 75.550 400.160, 76 399.684, 76 399.441 C 76 399.198, 75.550 399, 75 399 C 74.450 399, 74 399.477, 74 400.059 M 208.750 399.570 C 207.651 400.688, 207.834 418.433, 208.975 421.435 C 209.820 423.658, 210.544 424, 214.399 424 C 225.450 424, 230.011 409.996, 221.549 402.046 C 219.024 399.674, 210.305 397.987, 208.750 399.570 M 374.667 399.667 C 373.442 400.892, 373.917 421.517, 375.200 422.800 C 377.125 424.725, 384.401 424.259, 387.236 422.029 C 392.912 417.564, 392.511 406.017, 386.521 401.448 C 383.423 399.086, 376.316 398.018, 374.667 399.667 M 438.079 401.583 C 438.127 402.748, 438.364 402.985, 438.683 402.188 C 438.972 401.466, 438.936 400.603, 438.604 400.271 C 438.272 399.939, 438.036 400.529, 438.079 401.583 M 84.567 406.433 C 83.705 407.845, 82.315 410.125, 81.477 411.500 L 79.954 414 86.541 414 L 93.128 414 90.848 409.943 C 87.506 403.997, 86.423 403.392, 84.567 406.433 M 421.542 408.338 C 420.144 410.724, 419 412.974, 419 413.338 C 419 413.702, 421.726 414, 425.058 414 L 431.115 414 428.308 409.001 C 426.763 406.252, 425.181 404.002, 424.792 404.001 C 424.403 404, 422.940 405.952, 421.542 408.338 M 323.613 407.407 C 323.280 408.731, 322.733 410.531, 322.397 411.407 C 321.937 412.607, 322.414 413, 324.334 413 C 327.700 413, 328.092 412.123, 326.459 408.240 C 324.830 404.365, 324.407 404.242, 323.613 407.407 M 47 408 C 46.411 409.100, 46.155 410, 46.430 410 C 46.705 410, 47.411 409.100, 48 408 C 48.589 406.900, 48.845 406, 48.570 406 C 48.295 406, 47.589 406.900, 47 408 M 464 408 C 464.589 409.100, 465.295 410, 465.570 410 C 465.845 410, 465.589 409.100, 465 408 C 464.411 406.900, 463.705 406, 463.430 406 C 463.155 406, 463.411 406.900, 464 408 M 445.813 412.683 C 446.534 412.972, 447.397 412.936, 447.729 412.604 C 448.061 412.272, 447.471 412.036, 446.417 412.079 C 445.252 412.127, 445.015 412.364, 445.813 412.683 M 471 420 C 471.589 421.100, 472.295 422, 472.570 422 C 472.845 422, 472.589 421.100, 472 420 C 471.411 418.900, 470.705 418, 470.430 418 C 470.155 418, 470.411 418.900, 471 420 M 57.216 422.184 C 56.547 422.853, 56 423.992, 56 424.716 C 56 425.778, 61.342 425.980, 83.750 425.766 C 110.745 425.507, 111.500 425.446, 111.500 423.500 C 111.500 421.557, 110.745 421.492, 84.966 421.234 C 65.167 421.036, 58.123 421.277, 57.216 422.184 M 399.380 422.452 C 399.074 423.251, 399.114 424.376, 399.470 424.952 C 400.148 426.049, 456 426.525, 456 425.434 C 456 425.123, 455.534 423.998, 454.965 422.934 C 453.981 421.095, 452.600 421, 426.933 421 C 404.255 421, 399.848 421.232, 399.380 422.452 M 34 430 C 33.411 431.100, 33.155 432, 33.430 432 C 33.705 432, 34.411 431.100, 35 430 C 35.589 428.900, 35.845 428, 35.570 428 C 35.295 428, 34.589 428.900, 34 430 M 477 430 C 477.589 431.100, 478.295 432, 478.570 432 C 478.845 432, 478.589 431.100, 478 430 C 477.411 428.900, 476.705 428, 476.430 428 C 476.155 428, 476.411 428.900, 477 430 M 144.750 442.750 C 205.937 442.892, 306.062 442.892, 367.250 442.750 C 428.437 442.608, 378.375 442.491, 256 442.491 C 133.625 442.491, 83.562 442.608, 144.750 442.750\" fill=\"#07090a\" fill-rule=\"evenodd\"/>\n <path data-emblem-knockout d=\"M 237.383 86.769 C 227.418 103.671, 213.303 127.625, 206.016 140 C 198.728 152.375, 191.761 164.075, 190.532 166 C 189.303 167.925, 184.103 176.700, 178.976 185.500 C 173.848 194.300, 164.855 209.600, 158.991 219.500 C 145.174 242.827, 125.966 275.399, 123.018 280.500 C 121.747 282.700, 114.851 294.400, 107.693 306.500 C 100.536 318.600, 86.593 342.225, 76.709 359 C 66.825 375.775, 52.881 399.400, 45.722 411.500 C 27.127 442.931, 27.633 441.999, 29.165 442.005 C 67.412 442.163, 483.394 441.939, 483.570 441.761 C 483.711 441.617, 482.235 438.800, 480.288 435.500 C 478.341 432.200, 471.467 420.500, 465.012 409.500 C 450.955 385.544, 422.370 337.052, 404 306 C 396.679 293.625, 389.231 280.952, 387.449 277.838 C 385.666 274.724, 379.717 264.599, 374.228 255.338 C 362.449 235.466, 339.219 196.180, 323.472 169.500 C 317.304 159.050, 305.325 138.800, 296.851 124.500 C 288.377 110.200, 275.832 88.950, 268.972 77.279 C 262.112 65.607, 256.275 56.053, 256 56.047 C 255.725 56.042, 247.347 69.866, 237.383 86.769 M 252.585 90.626 C 251.163 93.170, 250 95.645, 250 96.126 C 250 96.607, 252.700 97, 256 97 C 259.602 97, 262 96.572, 262 95.928 C 262 94.348, 256.947 86, 255.990 86 C 255.540 86, 254.008 88.082, 252.585 90.626 M 245.813 113.683 C 246.534 113.972, 247.397 113.936, 247.729 113.604 C 248.061 113.272, 247.471 113.036, 246.417 113.079 C 245.252 113.127, 245.015 113.364, 245.813 113.683 M 285.813 143.683 C 286.534 143.972, 287.397 143.936, 287.729 143.604 C 288.061 143.272, 287.471 143.036, 286.417 143.079 C 285.252 143.127, 285.015 143.364, 285.813 143.683 M 224.813 145.683 C 225.534 145.972, 226.397 145.936, 226.729 145.604 C 227.061 145.272, 226.471 145.036, 225.417 145.079 C 224.252 145.127, 224.015 145.364, 224.813 145.683 M 218.813 150.683 C 219.534 150.972, 220.397 150.936, 220.729 150.604 C 221.061 150.272, 220.471 150.036, 219.417 150.079 C 218.252 150.127, 218.015 150.364, 218.813 150.683 M 288.813 152.683 C 289.534 152.972, 290.397 152.936, 290.729 152.604 C 291.061 152.272, 290.471 152.036, 289.417 152.079 C 288.252 152.127, 288.015 152.364, 288.813 152.683 M 218.813 153.683 C 219.534 153.972, 220.397 153.936, 220.729 153.604 C 221.061 153.272, 220.471 153.036, 219.417 153.079 C 218.252 153.127, 218.015 153.364, 218.813 153.683 M 293.813 154.683 C 294.534 154.972, 295.397 154.936, 295.729 154.604 C 296.061 154.272, 295.471 154.036, 294.417 154.079 C 293.252 154.127, 293.015 154.364, 293.813 154.683 M 244.979 167.215 C 244.640 171.758, 242.104 192.216, 241.853 192.434 C 241.659 192.602, 238.304 193.044, 234.397 193.416 L 227.295 194.092 226.750 181.482 C 226.451 174.547, 225.952 168.618, 225.641 168.308 C 224.968 167.635, 209.797 169.889, 208.150 170.907 C 206.946 171.652, 206.004 176.004, 203.477 192.500 C 202.635 198, 201.012 208.575, 199.872 216 C 198.731 223.425, 197.568 232.537, 197.286 236.250 L 196.774 243 200.387 243 C 203.522 243, 204 243.314, 204 245.371 C 204 247.479, 204.583 247.817, 209.250 248.419 C 212.137 248.791, 216.188 249.357, 218.250 249.676 C 221.285 250.145, 222 249.945, 222 248.628 C 222 247.548, 222.862 247, 224.559 247 C 226.017 247, 226.851 246.568, 226.498 245.996 C 226.157 245.444, 224.829 245.256, 223.548 245.577 C 222.267 245.899, 220.918 245.676, 220.550 245.081 C 219.856 243.958, 221.562 243.657, 228.235 243.724 C 230.290 243.744, 231.772 243.440, 231.529 243.047 C 231.005 242.199, 230.032 242.282, 247.500 241.672 C 255.200 241.403, 260.600 241.525, 259.501 241.942 C 258.401 242.359, 254.590 242.795, 251.031 242.910 C 247.473 243.026, 241.523 243.759, 237.810 244.540 C 234.097 245.321, 230.297 245.668, 229.366 245.310 C 228.272 244.890, 227.912 245.049, 228.350 245.758 C 228.739 246.386, 228.061 247.148, 226.765 247.540 C 224.150 248.329, 220 252.687, 220 254.643 C 220 256.030, 197.333 347.969, 196.377 350.460 C 195.900 351.703, 191.807 352.905, 179.274 355.485 C 176.645 356.026, 174.648 358.032, 168.486 366.324 C 155.420 383.909, 156.745 382.630, 150.825 383.376 C 140.257 384.708, 119.119 388.548, 118.401 389.266 C 117.997 389.670, 179.054 389.959, 254.083 389.910 C 332.364 389.858, 389.222 389.452, 387.500 388.957 C 384.541 388.106, 364.079 384.326, 356.712 383.270 C 353.216 382.768, 352.155 381.704, 342.914 369.434 L 332.903 356.142 322.983 353.848 L 313.062 351.555 310.975 342.527 C 309.827 337.562, 307.366 327.200, 305.507 319.500 C 303.647 311.800, 300.474 298.300, 298.456 289.500 C 296.437 280.700, 293.709 269.143, 292.393 263.819 C 291.077 258.494, 290 253.242, 290 252.148 C 290 249.990, 291.302 249.559, 301.250 248.425 C 306.408 247.837, 307 247.531, 307 245.451 C 307 243.665, 307.632 243.060, 309.750 242.816 C 312.382 242.514, 312.499 242.264, 312.475 237 C 312.462 233.975, 311.636 225.875, 310.641 219 C 309.646 212.125, 307.710 198.628, 306.338 189.006 C 304.967 179.384, 303.721 171.388, 303.569 171.236 C 302.800 170.467, 285.388 168.391, 284.709 168.988 C 284.273 169.370, 283.641 175.188, 283.302 181.917 C 282.709 193.711, 282.612 194.131, 280.594 193.589 C 279.442 193.280, 275.978 193.021, 272.895 193.014 L 267.290 193 266.395 180.250 L 265.500 167.500 255.250 167.215 C 249.613 167.058, 244.990 167.058, 244.979 167.215 M 241 201.965 C 238.525 202.259, 237.175 202.742, 238 203.039 C 239.869 203.710, 247.871 202.699, 246.500 201.965 C 245.950 201.670, 243.475 201.670, 241 201.965 M 274 201.378 C 274 201.585, 274.788 202.373, 275.750 203.128 C 277.336 204.371, 277.371 204.336, 276.128 202.750 C 274.821 201.084, 274 200.555, 274 201.378 M 278 201.378 C 278 201.585, 278.788 202.373, 279.750 203.128 C 281.336 204.371, 281.371 204.336, 280.128 202.750 C 278.821 201.084, 278 200.555, 278 201.378 M 233.733 203.124 C 234.412 203.808, 235.219 204.115, 235.526 203.807 C 235.834 203.499, 235.279 202.940, 234.293 202.564 C 232.868 202.022, 232.753 202.136, 233.733 203.124 M 270 202.393 C 270 202.609, 270.698 203.054, 271.552 203.382 C 272.442 203.723, 272.843 203.555, 272.493 202.989 C 271.906 202.038, 270 201.583, 270 202.393 M 227.250 203.689 C 228.213 203.941, 229.787 203.941, 230.750 203.689 C 231.713 203.438, 230.925 203.232, 229 203.232 C 227.075 203.232, 226.287 203.438, 227.250 203.689 M 258.250 235.732 C 253.176 236.189, 252.530 238, 257.441 238 C 259.334 238, 261.190 238.498, 261.566 239.107 C 262.048 239.886, 262.486 239.831, 263.049 238.921 C 263.695 237.875, 264.196 237.897, 265.674 239.034 C 266.678 239.807, 266.409 239.216, 265.076 237.720 C 263.742 236.224, 262.617 235.079, 262.576 235.175 C 262.534 235.271, 260.587 235.522, 258.250 235.732 M 340.504 236.373 C 338.696 237.696, 338.710 237.773, 340.888 238.465 C 342.133 238.860, 343.417 238.917, 343.742 238.591 C 344.067 238.266, 343.528 238, 342.544 238 C 341.067 238, 340.972 237.738, 342 236.500 C 343.552 234.629, 342.958 234.579, 340.504 236.373 M 238.335 236.668 C 239.263 237.596, 252.001 237.673, 252 236.750 C 252 236.338, 248.775 236, 244.833 236 C 240.892 236, 237.967 236.301, 238.335 236.668 M 220.815 240.864 C 222.032 241.636, 227 241.250, 227 240.383 C 227 240.173, 225.313 240.007, 223.250 240.015 C 220.860 240.025, 219.977 240.333, 220.815 240.864 M 343.507 241.989 C 343.157 242.555, 343.558 242.723, 344.448 242.382 C 346.180 241.717, 346.497 241, 345.059 241 C 344.541 241, 343.843 241.445, 343.507 241.989 M 168.813 242.683 C 169.534 242.972, 170.397 242.936, 170.729 242.604 C 171.061 242.272, 170.471 242.036, 169.417 242.079 C 168.252 242.127, 168.015 242.364, 168.813 242.683 M 164.083 243.365 C 164.313 243.565, 165.625 244.265, 167 244.920 C 169.357 246.042, 169.389 246.022, 167.559 244.555 C 165.966 243.279, 162.711 242.164, 164.083 243.365 M 163.269 247.693 C 164.242 247.947, 165.592 247.930, 166.269 247.656 C 166.946 247.382, 166.150 247.175, 164.500 247.195 C 162.850 247.215, 162.296 247.439, 163.269 247.693 M 234.269 247.693 C 235.242 247.947, 236.592 247.930, 237.269 247.656 C 237.946 247.382, 237.150 247.175, 235.500 247.195 C 233.850 247.215, 233.296 247.439, 234.269 247.693 M 230 248.703 C 230 249.857, 232.838 252.523, 233.395 251.893 C 233.586 251.677, 232.900 250.634, 231.871 249.575 C 230.842 248.516, 230 248.124, 230 248.703 M 348.441 250.555 C 346.611 252.022, 346.643 252.042, 349 250.920 C 352.061 249.462, 352.628 249, 351.358 249 C 350.821 249, 349.509 249.700, 348.441 250.555 M 351.507 254.989 C 351.157 255.555, 351.558 255.723, 352.448 255.382 C 354.180 254.717, 354.497 254, 353.059 254 C 352.541 254, 351.843 254.445, 351.507 254.989 M 156.083 255.356 C 156.313 255.552, 158.075 256.002, 160 256.355 C 162.462 256.807, 163.055 256.706, 162 256.014 C 160.644 255.125, 155.092 254.508, 156.083 255.356 M 352.500 259 C 351.718 260.266, 353.042 260.266, 355 259 C 356.293 258.165, 356.266 258.029, 354.809 258.015 C 353.879 258.007, 352.840 258.450, 352.500 259 M 154.250 262.689 C 155.213 262.941, 156.787 262.941, 157.750 262.689 C 158.713 262.438, 157.925 262.232, 156 262.232 C 154.075 262.232, 153.287 262.438, 154.250 262.689 M 357.441 266.555 C 355.611 268.022, 355.643 268.042, 358 266.920 C 361.061 265.462, 361.628 265, 360.358 265 C 359.821 265, 358.509 265.700, 357.441 266.555 M 149 269.393 C 149 269.609, 149.698 270.054, 150.552 270.382 C 151.442 270.723, 151.843 270.555, 151.493 269.989 C 150.906 269.038, 149 268.583, 149 269.393 M 360.507 269.989 C 360.157 270.555, 360.558 270.723, 361.448 270.382 C 363.180 269.717, 363.497 269, 362.059 269 C 361.541 269, 360.843 269.445, 360.507 269.989 M 362 275 C 361.099 275.582, 360.975 275.975, 361.691 275.985 C 362.346 275.993, 363.160 275.550, 363.500 275 C 364.267 273.758, 363.921 273.758, 362 275 M 143 277.449 C 143 277.724, 144.350 278.647, 146 279.500 C 147.650 280.353, 149 280.826, 149 280.551 C 149 280.276, 147.650 279.353, 146 278.500 C 144.350 277.647, 143 277.174, 143 277.449 M 364.500 279 C 362.870 279.701, 362.812 279.872, 364.191 279.930 C 365.121 279.968, 366.160 279.550, 366.500 279 C 367.211 277.850, 367.176 277.850, 364.500 279 M 141 281.350 C 141 281.581, 142.180 282.543, 143.623 283.489 C 145.066 284.434, 145.941 284.713, 145.567 284.109 C 144.854 282.955, 141 280.626, 141 281.350 M 367 284 C 366.099 284.582, 365.975 284.975, 366.691 284.985 C 367.346 284.993, 368.160 284.550, 368.500 284 C 369.267 282.758, 368.921 282.758, 367 284 M 370 290 C 369.099 290.582, 368.975 290.975, 369.691 290.985 C 370.346 290.993, 371.160 290.550, 371.500 290 C 372.267 288.758, 371.921 288.758, 370 290 M 139.813 290.683 C 140.534 290.972, 141.397 290.936, 141.729 290.604 C 142.061 290.272, 141.471 290.036, 140.417 290.079 C 139.252 290.127, 139.015 290.364, 139.813 290.683 M 136.500 293 C 137.600 293.473, 139.175 293.859, 140 293.859 C 140.945 293.859, 140.761 293.542, 139.500 293 C 138.400 292.527, 136.825 292.141, 136 292.141 C 135.055 292.141, 135.239 292.458, 136.500 293 M 135.813 298.683 C 136.534 298.972, 137.397 298.936, 137.729 298.604 C 138.061 298.272, 137.471 298.036, 136.417 298.079 C 135.252 298.127, 135.015 298.364, 135.813 298.683 M 132.083 299.283 C 132.313 299.439, 133.400 300.226, 134.500 301.033 C 136.350 302.390, 136.397 302.369, 135.128 300.750 C 134.373 299.788, 133.285 299, 132.711 299 C 132.137 299, 131.854 299.127, 132.083 299.283 M 377 301 C 376.099 301.582, 375.975 301.975, 376.691 301.985 C 377.346 301.993, 378.160 301.550, 378.500 301 C 379.267 299.758, 378.921 299.758, 377 301 M 128 303.393 C 128 303.609, 128.698 304.054, 129.552 304.382 C 130.442 304.723, 130.843 304.555, 130.493 303.989 C 129.906 303.038, 128 302.583, 128 303.393 M 381.507 303.989 C 381.157 304.555, 381.558 304.723, 382.448 304.382 C 384.180 303.717, 384.497 303, 383.059 303 C 382.541 303, 381.843 303.445, 381.507 303.989 M 241.702 312.631 C 241.355 312.979, 238.805 313.212, 236.035 313.149 C 231.923 313.057, 230.979 313.354, 230.885 314.768 C 230.821 315.721, 230.686 316.950, 230.585 317.500 C 229.465 323.573, 228.408 326.065, 225.979 328.358 C 224.404 329.844, 222.855 331.882, 222.536 332.887 C 222.217 333.892, 220.953 335.194, 219.728 335.781 C 217.803 336.703, 218.006 336.792, 221.220 336.434 C 223.266 336.206, 225.291 335.962, 225.720 335.892 C 227.910 335.531, 230 336.124, 230 337.107 C 230 337.718, 229.272 337.935, 228.373 337.590 C 227.479 337.246, 226.202 337.417, 225.537 337.969 C 224.872 338.522, 221.775 339.155, 218.655 339.377 C 215.536 339.599, 211.923 340.476, 210.626 341.325 C 208.793 342.526, 207.968 342.606, 206.911 341.685 C 206.164 341.033, 206.329 341.435, 207.277 342.579 C 209.301 345.020, 209.754 348.154, 207.800 346.200 C 205.694 344.094, 204.842 344.915, 206.872 347.093 C 209.099 349.484, 215 350.365, 215 348.307 C 215 347.302, 217.844 347, 227.327 347 L 239.654 347 240.860 340.457 C 241.523 336.859, 241.799 333.484, 241.474 332.957 C 241.148 332.431, 239.334 332, 237.441 332 C 235.178 332, 234 331.526, 234 330.617 C 234 329.856, 233.100 328.998, 232 328.710 C 230.900 328.423, 230 327.643, 230 326.977 C 230 326.259, 230.814 325.979, 232 326.290 C 233.100 326.577, 234 326.389, 234 325.871 C 234 325.325, 234.841 325.380, 236 326 C 237.434 326.767, 238 326.760, 238 325.976 C 238 325.374, 238.450 325.160, 239 325.500 C 239.550 325.840, 240 325.668, 240 325.118 C 240 323.588, 238.223 322.831, 237.776 324.171 C 237.559 324.822, 236.846 325.023, 236.191 324.618 C 234.473 323.556, 234.723 321.956, 236.500 322.638 C 237.325 322.955, 238 322.700, 238 322.072 C 238 321.276, 238.554 321.226, 239.824 321.906 C 241.394 322.746, 241.881 322.231, 243.329 318.191 C 244.253 315.611, 245.008 313.163, 245.005 312.750 C 244.999 311.839, 242.581 311.753, 241.702 312.631 M 388 315.059 C 388 315.641, 388.450 315.840, 389 315.500 C 389.550 315.160, 390 314.684, 390 314.441 C 390 314.198, 389.550 314, 389 314 C 388.450 314, 388 314.477, 388 315.059 M 389.441 318.555 C 387.577 320.049, 387.589 320.067, 389.750 319.020 C 390.988 318.420, 392 317.720, 392 317.465 C 392 316.700, 391.481 316.921, 389.441 318.555 M 119.589 318.856 C 119.298 319.326, 120.172 319.499, 121.530 319.239 C 122.889 318.979, 124 318.594, 124 318.383 C 124 317.610, 120.101 318.027, 119.589 318.856 M 117.750 323.662 C 118.438 323.940, 119.563 323.940, 120.250 323.662 C 120.938 323.385, 120.375 323.158, 119 323.158 C 117.625 323.158, 117.063 323.385, 117.750 323.662 M 249 326.893 C 249 327.384, 249.739 328.069, 250.641 328.416 C 252.014 328.943, 252.076 328.796, 251.019 327.523 C 249.579 325.788, 249 325.607, 249 326.893 M 289 328.929 C 289 329.518, 288.298 330, 287.441 330 C 286.584 330, 286.174 330.472, 286.530 331.049 C 286.974 331.766, 287.568 331.774, 288.413 331.072 C 289.266 330.365, 290.012 330.412, 290.824 331.224 C 291.471 331.871, 292 332.053, 292 331.629 C 292 331.204, 291.325 330.182, 290.500 329.357 C 289.675 328.532, 289 328.339, 289 328.929 M 110 334.430 C 110 334.705, 110.900 335.411, 112 336 C 113.100 336.589, 114 336.845, 114 336.570 C 114 336.295, 113.100 335.589, 112 335 C 110.900 334.411, 110 334.155, 110 334.430 M 239.856 349.990 C 238.402 350.419, 232.777 350.807, 227.356 350.851 C 213.724 350.963, 208.330 351.673, 202.378 354.140 C 198.407 355.785, 197.362 356.668, 197.728 358.067 C 198.151 359.686, 193.687 366.973, 191.744 367.835 C 191.328 368.020, 191.245 368.587, 191.559 369.095 C 191.873 369.603, 191.201 371.201, 190.065 372.645 C 188.929 374.088, 188 376.334, 188 377.635 C 188 379.972, 186.479 380.933, 185.833 379.003 C 185.650 378.454, 184.175 379.144, 182.556 380.536 C 180.937 381.927, 179.025 382.840, 178.308 382.565 C 177.590 382.289, 175.989 382.479, 174.751 382.988 C 173.253 383.603, 178.251 383.899, 189.694 383.873 C 201.878 383.846, 207.003 383.494, 207.282 382.667 C 207.567 381.820, 208.131 381.877, 209.337 382.872 C 210.768 384.054, 211 384.019, 211 382.622 C 211 381.730, 211.563 380.993, 212.250 380.985 C 213.118 380.974, 213.061 380.692, 212.064 380.061 C 211.025 379.403, 210.920 378.786, 211.683 377.826 C 212.262 377.097, 213.301 373.439, 213.991 369.698 C 215.274 362.742, 216.852 360.088, 219.821 359.886 C 225.387 359.508, 227.287 358.868, 228.966 356.807 L 230.843 354.500 233.922 357.437 C 235.615 359.052, 237 359.826, 237 359.156 C 237 358.486, 236.325 357.678, 235.500 357.362 C 233.568 356.620, 233.555 355, 235.481 355 C 236.295 355, 237.228 356.062, 237.554 357.360 C 237.977 359.046, 238.768 359.654, 240.323 359.488 C 241.520 359.360, 243.118 359.198, 243.872 359.128 C 244.921 359.030, 244.976 358.676, 244.105 357.627 C 243.478 356.871, 243.234 355.554, 243.562 354.700 C 244.008 353.536, 243.664 353.275, 242.192 353.660 C 241.110 353.943, 239.887 353.627, 239.474 352.957 C 238.990 352.175, 239.217 351.908, 240.111 352.209 C 240.875 352.467, 242.905 352.093, 244.623 351.378 C 247.581 350.148, 249 350.382, 249 352.099 C 249 352.521, 248.100 353.151, 247 353.500 C 244.293 354.359, 244.476 355.470, 247.352 355.635 C 249.290 355.746, 249.717 355.264, 249.784 352.885 C 249.829 351.298, 249.559 349.970, 249.183 349.933 C 248.807 349.895, 247.150 349.718, 245.500 349.537 C 243.850 349.357, 241.310 349.561, 239.856 349.990 M 289.157 396.997 C 284.674 398.054, 283.600 399.331, 283.600 403.603 C 283.600 406.653, 284.399 407.957, 288.800 412.089 C 294.065 417.033, 295.289 420.311, 292.800 422.800 C 290.577 425.023, 286.069 424.246, 284.781 421.418 C 283.606 418.840, 283.603 418.840, 282.787 421.047 C 281.591 424.280, 283.566 426, 288.476 426 C 293.949 426, 298 422.553, 298 417.897 C 298 415.333, 296.910 413.643, 292.500 409.372 C 286.734 403.787, 285.693 400.770, 288.934 399.035 C 291.715 397.547, 292.670 397.730, 294.961 400.189 L 297 402.377 297 399.689 C 297 398.210, 296.587 397, 296.082 397 C 295.577 397, 294.564 396.822, 293.832 396.604 C 293.099 396.387, 290.996 396.563, 289.157 396.997 M 338.728 396.605 C 338.328 397.006, 337.986 403.221, 337.968 410.417 C 337.930 425.990, 337.502 425.873, 330.911 408.493 C 328.514 402.172, 326.049 397, 325.433 397 C 324.817 397, 322.105 402.962, 319.407 410.250 C 314.653 423.087, 314.404 423.509, 311.415 423.801 C 306.394 424.291, 305.789 422.590, 306.165 409.044 L 306.500 396.997 303.815 396.999 L 301.130 397 301.677 405.750 C 301.977 410.563, 301.794 416.808, 301.270 419.629 L 300.317 424.757 307.832 425.240 C 317.344 425.850, 319 425.419, 319 422.334 C 319 420.996, 319.700 418.546, 320.556 416.891 C 321.862 414.367, 322.623 413.931, 325.277 414.191 C 328.079 414.465, 328.674 415.102, 330.464 419.750 L 332.486 425 338.493 424.921 C 341.797 424.878, 343.938 424.615, 343.250 424.338 C 342.375 423.985, 342 421.030, 342 414.494 L 342 405.156 352.423 415.821 C 358.156 421.687, 363.070 426.263, 363.343 425.990 C 363.617 425.717, 363.989 419.082, 364.170 411.245 L 364.500 396.997 361.820 396.999 C 359.273 397, 359.186 397.161, 360.070 400.243 C 360.581 402.027, 360.979 406.865, 360.952 410.993 L 360.905 418.500 350.181 407.188 C 344.283 400.967, 339.129 396.204, 338.728 396.605 M 120.500 410.900 L 120.500 424.998 123.500 425.001 L 126.500 425.004 126.161 419.002 C 125.704 410.896, 127.123 411.112, 134.368 420.250 C 138.068 424.917, 138.233 425, 143.817 425.002 L 149.500 425.003 149.500 417.752 L 149.500 410.500 156.500 410.500 L 163.500 410.500 163.808 414.210 C 163.977 416.251, 163.676 419.513, 163.139 421.460 L 162.161 425 166.203 425 C 169.623 425, 170.059 424.777, 169.040 423.548 C 168.199 422.535, 167.935 418.305, 168.167 409.547 L 168.500 396.997 165.741 396.999 C 163.019 397, 162.985 397.077, 163.241 402.750 L 163.500 408.500 156.250 408.794 L 149 409.088 149 403.044 C 149 397.118, 148.947 397, 146.250 396.999 L 143.500 396.997 143.829 409.999 C 144.037 418.172, 143.790 423, 143.164 423 C 141.920 423, 134 414.088, 134 412.688 C 134 412.121, 134.670 410.918, 135.488 410.013 C 138.072 407.158, 138.390 402.703, 136.203 400.002 C 134.546 397.955, 133.173 397.519, 127.370 397.190 L 120.500 396.801 120.500 410.900 M 177.841 398.524 C 173.799 400.720, 171 405.994, 171 411.418 C 171 417.617, 173.179 421.540, 177.981 423.990 C 188.943 429.582, 201.010 422.767, 200.982 411 C 200.968 405.329, 199.381 402.173, 195.088 399.280 C 191.091 396.586, 182.132 396.194, 177.841 398.524 M 203.500 410.958 L 203.500 424.916 208.657 425.562 C 216.392 426.530, 221.727 425.277, 225.811 421.534 C 228.969 418.640, 229.399 417.633, 229.791 412.211 C 230.573 401.402, 225.217 397.001, 211.282 396.999 L 203.500 396.999 203.500 410.958 M 232.500 410.884 L 232.500 424.770 237.848 425.323 C 240.790 425.627, 244.165 425.514, 245.348 425.073 C 246.532 424.631, 248.400 424.627, 249.500 425.064 C 253.138 426.511, 257.686 426.035, 260.365 423.927 C 262.417 422.313, 263 420.981, 263 417.905 C 263 414.428, 262.339 413.315, 257.483 408.612 C 252.678 403.958, 252.078 402.960, 252.841 400.884 C 254.017 397.680, 258.429 397.112, 260.193 399.938 C 261.922 402.706, 263 402.538, 263 399.500 C 263 397.182, 262.652 397, 258.223 397 C 251.989 397, 249 399.075, 249 403.403 C 249 406.046, 250.081 407.790, 254.500 412.281 C 260.269 418.143, 260.827 419.486, 258.701 422.395 C 256.870 424.899, 251.803 424.190, 250.513 421.250 C 249.463 418.856, 248 418.225, 248 420.167 C 248 420.808, 247.703 421.036, 247.340 420.673 C 246.977 420.310, 246.033 420.936, 245.243 422.063 C 244.277 423.442, 242.937 424.014, 241.153 423.807 C 238.635 423.516, 238.485 423.181, 238.202 417.250 C 237.910 411.122, 237.955 411, 240.484 411 C 241.902 411, 243.322 411.675, 243.638 412.500 C 244.605 415.018, 246 414.173, 246 411.070 C 246 408.352, 245.801 408.196, 243.250 408.916 C 238.884 410.148, 238 409.306, 238 403.917 C 238 399.161, 238.095 399, 240.893 399 C 242.709 399, 244.052 399.651, 244.500 400.750 C 245.156 402.356, 245.282 402.336, 246.037 400.500 C 247.428 397.118, 247.215 397, 239.750 396.999 L 232.500 396.999 232.500 410.884 M 273.808 410.154 C 274.042 420.168, 273.803 423.509, 272.808 424.140 C 271.991 424.658, 273.046 424.975, 275.613 424.985 L 279.727 425 278.752 419.750 C 278.216 416.863, 278.023 410.563, 278.323 405.750 L 278.870 397 276.185 396.998 L 273.500 396.996 273.808 410.154 M 369.832 408.912 C 370.033 416.150, 369.742 421.614, 369.089 422.834 C 368.077 424.724, 368.401 424.884, 374.610 425.549 C 388.082 426.991, 396 421.606, 396 411 C 396 401.518, 389.941 397.061, 377 397.021 L 369.500 396.997 369.832 408.912 M 127.243 398.850 C 126.651 399.215, 126.041 402.211, 125.886 405.507 C 125.625 411.061, 125.769 411.524, 127.857 411.827 C 131.104 412.298, 133 410.265, 133 406.312 C 133 400.871, 130.085 397.093, 127.243 398.850 M 180.277 399.973 C 177.304 401.785, 176.817 402.736, 175.540 409.225 C 174.858 412.688, 177.272 419.051, 180.203 421.517 C 184.378 425.030, 189.291 424.862, 193.077 421.077 C 195.615 418.539, 196 417.413, 196 412.527 C 196 400.657, 188.706 394.833, 180.277 399.973 M 74 400.059 C 74 400.641, 74.450 400.840, 75 400.500 C 75.550 400.160, 76 399.684, 76 399.441 C 76 399.198, 75.550 399, 75 399 C 74.450 399, 74 399.477, 74 400.059 M 208.750 399.570 C 207.651 400.688, 207.834 418.433, 208.975 421.435 C 209.820 423.658, 210.544 424, 214.399 424 C 225.450 424, 230.011 409.996, 221.549 402.046 C 219.024 399.674, 210.305 397.987, 208.750 399.570 M 374.667 399.667 C 373.442 400.892, 373.917 421.517, 375.200 422.800 C 377.125 424.725, 384.401 424.259, 387.236 422.029 C 392.912 417.564, 392.511 406.017, 386.521 401.448 C 383.423 399.086, 376.316 398.018, 374.667 399.667 M 438.079 401.583 C 438.127 402.748, 438.364 402.985, 438.683 402.188 C 438.972 401.466, 438.936 400.603, 438.604 400.271 C 438.272 399.939, 438.036 400.529, 438.079 401.583 M 84.567 406.433 C 83.705 407.845, 82.315 410.125, 81.477 411.500 L 79.954 414 86.541 414 L 93.128 414 90.848 409.943 C 87.506 403.997, 86.423 403.392, 84.567 406.433 M 421.542 408.338 C 420.144 410.724, 419 412.974, 419 413.338 C 419 413.702, 421.726 414, 425.058 414 L 431.115 414 428.308 409.001 C 426.763 406.252, 425.181 404.002, 424.792 404.001 C 424.403 404, 422.940 405.952, 421.542 408.338 M 323.613 407.407 C 323.280 408.731, 322.733 410.531, 322.397 411.407 C 321.937 412.607, 322.414 413, 324.334 413 C 327.700 413, 328.092 412.123, 326.459 408.240 C 324.830 404.365, 324.407 404.242, 323.613 407.407 M 445.813 412.683 C 446.534 412.972, 447.397 412.936, 447.729 412.604 C 448.061 412.272, 447.471 412.036, 446.417 412.079 C 445.252 412.127, 445.015 412.364, 445.813 412.683 M 57.216 422.184 C 56.547 422.853, 56 423.992, 56 424.716 C 56 425.778, 61.342 425.980, 83.750 425.766 C 110.745 425.507, 111.500 425.446, 111.500 423.500 C 111.500 421.557, 110.745 421.492, 84.966 421.234 C 65.167 421.036, 58.123 421.277, 57.216 422.184 M 399.380 422.452 C 399.074 423.251, 399.114 424.376, 399.470 424.952 C 400.148 426.049, 456 426.525, 456 425.434 C 456 425.123, 455.534 423.998, 454.965 422.934 C 453.981 421.095, 452.600 421, 426.933 421 C 404.255 421, 399.848 421.232, 399.380 422.452\" fill=\"currentColor\" fill-rule=\"evenodd\"/>\n</svg>\n",
|
|
10
10
|
prtsEmblem: "data:image/png;base64,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",
|
|
@@ -21,8 +21,12 @@ const CONVERSATION_SCALE_FOCUS_CONTRAST_MIN = 0
|
|
|
21
21
|
const CONVERSATION_SCALE_FOCUS_CONTRAST_MAX = 100
|
|
22
22
|
const CONVERSATION_SCALE_FOCUS_CONTRAST_STEP = 10
|
|
23
23
|
const CONVERSATION_SCALE_FOCUS_CONTRAST_DEFAULT = 70
|
|
24
|
+
const PARTICLE_TRAVERSAL_SPEED_MIN = 0
|
|
25
|
+
const PARTICLE_TRAVERSAL_SPEED_MAX = 2
|
|
26
|
+
const PARTICLE_TRAVERSAL_SPEED_STEP = 0.25
|
|
27
|
+
const PARTICLE_TRAVERSAL_SPEED_DEFAULT = 1
|
|
24
28
|
const DEFAULT_PREFERENCES = Object.freeze({
|
|
25
|
-
version:
|
|
29
|
+
version: 8,
|
|
26
30
|
enabled: false,
|
|
27
31
|
preset: 'standard-tactical',
|
|
28
32
|
texture: 'full',
|
|
@@ -31,7 +35,9 @@ motion: 'system',
|
|
|
31
35
|
bootAnimation: true,
|
|
32
36
|
conversationParticleDensity: 'sparse',
|
|
33
37
|
heroParticleDensity: 'light',
|
|
38
|
+
particleTraversalSpeed: PARTICLE_TRAVERSAL_SPEED_DEFAULT,
|
|
34
39
|
particlePattern: 'orthogonal',
|
|
40
|
+
railDefaultHidden: false,
|
|
35
41
|
conversationScaleMaxDistance: CONVERSATION_SCALE_DISTANCE_DEFAULT,
|
|
36
42
|
conversationScaleFocusContrast: CONVERSATION_SCALE_FOCUS_CONTRAST_DEFAULT,
|
|
37
43
|
})
|
|
@@ -68,10 +74,10 @@ precise: Object.freeze({ conversationParticleDensity: 'dense', heroParticleDensi
|
|
|
68
74
|
})
|
|
69
75
|
const PREFERENCE_GROUPS = Object.freeze({
|
|
70
76
|
background: Object.freeze(['texture']),
|
|
71
|
-
particles: Object.freeze(['conversationParticleDensity', 'heroParticleDensity']),
|
|
77
|
+
particles: Object.freeze(['conversationParticleDensity', 'heroParticleDensity', 'particleTraversalSpeed']),
|
|
72
78
|
material: Object.freeze(['glass']),
|
|
73
79
|
accessibility: Object.freeze(['motion', 'bootAnimation']),
|
|
74
|
-
navigation: Object.freeze(['conversationScaleMaxDistance', 'conversationScaleFocusContrast']),
|
|
80
|
+
navigation: Object.freeze(['railDefaultHidden', 'conversationScaleMaxDistance', 'conversationScaleFocusContrast']),
|
|
75
81
|
})
|
|
76
82
|
const TEXTURES = new Set(['off', 'restrained', 'full'])
|
|
77
83
|
const GLASS_STRENGTHS = new Set(['off', 'soft', 'standard', 'clear'])
|
|
@@ -114,6 +120,12 @@ if (!Number.isFinite(numeric)) return fallback
|
|
|
114
120
|
const clamped = Math.min(CONVERSATION_SCALE_FOCUS_CONTRAST_MAX, Math.max(CONVERSATION_SCALE_FOCUS_CONTRAST_MIN, numeric))
|
|
115
121
|
return Math.round(clamped / CONVERSATION_SCALE_FOCUS_CONTRAST_STEP) * CONVERSATION_SCALE_FOCUS_CONTRAST_STEP
|
|
116
122
|
}
|
|
123
|
+
function particleTraversalSpeedOr(value, fallback) {
|
|
124
|
+
const numeric = Number(value)
|
|
125
|
+
if (!Number.isFinite(numeric)) return fallback
|
|
126
|
+
const clamped = Math.min(PARTICLE_TRAVERSAL_SPEED_MAX, Math.max(PARTICLE_TRAVERSAL_SPEED_MIN, numeric))
|
|
127
|
+
return Math.round(clamped / PARTICLE_TRAVERSAL_SPEED_STEP) * PARTICLE_TRAVERSAL_SPEED_STEP
|
|
128
|
+
}
|
|
117
129
|
function normalizeGlass(input) {
|
|
118
130
|
if (input.glassEnabled === false || input.glass === 'off') return 'off'
|
|
119
131
|
if (input.glass === 'liquid') return 'clear'
|
|
@@ -139,7 +151,7 @@ const migratedPreset = input.version === 1 && !Object.hasOwn(input, 'preset')
|
|
|
139
151
|
const particlePreset = VISUAL_PRESETS[input.preset] ?? DEFAULT_PREFERENCES
|
|
140
152
|
const legacyDensities = legacyParticleDensities(input)
|
|
141
153
|
const normalized = {
|
|
142
|
-
version:
|
|
154
|
+
version: 8,
|
|
143
155
|
enabled: booleanOr(input.enabled, DEFAULT_PREFERENCES.enabled),
|
|
144
156
|
preset: enumOr(migratedPreset, PRESETS, DEFAULT_PREFERENCES.preset),
|
|
145
157
|
texture: enumOr(input.texture, TEXTURES, DEFAULT_PREFERENCES.texture),
|
|
@@ -148,7 +160,12 @@ motion: input.motion === 'full' ? 'system' : enumOr(input.motion, MOTIONS, DEFAU
|
|
|
148
160
|
bootAnimation: booleanOr(input.bootAnimation, DEFAULT_PREFERENCES.bootAnimation),
|
|
149
161
|
conversationParticleDensity: enumOr(legacyDensities.conversation, PARTICLE_DENSITIES, particlePreset.conversationParticleDensity),
|
|
150
162
|
heroParticleDensity: enumOr(legacyDensities.hero, PARTICLE_DENSITIES, particlePreset.heroParticleDensity),
|
|
163
|
+
particleTraversalSpeed: particleTraversalSpeedOr(
|
|
164
|
+
input.particleTraversalSpeed,
|
|
165
|
+
DEFAULT_PREFERENCES.particleTraversalSpeed,
|
|
166
|
+
),
|
|
151
167
|
particlePattern: 'orthogonal',
|
|
168
|
+
railDefaultHidden: booleanOr(input.railDefaultHidden, DEFAULT_PREFERENCES.railDefaultHidden),
|
|
152
169
|
conversationScaleMaxDistance: scaleDistanceOr(
|
|
153
170
|
input.conversationScaleMaxDistance,
|
|
154
171
|
DEFAULT_PREFERENCES.conversationScaleMaxDistance,
|
|
@@ -198,7 +215,7 @@ try {
|
|
|
198
215
|
const raw = storage?.getItem(PRTS_STORAGE_KEY)
|
|
199
216
|
if (raw === null || raw === undefined) return { ...DEFAULT_PREFERENCES }
|
|
200
217
|
const parsed = JSON.parse(raw)
|
|
201
|
-
if (![1, 2, 3, 4, 5, 6].includes(parsed?.version)) return { ...DEFAULT_PREFERENCES }
|
|
218
|
+
if (![1, 2, 3, 4, 5, 6, 7, 8].includes(parsed?.version)) return { ...DEFAULT_PREFERENCES }
|
|
202
219
|
return normalizePreferences(parsed)
|
|
203
220
|
} catch {
|
|
204
221
|
return { ...DEFAULT_PREFERENCES }
|
|
@@ -1206,7 +1223,7 @@ const missingEmblems = requestedEmblems.filter(entry => !suppliedMasks.has(entry
|
|
|
1206
1223
|
const rhodesIndex = Math.max(0, emblemSequence.findIndex(entry => entry.key === 'rhodes-island'))
|
|
1207
1224
|
const suppliedHeroMask = normalizeEmblemMasks(heroEmblemMask ? [heroEmblemMask] : [], window).get('rhodes-island-hero')
|
|
1208
1225
|
const empty = { mounted: false, hero: false, side: -1, transition: null, anchor: { horizontalProgress: 0, verticalProgress: 0 }, phase: 'error', error: '徽记资源异常' }
|
|
1209
|
-
if (!document || !window) return { update() {}, inspect: () => empty, dispose() {} }
|
|
1226
|
+
if (!document || !window) return { update() {}, setSchemeTransitionActive() {}, inspect: () => empty, dispose() {} }
|
|
1210
1227
|
let preferences = {}
|
|
1211
1228
|
let operation
|
|
1212
1229
|
let scroller
|
|
@@ -1257,6 +1274,7 @@ let dpr = 1
|
|
|
1257
1274
|
let side = -1
|
|
1258
1275
|
let segment = 0
|
|
1259
1276
|
let transition
|
|
1277
|
+
let traversalOffset = 0
|
|
1260
1278
|
let pendingSegment
|
|
1261
1279
|
let transitionStartedAt
|
|
1262
1280
|
let densityTransition
|
|
@@ -1273,6 +1291,7 @@ let targetPrewarmHandle
|
|
|
1273
1291
|
let targetPrewarmQueue = []
|
|
1274
1292
|
let pauseStartedAt
|
|
1275
1293
|
let hydrationPaused = false
|
|
1294
|
+
let schemeTransitionPaused = false
|
|
1276
1295
|
let hydrationTimer
|
|
1277
1296
|
let hydrationFrame
|
|
1278
1297
|
let hydrationStableFrames = 0
|
|
@@ -1305,7 +1324,7 @@ const activeDensity = () => heroActive
|
|
|
1305
1324
|
: preferences.conversationParticleDensity
|
|
1306
1325
|
const densityProfile = density => PARTICLE_DENSITY_PROFILES[density] ?? PARTICLE_DENSITY_PROFILES.standard
|
|
1307
1326
|
const particleRadius = density => densityProfile(density ?? activeDensity()).radius
|
|
1308
|
-
const canRenderFrame = () => documentVisible && canvasVisible && !hydrationPaused && !resizing
|
|
1327
|
+
const canRenderFrame = () => !disposed && documentVisible && canvasVisible && !hydrationPaused && !schemeTransitionPaused && !resizing
|
|
1309
1328
|
const layoutWidth = () => width
|
|
1310
1329
|
const layoutHeight = () => height
|
|
1311
1330
|
const layoutShiftX = () => 0
|
|
@@ -1416,11 +1435,44 @@ size: transition.fromSize + (logoSize() - transition.fromSize) * progress,
|
|
|
1416
1435
|
if (heroActive) return { center: heroCenter(), size: heroLogoSize() }
|
|
1417
1436
|
return { center: centerFromAnchor(inspectAnchor()), size: logoSize() }
|
|
1418
1437
|
}
|
|
1438
|
+
function particleTraversalSpeed(value = preferences) {
|
|
1439
|
+
const numeric = Number(value?.particleTraversalSpeed)
|
|
1440
|
+
return Number.isFinite(numeric) ? clamp(numeric, 0, 2) : 1
|
|
1441
|
+
}
|
|
1442
|
+
function currentScrollTop() {
|
|
1443
|
+
return Number(scroller?.scrollTop) || 0
|
|
1444
|
+
}
|
|
1445
|
+
function traversalViewport() {
|
|
1446
|
+
return Math.max(1, Number(scroller?.clientHeight) || height)
|
|
1447
|
+
}
|
|
1448
|
+
function traversalCoordinate(value = preferences) {
|
|
1449
|
+
return traversalOffset + currentScrollTop() * particleTraversalSpeed(value) / traversalViewport()
|
|
1450
|
+
}
|
|
1419
1451
|
function scrollProgress() {
|
|
1420
1452
|
if (!scroller) return 0
|
|
1421
|
-
const
|
|
1422
|
-
|
|
1423
|
-
|
|
1453
|
+
const coordinate = traversalCoordinate()
|
|
1454
|
+
return coordinate - Math.floor(coordinate)
|
|
1455
|
+
}
|
|
1456
|
+
function restoreTraversalFromScroll() {
|
|
1457
|
+
traversalOffset = 0
|
|
1458
|
+
const coordinate = traversalCoordinate()
|
|
1459
|
+
segment = Math.floor(coordinate)
|
|
1460
|
+
side = sideForSegment(segment)
|
|
1461
|
+
pendingSegment = undefined
|
|
1462
|
+
transition = undefined
|
|
1463
|
+
transitionStartedAt = undefined
|
|
1464
|
+
}
|
|
1465
|
+
function reanchorTraversal(coordinate = traversalCoordinate()) {
|
|
1466
|
+
if (transition) {
|
|
1467
|
+
const targetSegment = transition.targetSegment
|
|
1468
|
+
side = sideForSegment(targetSegment)
|
|
1469
|
+
transition = undefined
|
|
1470
|
+
transitionStartedAt = undefined
|
|
1471
|
+
commitTransitionTargets(targetSegment, true)
|
|
1472
|
+
}
|
|
1473
|
+
pendingSegment = undefined
|
|
1474
|
+
traversalOffset = coordinate - currentScrollTop() * particleTraversalSpeed() / traversalViewport()
|
|
1475
|
+
if (particles.length) snapParticlesToCurrentLayout()
|
|
1424
1476
|
}
|
|
1425
1477
|
function anchorFor(sideValue, verticalProgress) {
|
|
1426
1478
|
if (phoneStatic()) return { horizontalProgress: 0.5, verticalProgress: 0.52 }
|
|
@@ -2183,6 +2235,7 @@ pendingSegment = targetSegment
|
|
|
2183
2235
|
return
|
|
2184
2236
|
}
|
|
2185
2237
|
const targetSide = sideForSegment(targetSegment)
|
|
2238
|
+
const direction = targetSegment > segment ? 1 : -1
|
|
2186
2239
|
if (targetSide === side || motionReduced() || phoneStatic()) {
|
|
2187
2240
|
side = targetSide
|
|
2188
2241
|
transition = undefined
|
|
@@ -2199,7 +2252,7 @@ transition = {
|
|
|
2199
2252
|
...population,
|
|
2200
2253
|
fromSide: side,
|
|
2201
2254
|
toSide: targetSide,
|
|
2202
|
-
direction
|
|
2255
|
+
direction,
|
|
2203
2256
|
targetSegment,
|
|
2204
2257
|
progress: 0,
|
|
2205
2258
|
}
|
|
@@ -2207,9 +2260,26 @@ transitionStartedAt = undefined
|
|
|
2207
2260
|
pointerActive = false
|
|
2208
2261
|
scheduleFrame()
|
|
2209
2262
|
}
|
|
2263
|
+
function retargetTransition(targetSegment) {
|
|
2264
|
+
if (!transition || targetSegment === transition.targetSegment) return
|
|
2265
|
+
const population = prepareTransitionTargets(targetSegment)
|
|
2266
|
+
if (!population.toCount) {
|
|
2267
|
+
reportState({ phase: 'error', error: '徽记资源异常' })
|
|
2268
|
+
return
|
|
2269
|
+
}
|
|
2270
|
+
transition = {
|
|
2271
|
+
...transition,
|
|
2272
|
+
...population,
|
|
2273
|
+
toSide: sideForSegment(targetSegment),
|
|
2274
|
+
direction: targetSegment >= segment ? 1 : -1,
|
|
2275
|
+
targetSegment,
|
|
2276
|
+
}
|
|
2277
|
+
pendingSegment = undefined
|
|
2278
|
+
}
|
|
2210
2279
|
function resetTraversal() {
|
|
2211
2280
|
side = -1
|
|
2212
2281
|
segment = 0
|
|
2282
|
+
traversalOffset = -currentScrollTop() * particleTraversalSpeed() / traversalViewport()
|
|
2213
2283
|
pendingSegment = undefined
|
|
2214
2284
|
queuedDensityCount = undefined
|
|
2215
2285
|
queuedTargetRefresh = false
|
|
@@ -2237,6 +2307,9 @@ const fromSize = heroLogoSize()
|
|
|
2237
2307
|
heroMarker = undefined
|
|
2238
2308
|
heroActive = false
|
|
2239
2309
|
scroller?.removeAttribute('data-prts-hero-active')
|
|
2310
|
+
side = -1
|
|
2311
|
+
segment = 0
|
|
2312
|
+
traversalOffset = -currentScrollTop() * particleTraversalSpeed() / traversalViewport()
|
|
2240
2313
|
pendingSegment = undefined
|
|
2241
2314
|
queuedDensityCount = undefined
|
|
2242
2315
|
queuedTargetRefresh = false
|
|
@@ -2280,9 +2353,8 @@ if (heroActive) {
|
|
|
2280
2353
|
scheduleFrame()
|
|
2281
2354
|
return
|
|
2282
2355
|
}
|
|
2283
|
-
const
|
|
2284
|
-
|
|
2285
|
-
if (transition) pendingSegment = desiredSegment
|
|
2356
|
+
const desiredSegment = Math.floor(traversalCoordinate())
|
|
2357
|
+
if (transition) retargetTransition(desiredSegment)
|
|
2286
2358
|
else if (desiredSegment !== segment) startTransition(desiredSegment)
|
|
2287
2359
|
scheduleFrame()
|
|
2288
2360
|
}
|
|
@@ -2442,6 +2514,7 @@ if (typeof window.CanvasRenderingContext2D === 'function') context = canvas.getC
|
|
|
2442
2514
|
targetCache.clear()
|
|
2443
2515
|
initializeFieldSize()
|
|
2444
2516
|
syncHeroState()
|
|
2517
|
+
if (!heroActive) restoreTraversalFromScroll()
|
|
2445
2518
|
if (!particles.length && maskRecords.length) buildParticles()
|
|
2446
2519
|
if (context && particles.length) {
|
|
2447
2520
|
syncCanvasBackingStore()
|
|
@@ -2502,8 +2575,19 @@ mediaQuery?.addEventListener?.('change', mediaListener)
|
|
|
2502
2575
|
if (!mediaQuery?.addEventListener) mediaQuery?.addListener?.(mediaListener)
|
|
2503
2576
|
document.addEventListener?.('visibilitychange', onVisibilityChange)
|
|
2504
2577
|
return {
|
|
2578
|
+
setSchemeTransitionActive(active) {
|
|
2579
|
+
const next = Boolean(active)
|
|
2580
|
+
if (schemeTransitionPaused === next) return
|
|
2581
|
+
schemeTransitionPaused = next
|
|
2582
|
+
updateFrameGate()
|
|
2583
|
+
},
|
|
2505
2584
|
update(nextPreferences = {}) {
|
|
2506
2585
|
const previousPreferences = preferences
|
|
2586
|
+
const traversalSpeedChanged = previousPreferences.particleTraversalSpeed !== undefined
|
|
2587
|
+
&& particleTraversalSpeed(previousPreferences) !== particleTraversalSpeed(nextPreferences)
|
|
2588
|
+
const preservedTraversalCoordinate = traversalSpeedChanged && scroller && !heroActive
|
|
2589
|
+
? traversalCoordinate(previousPreferences)
|
|
2590
|
+
: undefined
|
|
2507
2591
|
preferences = nextPreferences
|
|
2508
2592
|
disposed = false
|
|
2509
2593
|
if (!preferences.enabled) {
|
|
@@ -2521,6 +2605,7 @@ const previousActiveDensity = heroActive
|
|
|
2521
2605
|
const activeDensityChanged = previousActiveDensity !== undefined && previousActiveDensity !== activeDensity()
|
|
2522
2606
|
reportState({ requestedPattern: 'orthogonal' })
|
|
2523
2607
|
if (particles.length && activeDensityChanged) scheduleDensityReassembly(targetParticleCount(), true)
|
|
2608
|
+
if (preservedTraversalCoordinate !== undefined && scroller && !heroActive) reanchorTraversal(preservedTraversalCoordinate)
|
|
2524
2609
|
if (!mutationObserver && window.MutationObserver && document.body) {
|
|
2525
2610
|
const observationRoot = document.querySelector('[data-slot="root"]')
|
|
2526
2611
|
?? document.querySelector('[data-prts-region="frame"]')
|
|
@@ -2558,6 +2643,10 @@ side,
|
|
|
2558
2643
|
emblemKey: (heroActive || transition?.fromHero ? heroEmblem() : emblemForSegment(segment))?.key,
|
|
2559
2644
|
nextEmblemKey: transition ? emblemForSegment(transition.targetSegment)?.key : null,
|
|
2560
2645
|
segment,
|
|
2646
|
+
traversalSpeed: particleTraversalSpeed(),
|
|
2647
|
+
traversalOffset,
|
|
2648
|
+
traversalCoordinate: traversalCoordinate(),
|
|
2649
|
+
traversalProgress: scrollProgress(),
|
|
2561
2650
|
transition: transition ? {
|
|
2562
2651
|
fromSide: transition.fromSide,
|
|
2563
2652
|
toSide: transition.toSide,
|
|
@@ -2574,6 +2663,7 @@ density: activeDensity() || 'standard',
|
|
|
2574
2663
|
firstFrameReady: canvas?.hasAttribute('data-prts-particle-ready') === true,
|
|
2575
2664
|
hydrationPaused,
|
|
2576
2665
|
sleeping: Boolean(context && particles.length && frame === undefined && canRenderFrame() && !motionReduced() && !phoneStatic()),
|
|
2666
|
+
schemeTransitionPaused,
|
|
2577
2667
|
pointer: {
|
|
2578
2668
|
active: pointerActive,
|
|
2579
2669
|
clientX: pointerClientX,
|
|
@@ -2902,6 +2992,7 @@ const PREVIEW_TOUCH_DURATION = 1200
|
|
|
2902
2992
|
const SNAP_DELAY = 110
|
|
2903
2993
|
const TOUCH_WAVE_DURATION = 620
|
|
2904
2994
|
const HISTORY_PAGE_SETTLE_LIMIT = 4000
|
|
2995
|
+
const GEOMETRY_SETTLE_FRAME_LIMIT = 24
|
|
2905
2996
|
let scaleInstanceSeed = 0
|
|
2906
2997
|
function clamp(value, minimum, maximum) {
|
|
2907
2998
|
return Math.min(maximum, Math.max(minimum, value))
|
|
@@ -3520,6 +3611,9 @@ let focusContrast = CONVERSATION_SCALE_FOCUS_CONTRAST_DEFAULT
|
|
|
3520
3611
|
let scaleLengths = resolveConversationScaleLengths(focusContrast)
|
|
3521
3612
|
let contentLeft
|
|
3522
3613
|
let geometryDirty = true
|
|
3614
|
+
let geometrySettleFrame
|
|
3615
|
+
let geometrySettleFramesRemaining = 0
|
|
3616
|
+
let geometrySettleSignature
|
|
3523
3617
|
let observedOperationWidth
|
|
3524
3618
|
let observedOperationHeight
|
|
3525
3619
|
let started = false
|
|
@@ -3540,6 +3634,58 @@ else window?.clearTimeout?.(id)
|
|
|
3540
3634
|
const currentTime = timestamp => Number.isFinite(timestamp)
|
|
3541
3635
|
? timestamp
|
|
3542
3636
|
: window?.performance?.now?.() ?? Date.now()
|
|
3637
|
+
function currentGeometrySignature() {
|
|
3638
|
+
if (!operation || !scroller) return undefined
|
|
3639
|
+
const operationBox = operation.getBoundingClientRect?.()
|
|
3640
|
+
const scrollerBox = scroller.getBoundingClientRect?.()
|
|
3641
|
+
const composerBox = composer?.getBoundingClientRect?.()
|
|
3642
|
+
if (!operationBox || !scrollerBox) return undefined
|
|
3643
|
+
const values = [
|
|
3644
|
+
operationBox.width,
|
|
3645
|
+
operationBox.height,
|
|
3646
|
+
scrollerBox.top - operationBox.top,
|
|
3647
|
+
scrollerBox.bottom - operationBox.top,
|
|
3648
|
+
scrollerBox.left - operationBox.left,
|
|
3649
|
+
scrollerBox.right - operationBox.left,
|
|
3650
|
+
composerBox ? composerBox.top - operationBox.top : -1,
|
|
3651
|
+
composerBox ? composerBox.bottom - operationBox.top : -1,
|
|
3652
|
+
composerBox ? composerBox.left - operationBox.left : -1,
|
|
3653
|
+
composerBox ? composerBox.right - operationBox.left : -1,
|
|
3654
|
+
]
|
|
3655
|
+
if (!values.every(Number.isFinite)) return undefined
|
|
3656
|
+
return values.map(value => Number(value.toFixed(2))).join(':')
|
|
3657
|
+
}
|
|
3658
|
+
function sampleGeometryStabilization() {
|
|
3659
|
+
geometrySettleFrame = undefined
|
|
3660
|
+
if (!started || failed || geometrySettleFramesRemaining <= 0) return
|
|
3661
|
+
geometrySettleFramesRemaining -= 1
|
|
3662
|
+
const signature = currentGeometrySignature()
|
|
3663
|
+
if (signature !== undefined && signature !== geometrySettleSignature) {
|
|
3664
|
+
geometrySettleSignature = signature
|
|
3665
|
+
geometryDirty = true
|
|
3666
|
+
obstructionDirty = true
|
|
3667
|
+
schedule()
|
|
3668
|
+
}
|
|
3669
|
+
if (geometrySettleFramesRemaining > 0) {
|
|
3670
|
+
geometrySettleFrame = requestFrame(sampleGeometryStabilization)
|
|
3671
|
+
}
|
|
3672
|
+
}
|
|
3673
|
+
function requestGeometryStabilization() {
|
|
3674
|
+
if (!started || failed) return
|
|
3675
|
+
geometrySettleFramesRemaining = GEOMETRY_SETTLE_FRAME_LIMIT
|
|
3676
|
+
if (geometrySettleFrame === undefined) {
|
|
3677
|
+
geometrySettleFrame = requestFrame(sampleGeometryStabilization)
|
|
3678
|
+
}
|
|
3679
|
+
}
|
|
3680
|
+
function stopGeometryStabilization() {
|
|
3681
|
+
cancelFrame(geometrySettleFrame)
|
|
3682
|
+
geometrySettleFrame = undefined
|
|
3683
|
+
geometrySettleFramesRemaining = 0
|
|
3684
|
+
geometrySettleSignature = undefined
|
|
3685
|
+
}
|
|
3686
|
+
function onHostGeometryChange() {
|
|
3687
|
+
requestGeometryStabilization()
|
|
3688
|
+
}
|
|
3543
3689
|
function reducedMotion() {
|
|
3544
3690
|
return window?.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches
|
|
3545
3691
|
|| document.documentElement.dataset.prtsMotion === 'reduced'
|
|
@@ -3845,9 +3991,11 @@ historyHintHovered = false
|
|
|
3845
3991
|
setScaleResizeState(resizeActive)
|
|
3846
3992
|
cancelJump()
|
|
3847
3993
|
resetWave()
|
|
3994
|
+
requestGeometryStabilization()
|
|
3848
3995
|
return true
|
|
3849
3996
|
}
|
|
3850
3997
|
function disconnectRoots() {
|
|
3998
|
+
stopGeometryStabilization()
|
|
3851
3999
|
clearTimers()
|
|
3852
4000
|
hidePreview()
|
|
3853
4001
|
disconnectPreviewObserver()
|
|
@@ -4801,10 +4949,15 @@ start() {
|
|
|
4801
4949
|
if (started || !document) return
|
|
4802
4950
|
started = true
|
|
4803
4951
|
failed = false
|
|
4952
|
+
window?.addEventListener?.('resize', onHostGeometryChange)
|
|
4953
|
+
window?.addEventListener?.('orientationchange', onHostGeometryChange)
|
|
4954
|
+
window?.addEventListener?.('pageshow', onHostGeometryChange)
|
|
4955
|
+
window?.visualViewport?.addEventListener?.('resize', onHostGeometryChange)
|
|
4804
4956
|
const ResizeObserver = window?.ResizeObserver
|
|
4805
4957
|
if (typeof ResizeObserver === 'function') {
|
|
4806
4958
|
resizeObserver = new ResizeObserver((entries = []) => {
|
|
4807
4959
|
geometryDirty = true
|
|
4960
|
+
requestGeometryStabilization()
|
|
4808
4961
|
const operationEntry = entries.find(entry => entry.target === operation)
|
|
4809
4962
|
const width = Number(operationEntry?.contentRect?.width)
|
|
4810
4963
|
const height = Number(operationEntry?.contentRect?.height)
|
|
@@ -4845,6 +4998,7 @@ mutationObserver = new MutationObserver(mutations => {
|
|
|
4845
4998
|
const external = mutations.filter(mutation =>
|
|
4846
4999
|
!mutation.target?.closest?.('[data-prts-conversation-scale], [data-prts-conversation-preview], [data-prts-conversation-history-hint], [data-prts-conversation-history-status]')
|
|
4847
5000
|
)
|
|
5001
|
+
if (external.length) requestGeometryStabilization()
|
|
4848
5002
|
const historyRelevant = external.some(mutation =>
|
|
4849
5003
|
mutation.type === 'childList'
|
|
4850
5004
|
&& operation?.contains?.(mutation.target)
|
|
@@ -4882,9 +5036,17 @@ attributeFilter: [
|
|
|
4882
5036
|
],
|
|
4883
5037
|
})
|
|
4884
5038
|
}
|
|
5039
|
+
document.fonts?.ready?.then?.(() => {
|
|
5040
|
+
if (started) requestGeometryStabilization()
|
|
5041
|
+
}).catch?.(() => {})
|
|
4885
5042
|
schedule(true)
|
|
4886
5043
|
},
|
|
4887
5044
|
dispose() {
|
|
5045
|
+
window?.removeEventListener?.('resize', onHostGeometryChange)
|
|
5046
|
+
window?.removeEventListener?.('orientationchange', onHostGeometryChange)
|
|
5047
|
+
window?.removeEventListener?.('pageshow', onHostGeometryChange)
|
|
5048
|
+
window?.visualViewport?.removeEventListener?.('resize', onHostGeometryChange)
|
|
5049
|
+
stopGeometryStabilization()
|
|
4888
5050
|
started = false
|
|
4889
5051
|
failed = false
|
|
4890
5052
|
mutationObserver?.disconnect()
|
|
@@ -5714,6 +5876,36 @@ const ROOT_ATTRIBUTES = [
|
|
|
5714
5876
|
'data-prts-motion',
|
|
5715
5877
|
'data-prts-particle-pattern',
|
|
5716
5878
|
]
|
|
5879
|
+
const TRANSITION_ATTRIBUTE = 'data-prts-scheme-transition'
|
|
5880
|
+
const TRANSITION_MODE_ATTRIBUTE = 'data-prts-scheme-transition-mode'
|
|
5881
|
+
const TRANSITION_INTERACTIVE_ATTRIBUTE = 'data-prts-scheme-transition-interactive'
|
|
5882
|
+
const TRANSITION_ARMED_ATTRIBUTE = 'data-prts-scheme-transition-armed'
|
|
5883
|
+
const TRANSITION_COMPLETE_ATTRIBUTE = 'data-prts-scheme-transition-complete'
|
|
5884
|
+
const TRANSITION_PROPERTIES = [
|
|
5885
|
+
'--prts-scheme-origin-x',
|
|
5886
|
+
'--prts-scheme-origin-y',
|
|
5887
|
+
'--prts-scheme-duration',
|
|
5888
|
+
'--prts-scheme-reveal-x',
|
|
5889
|
+
'--prts-scheme-control-progress',
|
|
5890
|
+
'--prts-scheme-control-meter-height',
|
|
5891
|
+
'--prts-scheme-control-value-image',
|
|
5892
|
+
]
|
|
5893
|
+
const REVEAL_EDGE_OVERSCAN = 32
|
|
5894
|
+
const REVEAL_GRID_WIDTH = 220
|
|
5895
|
+
const REVEAL_TIMING_LIMITS = {
|
|
5896
|
+
desktop: { minimum: 480, maximum: 560, widthFactor: .38 },
|
|
5897
|
+
mobile: { minimum: 320, maximum: 380, widthFactor: .9 },
|
|
5898
|
+
}
|
|
5899
|
+
const revealValueImages = new Map()
|
|
5900
|
+
function revealValueImageUrl(value) {
|
|
5901
|
+
const percentage = Math.min(100, Math.max(0, Math.round(Number(value) || 0)))
|
|
5902
|
+
if (revealValueImages.has(percentage)) return revealValueImages.get(percentage)
|
|
5903
|
+
const label = String(percentage).padStart(3, '0')
|
|
5904
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="24" height="11" viewBox="0 0 24 11"><text x="0" y="9" fill="#ffd400" font-family="monospace" font-size="10" font-weight="700">${label}</text></svg>`
|
|
5905
|
+
const url = `url("data:image/svg+xml,${encodeURIComponent(svg)}")`
|
|
5906
|
+
revealValueImages.set(percentage, url)
|
|
5907
|
+
return url
|
|
5908
|
+
}
|
|
5717
5909
|
function themeIdentity(value) {
|
|
5718
5910
|
if (typeof value === 'string') return value
|
|
5719
5911
|
if (!value || typeof value !== 'object') return ''
|
|
@@ -5728,20 +5920,50 @@ function resolveScheme(value) {
|
|
|
5728
5920
|
const identity = String(themeIdentity(value)).toLowerCase()
|
|
5729
5921
|
return identity.includes('dark') || identity.includes('night') ? 'dark' : 'light'
|
|
5730
5922
|
}
|
|
5731
|
-
function createThemeController({ document, window, cssText, service }) {
|
|
5732
|
-
if (!document || !window)
|
|
5923
|
+
function createThemeController({ document, window, cssText, service, onTransitionStateChange = () => {} }) {
|
|
5924
|
+
if (!document || !window) {
|
|
5925
|
+
const gesture = { update() {}, finish() {}, cancel() {} }
|
|
5926
|
+
return { apply() {}, sync() {}, refresh() {}, setTheme() {}, beginThemeTransition() { return gesture }, toggle() {}, dispose() {} }
|
|
5927
|
+
}
|
|
5733
5928
|
const root = document.documentElement
|
|
5734
5929
|
let style
|
|
5735
5930
|
let disposed = false
|
|
5736
5931
|
let refreshRevision = 0
|
|
5737
5932
|
let setRevision = 0
|
|
5933
|
+
let transitionRevision = 0
|
|
5934
|
+
let activeTransition
|
|
5935
|
+
let transitionStateActive = false
|
|
5936
|
+
function setTransitionState(active) {
|
|
5937
|
+
const next = Boolean(active)
|
|
5938
|
+
if (transitionStateActive === next) return
|
|
5939
|
+
transitionStateActive = next
|
|
5940
|
+
try { onTransitionStateChange(next) } catch {}
|
|
5941
|
+
}
|
|
5942
|
+
function clearTransitionState() {
|
|
5943
|
+
root.removeAttribute(TRANSITION_ATTRIBUTE)
|
|
5944
|
+
root.removeAttribute(TRANSITION_MODE_ATTRIBUTE)
|
|
5945
|
+
root.removeAttribute(TRANSITION_INTERACTIVE_ATTRIBUTE)
|
|
5946
|
+
root.removeAttribute(TRANSITION_ARMED_ATTRIBUTE)
|
|
5947
|
+
root.removeAttribute(TRANSITION_COMPLETE_ATTRIBUTE)
|
|
5948
|
+
for (const property of TRANSITION_PROPERTIES) root.style.removeProperty(property)
|
|
5949
|
+
}
|
|
5950
|
+
function cancelActiveTransition({ keepPaused = false } = {}) {
|
|
5951
|
+
const current = activeTransition
|
|
5952
|
+
activeTransition = undefined
|
|
5953
|
+
current?.cancel?.()
|
|
5954
|
+
current?.viewTransition?.skipTransition?.()
|
|
5955
|
+
clearTransitionState()
|
|
5956
|
+
if (!keepPaused) setTransitionState(false)
|
|
5957
|
+
}
|
|
5738
5958
|
function clearThemeState() {
|
|
5739
5959
|
for (const attribute of ROOT_ATTRIBUTES) root.removeAttribute(attribute)
|
|
5960
|
+
clearTransitionState()
|
|
5740
5961
|
}
|
|
5741
5962
|
function removeOwnedState() {
|
|
5742
5963
|
disposed = true
|
|
5743
5964
|
refreshRevision += 1
|
|
5744
5965
|
setRevision += 1
|
|
5966
|
+
cancelActiveTransition()
|
|
5745
5967
|
clearThemeState()
|
|
5746
5968
|
root.removeAttribute('data-dsh-prts-settings')
|
|
5747
5969
|
style?.remove()
|
|
@@ -5757,9 +5979,21 @@ document.head.appendChild(style)
|
|
|
5757
5979
|
if (style.textContent !== cssText) style.textContent = cssText
|
|
5758
5980
|
root.setAttribute('data-dsh-prts-settings', '')
|
|
5759
5981
|
}
|
|
5982
|
+
function applyScheme(value) {
|
|
5983
|
+
if (disposed) return
|
|
5984
|
+
const next = resolveScheme(value)
|
|
5985
|
+
root.dataset.prtsScheme = next
|
|
5986
|
+
return next
|
|
5987
|
+
}
|
|
5760
5988
|
function sync(value) {
|
|
5761
5989
|
if (disposed) return
|
|
5762
|
-
|
|
5990
|
+
const next = resolveScheme(value)
|
|
5991
|
+
if (activeTransition) {
|
|
5992
|
+
if (next === activeTransition.target) return root.dataset.prtsScheme
|
|
5993
|
+
if (activeTransition.interactive && next === activeTransition.source) return root.dataset.prtsScheme
|
|
5994
|
+
if (next !== root.dataset.prtsScheme) cancelActiveTransition()
|
|
5995
|
+
}
|
|
5996
|
+
return applyScheme(next)
|
|
5763
5997
|
}
|
|
5764
5998
|
function fallbackTheme() {
|
|
5765
5999
|
return root.dataset.theme || root.getAttribute('data-color-scheme') || root.style.colorScheme || 'light'
|
|
@@ -5779,25 +6013,499 @@ if (!disposed && revision === refreshRevision) sync(fallbackTheme())
|
|
|
5779
6013
|
sync(value ?? fallbackTheme())
|
|
5780
6014
|
return value
|
|
5781
6015
|
}
|
|
5782
|
-
function
|
|
5783
|
-
|
|
5784
|
-
|
|
6016
|
+
function prefersReducedMotion() {
|
|
6017
|
+
if (root.dataset.prtsMotion === 'reduced') return true
|
|
6018
|
+
try { return window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches === true } catch { return false }
|
|
6019
|
+
}
|
|
6020
|
+
function canAnimateScheme(options) {
|
|
6021
|
+
const animationAvailable = typeof document.startViewTransition === 'function'
|
|
6022
|
+
&& typeof root.animate === 'function'
|
|
6023
|
+
return options?.animate === true
|
|
6024
|
+
&& animationAvailable
|
|
6025
|
+
&& !prefersReducedMotion()
|
|
6026
|
+
}
|
|
6027
|
+
function transitionOrigin(origin) {
|
|
6028
|
+
const width = Math.max(Number(window.innerWidth) || 0, Number(root.clientWidth) || 0)
|
|
6029
|
+
const height = Math.max(Number(window.innerHeight) || 0, Number(root.clientHeight) || 0)
|
|
6030
|
+
const clamp = (value, maximum, fallback) => Math.min(maximum, Math.max(0, Number.isFinite(Number(value)) ? Number(value) : fallback))
|
|
6031
|
+
const x = clamp(origin?.x, width, width / 2)
|
|
6032
|
+
const y = clamp(origin?.y, height, height / 2)
|
|
6033
|
+
return { x, y }
|
|
6034
|
+
}
|
|
6035
|
+
function revealViewport(origin) {
|
|
6036
|
+
const geometry = transitionOrigin(origin)
|
|
6037
|
+
const width = Math.max(1, Number(window.innerWidth) || 0, Number(root.clientWidth) || 0)
|
|
6038
|
+
const height = Math.max(1, Number(window.innerHeight) || 0, Number(root.clientHeight) || 0)
|
|
6039
|
+
return { ...geometry, width, height }
|
|
6040
|
+
}
|
|
6041
|
+
function revealDuration(width) {
|
|
6042
|
+
const limits = width <= 720 ? REVEAL_TIMING_LIMITS.mobile : REVEAL_TIMING_LIMITS.desktop
|
|
6043
|
+
return Math.min(limits.maximum, Math.max(limits.minimum, Math.round(width * limits.widthFactor)))
|
|
6044
|
+
}
|
|
6045
|
+
function revealProgress(value) {
|
|
6046
|
+
const numeric = Number(value)
|
|
6047
|
+
if (!Number.isFinite(numeric)) return 0
|
|
6048
|
+
return Math.min(1, Math.max(0, numeric))
|
|
6049
|
+
}
|
|
6050
|
+
function removeRevealHud(session) {
|
|
6051
|
+
const hud = session?.hud
|
|
6052
|
+
if (!hud) return
|
|
5785
6053
|
try {
|
|
5786
|
-
|
|
5787
|
-
|
|
5788
|
-
|
|
5789
|
-
|
|
6054
|
+
if (hud.matches?.(':popover-open')) hud.hidePopover?.()
|
|
6055
|
+
} catch {}
|
|
6056
|
+
hud.remove()
|
|
6057
|
+
session.hud = undefined
|
|
6058
|
+
session.hudGrid = undefined
|
|
6059
|
+
session.hudEdge = undefined
|
|
6060
|
+
session.hudMark = undefined
|
|
6061
|
+
session.hudMeterFill = undefined
|
|
6062
|
+
session.hudLabel = undefined
|
|
6063
|
+
session.hudValue = undefined
|
|
6064
|
+
}
|
|
6065
|
+
function updateRevealHud(session) {
|
|
6066
|
+
if (!session || session.settled) return
|
|
6067
|
+
const percentage = Math.round(revealProgress(session.progress) * 100)
|
|
6068
|
+
if (session.hudEdge) session.hudEdge.dataset.prtsSchemeRevealSide = 'left'
|
|
6069
|
+
root.style.setProperty('--prts-scheme-control-progress', String(session.progress))
|
|
6070
|
+
root.style.setProperty('--prts-scheme-control-meter-height', `${revealProgress(session.progress) * 48}px`)
|
|
6071
|
+
root.style.setProperty('--prts-scheme-control-value-image', revealValueImageUrl(percentage))
|
|
6072
|
+
root.toggleAttribute(TRANSITION_ARMED_ATTRIBUTE, session.interactive && session.progress >= .5)
|
|
6073
|
+
}
|
|
6074
|
+
function releaseRevealHud(session) {
|
|
6075
|
+
if (!session?.hud || session.settled) return Promise.resolve()
|
|
6076
|
+
session.hud.dataset.prtsSchemeRevealState = 'complete'
|
|
6077
|
+
root.setAttribute(TRANSITION_COMPLETE_ATTRIBUTE, '')
|
|
6078
|
+
return new Promise(resolve => window.setTimeout(resolve, 100))
|
|
6079
|
+
}
|
|
6080
|
+
function mountRevealHud(session) {
|
|
6081
|
+
if (session.settled || session.hud || !document.body) return
|
|
6082
|
+
const hud = document.createElement('div')
|
|
6083
|
+
hud.dataset.prtsSchemeReveal = session.target
|
|
6084
|
+
hud.dataset.prtsSchemeRevealMode = session.interactive ? 'interactive' : 'automatic'
|
|
6085
|
+
hud.setAttribute('aria-hidden', 'true')
|
|
6086
|
+
hud.setAttribute('popover', 'manual')
|
|
6087
|
+
const grid = document.createElement('i')
|
|
6088
|
+
grid.dataset.prtsSchemeRevealGrid = ''
|
|
6089
|
+
const edge = document.createElement('span')
|
|
6090
|
+
edge.dataset.prtsSchemeRevealEdge = ''
|
|
6091
|
+
const blend = document.createElement('i')
|
|
6092
|
+
blend.dataset.prtsSchemeRevealBlend = ''
|
|
6093
|
+
const node = document.createElement('span')
|
|
6094
|
+
node.dataset.prtsSchemeRevealNode = ''
|
|
6095
|
+
const meter = document.createElement('i')
|
|
6096
|
+
meter.dataset.prtsSchemeRevealMeter = ''
|
|
6097
|
+
const meterFill = document.createElement('i')
|
|
6098
|
+
meterFill.dataset.prtsSchemeRevealMeterFill = ''
|
|
6099
|
+
const label = document.createElement('span')
|
|
6100
|
+
label.dataset.prtsSchemeRevealLabel = ''
|
|
6101
|
+
label.textContent = 'CTRL'
|
|
6102
|
+
const mark = document.createElement('i')
|
|
6103
|
+
mark.dataset.prtsSchemeRevealMark = ''
|
|
6104
|
+
const value = document.createElement('span')
|
|
6105
|
+
value.dataset.prtsSchemeRevealValue = ''
|
|
6106
|
+
meter.appendChild(meterFill)
|
|
6107
|
+
node.append(meter, label, value, mark)
|
|
6108
|
+
edge.append(grid, blend, node)
|
|
6109
|
+
hud.appendChild(edge)
|
|
6110
|
+
document.body.appendChild(hud)
|
|
6111
|
+
session.hud = hud
|
|
6112
|
+
session.hudGrid = grid
|
|
6113
|
+
session.hudEdge = edge
|
|
6114
|
+
session.hudMark = mark
|
|
6115
|
+
session.hudMeterFill = meterFill
|
|
6116
|
+
session.hudLabel = label
|
|
6117
|
+
session.hudValue = value
|
|
6118
|
+
updateRevealHud(session)
|
|
6119
|
+
try { hud.showPopover?.() } catch {}
|
|
6120
|
+
}
|
|
6121
|
+
function revealTargetX(session, progress) {
|
|
6122
|
+
if (progress === 0) return -REVEAL_EDGE_OVERSCAN
|
|
6123
|
+
if (progress === 1) return session.geometry.width + REVEAL_EDGE_OVERSCAN
|
|
6124
|
+
return progress * session.geometry.width
|
|
6125
|
+
}
|
|
6126
|
+
function revealPixels(value) {
|
|
6127
|
+
const rounded = Math.round(value * 1000) / 1000
|
|
6128
|
+
return `${Object.is(rounded, -0) ? 0 : rounded}px`
|
|
6129
|
+
}
|
|
6130
|
+
function revealClipPath(session, x) {
|
|
6131
|
+
return `inset(0 ${revealPixels(Math.max(0, session.geometry.width - x))} 0 0)`
|
|
6132
|
+
}
|
|
6133
|
+
function revealEdgeTransform(x) {
|
|
6134
|
+
return `translate3d(${revealPixels(x - 1)}, 0, 0)`
|
|
6135
|
+
}
|
|
6136
|
+
function revealGridPosition(x) {
|
|
6137
|
+
return `${revealPixels(REVEAL_GRID_WIDTH - x)} 0px`
|
|
6138
|
+
}
|
|
6139
|
+
function revealGroupTranslate(x) {
|
|
6140
|
+
return `${revealPixels(x)} 0px`
|
|
6141
|
+
}
|
|
6142
|
+
function revealNamedAnimation(keyframes, options, pseudoElement) {
|
|
6143
|
+
return root.animate(keyframes, { ...options, pseudoElement })
|
|
6144
|
+
}
|
|
6145
|
+
function createInteractiveScrub(session) {
|
|
6146
|
+
if (!session.interactive || session.settled || session.scrubAnimations) return
|
|
6147
|
+
try {
|
|
6148
|
+
const options = {
|
|
6149
|
+
duration: session.duration,
|
|
6150
|
+
easing: 'linear',
|
|
6151
|
+
fill: 'both',
|
|
6152
|
+
}
|
|
6153
|
+
const clip = revealNamedAnimation([
|
|
6154
|
+
{ clipPath: revealClipPath(session, 0) },
|
|
6155
|
+
{ clipPath: revealClipPath(session, session.geometry.width) },
|
|
6156
|
+
], options, '::view-transition-new(root)')
|
|
6157
|
+
const edge = revealNamedAnimation([
|
|
6158
|
+
{ translate: revealGroupTranslate(0) },
|
|
6159
|
+
{ translate: revealGroupTranslate(session.geometry.width) },
|
|
6160
|
+
], options, '::view-transition-group(prts-scheme-edge)')
|
|
6161
|
+
const node = revealNamedAnimation([
|
|
6162
|
+
{ translate: revealGroupTranslate(0) },
|
|
6163
|
+
{ translate: revealGroupTranslate(session.geometry.width) },
|
|
6164
|
+
], options, '::view-transition-group(prts-scheme-node)')
|
|
6165
|
+
const grid = revealNamedAnimation([
|
|
6166
|
+
{ translate: revealGroupTranslate(0) },
|
|
6167
|
+
{ translate: revealGroupTranslate(session.geometry.width) },
|
|
6168
|
+
], options, '::view-transition-group(prts-scheme-grid)')
|
|
6169
|
+
const gridPhase = revealNamedAnimation([
|
|
6170
|
+
{ backgroundPosition: revealGridPosition(0) },
|
|
6171
|
+
{ backgroundPosition: revealGridPosition(session.geometry.width) },
|
|
6172
|
+
], options, '::view-transition-new(prts-scheme-grid)')
|
|
6173
|
+
const mark = revealNamedAnimation([
|
|
6174
|
+
{ offset: 0, translate: revealGroupTranslate(0), rotate: '45deg' },
|
|
6175
|
+
{ offset: .49, translate: revealGroupTranslate(session.geometry.width * .49), rotate: '45deg' },
|
|
6176
|
+
{ offset: .51, translate: revealGroupTranslate(session.geometry.width * .51), rotate: '225deg' },
|
|
6177
|
+
{ offset: 1, translate: revealGroupTranslate(session.geometry.width), rotate: '225deg' },
|
|
6178
|
+
], options, '::view-transition-group(prts-scheme-mark)')
|
|
6179
|
+
session.scrubAnimations = [clip, edge, node, grid, gridPhase, mark]
|
|
6180
|
+
for (const animation of session.scrubAnimations) {
|
|
6181
|
+
animation.pause?.()
|
|
6182
|
+
animation.currentTime = session.progress * session.duration
|
|
6183
|
+
}
|
|
6184
|
+
} catch {}
|
|
6185
|
+
}
|
|
6186
|
+
function setRevealProgress(session, value) {
|
|
6187
|
+
if (!session || session.settled) return
|
|
6188
|
+
session.progress = revealProgress(value)
|
|
6189
|
+
session.revealX = session.progress * session.geometry.width
|
|
6190
|
+
root.style.setProperty('--prts-scheme-reveal-x', `${session.revealX}px`)
|
|
6191
|
+
if (session.scrubAnimations) {
|
|
6192
|
+
try {
|
|
6193
|
+
for (const animation of session.scrubAnimations) {
|
|
6194
|
+
animation.pause?.()
|
|
6195
|
+
animation.currentTime = session.progress * session.duration
|
|
6196
|
+
}
|
|
6197
|
+
} catch {}
|
|
6198
|
+
}
|
|
6199
|
+
updateRevealHud(session)
|
|
6200
|
+
}
|
|
6201
|
+
function cancelRevealAnimation(session) {
|
|
6202
|
+
const animations = session?.progressAnimations || []
|
|
6203
|
+
session.progressAnimations = undefined
|
|
6204
|
+
for (const animation of animations) {
|
|
6205
|
+
try { animation?.cancel?.() } catch {}
|
|
6206
|
+
}
|
|
6207
|
+
for (const animation of session?.completedAnimations || []) {
|
|
6208
|
+
try { animation?.cancel?.() } catch {}
|
|
6209
|
+
}
|
|
6210
|
+
if (session) session.completedAnimations = undefined
|
|
6211
|
+
for (const animation of session?.scrubAnimations || []) {
|
|
6212
|
+
try { animation?.cancel?.() } catch {}
|
|
6213
|
+
}
|
|
6214
|
+
if (session) session.scrubAnimations = undefined
|
|
6215
|
+
}
|
|
6216
|
+
function animateRevealTo(session, value, duration, easing) {
|
|
6217
|
+
if (!session || session.settled) return Promise.resolve(false)
|
|
6218
|
+
cancelRevealAnimation(session)
|
|
6219
|
+
const targetProgress = revealProgress(value)
|
|
6220
|
+
const targetX = revealTargetX(session, targetProgress)
|
|
6221
|
+
if (!(duration > 0)) {
|
|
6222
|
+
setRevealProgress(session, targetProgress)
|
|
6223
|
+
return Promise.resolve(true)
|
|
6224
|
+
}
|
|
6225
|
+
let animations
|
|
6226
|
+
try {
|
|
6227
|
+
const options = {
|
|
6228
|
+
duration: Math.round(duration),
|
|
6229
|
+
easing,
|
|
6230
|
+
fill: 'forwards',
|
|
6231
|
+
}
|
|
6232
|
+
const clip = root.animate([
|
|
6233
|
+
{ clipPath: revealClipPath(session, session.revealX) },
|
|
6234
|
+
{ clipPath: revealClipPath(session, targetX) },
|
|
6235
|
+
], {
|
|
6236
|
+
...options,
|
|
6237
|
+
pseudoElement: '::view-transition-new(root)',
|
|
6238
|
+
})
|
|
6239
|
+
const edge = revealNamedAnimation([
|
|
6240
|
+
{ translate: revealGroupTranslate(session.revealX) },
|
|
6241
|
+
{ translate: revealGroupTranslate(targetX) },
|
|
6242
|
+
], options, '::view-transition-group(prts-scheme-edge)')
|
|
6243
|
+
const node = revealNamedAnimation([
|
|
6244
|
+
{ translate: revealGroupTranslate(session.revealX) },
|
|
6245
|
+
{ translate: revealGroupTranslate(targetX) },
|
|
6246
|
+
], options, '::view-transition-group(prts-scheme-node)')
|
|
6247
|
+
const grid = revealNamedAnimation([
|
|
6248
|
+
{ translate: revealGroupTranslate(session.revealX) },
|
|
6249
|
+
{ translate: revealGroupTranslate(targetX) },
|
|
6250
|
+
], options, '::view-transition-group(prts-scheme-grid)')
|
|
6251
|
+
const gridPhase = revealNamedAnimation([
|
|
6252
|
+
{ backgroundPosition: revealGridPosition(session.revealX) },
|
|
6253
|
+
{ backgroundPosition: revealGridPosition(targetX) },
|
|
6254
|
+
], options, '::view-transition-new(prts-scheme-grid)')
|
|
6255
|
+
const nodeProgress = revealNamedAnimation([
|
|
6256
|
+
{ backgroundSize: `2px ${session.progress * 48}px` },
|
|
6257
|
+
{ backgroundSize: `2px ${targetProgress * 48}px` },
|
|
6258
|
+
], options, '::view-transition-new(prts-scheme-node)')
|
|
6259
|
+
const mark = revealNamedAnimation([
|
|
6260
|
+
{ translate: revealGroupTranslate(session.revealX), rotate: session.progress >= .5 ? '225deg' : '45deg' },
|
|
6261
|
+
{ translate: revealGroupTranslate(targetX), rotate: targetProgress >= .5 ? '225deg' : '45deg' },
|
|
6262
|
+
], options, '::view-transition-group(prts-scheme-mark)')
|
|
6263
|
+
animations = [clip, edge, node, grid, gridPhase, nodeProgress, mark]
|
|
6264
|
+
} catch {
|
|
6265
|
+
setRevealProgress(session, targetProgress)
|
|
6266
|
+
return Promise.resolve(true)
|
|
6267
|
+
}
|
|
6268
|
+
session.progressAnimations = animations
|
|
6269
|
+
return Promise.all(animations.map(animation => Promise.resolve(animation?.finished).then(() => true, () => false))).then(results => {
|
|
6270
|
+
const completed = results.every(Boolean)
|
|
6271
|
+
if (!completed || session.settled || session.progressAnimations !== animations) return false
|
|
6272
|
+
session.progressAnimations = undefined
|
|
6273
|
+
session.completedAnimations = animations
|
|
6274
|
+
session.progress = targetProgress
|
|
6275
|
+
session.revealX = targetX
|
|
6276
|
+
root.style.setProperty('--prts-scheme-reveal-x', `${session.revealX}px`)
|
|
6277
|
+
updateRevealHud(session)
|
|
6278
|
+
return true
|
|
6279
|
+
})
|
|
6280
|
+
}
|
|
6281
|
+
function requestHostScheme(value) {
|
|
6282
|
+
try {
|
|
6283
|
+
return Promise.resolve(service?.setTheme?.(value)).then(() => true, () => false)
|
|
6284
|
+
} catch {
|
|
6285
|
+
return Promise.resolve(false)
|
|
6286
|
+
}
|
|
6287
|
+
}
|
|
6288
|
+
function restoreRevealSource(session) {
|
|
6289
|
+
if (!session) return Promise.resolve(false)
|
|
6290
|
+
session.restoreRequested = true
|
|
6291
|
+
if (session.restorePromise) return session.restorePromise
|
|
6292
|
+
session.restorePromise = Promise.resolve(session.hostRequest).then(async accepted => {
|
|
6293
|
+
if (accepted && !(await requestHostScheme(session.source))) return false
|
|
6294
|
+
applyScheme(session.source)
|
|
6295
|
+
session.hostAccepted = false
|
|
6296
|
+
return true
|
|
6297
|
+
})
|
|
6298
|
+
return session.restorePromise
|
|
6299
|
+
}
|
|
6300
|
+
function finishRevealSession(session, { commit }) {
|
|
6301
|
+
if (!session || session.settled) return
|
|
6302
|
+
session.committed = commit
|
|
6303
|
+
session.settled = true
|
|
6304
|
+
cancelRevealAnimation(session)
|
|
6305
|
+
if (!commit) applyScheme(session.source)
|
|
6306
|
+
try { session.viewTransition?.skipTransition?.() } catch {}
|
|
6307
|
+
removeRevealHud(session)
|
|
6308
|
+
if (activeTransition?.token === session.token) activeTransition = undefined
|
|
6309
|
+
clearTransitionState()
|
|
6310
|
+
setTransitionState(false)
|
|
6311
|
+
}
|
|
6312
|
+
function createRevealSession(target, options = {}) {
|
|
6313
|
+
cancelActiveTransition({ keepPaused: true })
|
|
6314
|
+
setTransitionState(true)
|
|
6315
|
+
const source = root.dataset.prtsScheme === 'dark' ? 'dark' : 'light'
|
|
6316
|
+
const geometry = revealViewport(options.origin)
|
|
6317
|
+
const interactive = options.interactive === true
|
|
6318
|
+
const initialProgress = interactive ? revealProgress(options.progress) : 0
|
|
6319
|
+
const duration = revealDuration(geometry.width)
|
|
6320
|
+
const token = ++transitionRevision
|
|
6321
|
+
let resolveHostReady
|
|
6322
|
+
const session = {
|
|
6323
|
+
token,
|
|
6324
|
+
target,
|
|
6325
|
+
source,
|
|
6326
|
+
geometry,
|
|
6327
|
+
interactive,
|
|
6328
|
+
progress: initialProgress,
|
|
6329
|
+
revealX: interactive ? initialProgress * geometry.width : -REVEAL_EDGE_OVERSCAN,
|
|
6330
|
+
duration,
|
|
6331
|
+
settled: false,
|
|
6332
|
+
committed: false,
|
|
6333
|
+
hostAccepted: false,
|
|
6334
|
+
hostReady: new Promise(resolve => { resolveHostReady = resolve }),
|
|
6335
|
+
}
|
|
6336
|
+
root.style.setProperty('--prts-scheme-origin-x', `${geometry.x}px`)
|
|
6337
|
+
root.style.setProperty('--prts-scheme-origin-y', `${geometry.y}px`)
|
|
6338
|
+
root.style.setProperty('--prts-scheme-duration', `${interactive ? 3600000 : duration}ms`)
|
|
6339
|
+
root.style.setProperty('--prts-scheme-reveal-x', `${session.revealX}px`)
|
|
6340
|
+
root.style.setProperty('--prts-scheme-control-progress', String(initialProgress))
|
|
6341
|
+
root.style.setProperty('--prts-scheme-control-meter-height', `${initialProgress * 48}px`)
|
|
6342
|
+
root.style.setProperty('--prts-scheme-control-value-image', revealValueImageUrl(initialProgress * 100))
|
|
6343
|
+
root.setAttribute(TRANSITION_ATTRIBUTE, target)
|
|
6344
|
+
root.setAttribute(TRANSITION_MODE_ATTRIBUTE, 'view')
|
|
6345
|
+
root.toggleAttribute(TRANSITION_INTERACTIVE_ATTRIBUTE, interactive)
|
|
6346
|
+
session.cancel = () => {
|
|
6347
|
+
if (session.settled) return
|
|
6348
|
+
session.settled = true
|
|
6349
|
+
cancelRevealAnimation(session)
|
|
6350
|
+
if (session.interactive && !session.committed) void restoreRevealSource(session)
|
|
6351
|
+
removeRevealHud(session)
|
|
6352
|
+
}
|
|
6353
|
+
activeTransition = session
|
|
6354
|
+
let viewTransition
|
|
6355
|
+
try {
|
|
6356
|
+
viewTransition = document.startViewTransition(async () => {
|
|
6357
|
+
session.hostRequest = requestHostScheme(target)
|
|
6358
|
+
const accepted = await session.hostRequest
|
|
6359
|
+
session.hostAccepted = accepted
|
|
6360
|
+
if (!accepted) {
|
|
6361
|
+
applyScheme(source)
|
|
6362
|
+
resolveHostReady(false)
|
|
6363
|
+
return
|
|
6364
|
+
}
|
|
6365
|
+
if (session.settled || session.restoreRequested) {
|
|
6366
|
+
await restoreRevealSource(session)
|
|
6367
|
+
resolveHostReady(false)
|
|
6368
|
+
return
|
|
6369
|
+
}
|
|
6370
|
+
applyScheme(target)
|
|
6371
|
+
mountRevealHud(session)
|
|
6372
|
+
resolveHostReady(true)
|
|
6373
|
+
})
|
|
6374
|
+
} catch {
|
|
6375
|
+
resolveHostReady(false)
|
|
6376
|
+
if (activeTransition?.token === token) activeTransition = undefined
|
|
6377
|
+
removeRevealHud(session)
|
|
6378
|
+
clearTransitionState()
|
|
6379
|
+
applyScheme(source)
|
|
6380
|
+
setTransitionState(false)
|
|
6381
|
+
return undefined
|
|
6382
|
+
}
|
|
6383
|
+
session.viewTransition = viewTransition
|
|
6384
|
+
session.ready = Promise.all([
|
|
6385
|
+
Promise.resolve(viewTransition?.ready).then(() => true, () => false),
|
|
6386
|
+
session.hostReady,
|
|
6387
|
+
]).then(([viewReady, hostReady]) => {
|
|
6388
|
+
const ready = viewReady && hostReady
|
|
6389
|
+
if (ready && activeTransition?.token === token && !session.settled) {
|
|
6390
|
+
createInteractiveScrub(session)
|
|
6391
|
+
}
|
|
6392
|
+
return ready
|
|
6393
|
+
})
|
|
6394
|
+
return session
|
|
6395
|
+
}
|
|
6396
|
+
async function commitRevealScheme(target, origin) {
|
|
6397
|
+
const session = createRevealSession(target, { origin })
|
|
6398
|
+
if (!session) return root.dataset.prtsScheme
|
|
6399
|
+
const ready = await session.ready
|
|
6400
|
+
if (!ready) {
|
|
6401
|
+
if (!session.settled) finishRevealSession(session, { commit: false })
|
|
6402
|
+
return session.source
|
|
6403
|
+
}
|
|
6404
|
+
if (activeTransition?.token !== session.token || session.settled) return root.dataset.prtsScheme
|
|
6405
|
+
await animateRevealTo(session, 1, session.duration, 'cubic-bezier(.4, 0, .2, 1)')
|
|
6406
|
+
await releaseRevealHud(session)
|
|
6407
|
+
if (activeTransition?.token === session.token && !session.settled) finishRevealSession(session, { commit: true })
|
|
5790
6408
|
return target
|
|
5791
|
-
}
|
|
5792
|
-
|
|
6409
|
+
}
|
|
6410
|
+
function fallbackGesture(target, source) {
|
|
6411
|
+
let progress = 0
|
|
6412
|
+
let settled = false
|
|
6413
|
+
return {
|
|
6414
|
+
update(value) { if (!settled) progress = revealProgress(value) },
|
|
6415
|
+
finish(commit = progress >= .5) {
|
|
6416
|
+
if (settled) return root.dataset.prtsScheme
|
|
6417
|
+
settled = true
|
|
6418
|
+
return commit ? setTheme(target, { animate: false }) : source
|
|
6419
|
+
},
|
|
6420
|
+
cancel() {
|
|
6421
|
+
if (settled) return source
|
|
6422
|
+
settled = true
|
|
6423
|
+
return source
|
|
6424
|
+
},
|
|
6425
|
+
}
|
|
6426
|
+
}
|
|
6427
|
+
function beginThemeTransition(id, options = {}) {
|
|
6428
|
+
const target = id === 'dark' ? 'dark' : 'light'
|
|
6429
|
+
const source = root.dataset.prtsScheme === 'dark' ? 'dark' : 'light'
|
|
6430
|
+
if (disposed || target === source || !canAnimateScheme({ ...options, animate: true })) return fallbackGesture(target, source)
|
|
6431
|
+
const session = createRevealSession(target, { ...options, interactive: true })
|
|
6432
|
+
if (!session) return fallbackGesture(target, source)
|
|
6433
|
+
let finishPromise
|
|
6434
|
+
const finish = commit => {
|
|
6435
|
+
if (finishPromise) return finishPromise
|
|
6436
|
+
if (session.settled || activeTransition?.token !== session.token) return Promise.resolve(root.dataset.prtsScheme)
|
|
6437
|
+
root.removeAttribute(TRANSITION_INTERACTIVE_ATTRIBUTE)
|
|
6438
|
+
root.toggleAttribute(TRANSITION_ARMED_ATTRIBUTE, commit)
|
|
6439
|
+
if (session.hud) session.hud.dataset.prtsSchemeRevealMode = 'settling'
|
|
6440
|
+
const visualDuration = commit
|
|
6441
|
+
? Math.max(90, Math.round(session.duration * (1 - session.progress)))
|
|
6442
|
+
: Math.max(90, Math.round(session.duration * session.progress * .72))
|
|
6443
|
+
const visual = session.ready.then(ready => {
|
|
6444
|
+
if (!ready || session.settled) return false
|
|
6445
|
+
return animateRevealTo(
|
|
6446
|
+
session,
|
|
6447
|
+
commit ? 1 : 0,
|
|
6448
|
+
visualDuration,
|
|
6449
|
+
commit ? 'cubic-bezier(.22, 1, .36, 1)' : 'cubic-bezier(.4, 0, .2, 1)',
|
|
6450
|
+
)
|
|
6451
|
+
})
|
|
6452
|
+
if (!commit) {
|
|
6453
|
+
finishPromise = visual.then(async () => {
|
|
6454
|
+
await releaseRevealHud(session)
|
|
6455
|
+
await restoreRevealSource(session)
|
|
6456
|
+
if (!session.settled) finishRevealSession(session, { commit: false })
|
|
6457
|
+
return session.source
|
|
6458
|
+
})
|
|
6459
|
+
return finishPromise
|
|
6460
|
+
}
|
|
6461
|
+
finishPromise = visual.then(async () => {
|
|
6462
|
+
if (!session.hostAccepted) {
|
|
6463
|
+
if (!session.settled) finishRevealSession(session, { commit: false })
|
|
6464
|
+
refresh()
|
|
5793
6465
|
return root.dataset.prtsScheme
|
|
6466
|
+
}
|
|
6467
|
+
await releaseRevealHud(session)
|
|
6468
|
+
if (!session.settled) finishRevealSession(session, { commit: true })
|
|
6469
|
+
return target
|
|
5794
6470
|
})
|
|
6471
|
+
return finishPromise
|
|
6472
|
+
}
|
|
6473
|
+
return {
|
|
6474
|
+
update(progress) {
|
|
6475
|
+
if (session.settled || activeTransition?.token !== session.token) return
|
|
6476
|
+
setRevealProgress(session, progress)
|
|
6477
|
+
},
|
|
6478
|
+
finish,
|
|
6479
|
+
cancel() { return finish(false) },
|
|
6480
|
+
}
|
|
5795
6481
|
}
|
|
5796
|
-
|
|
6482
|
+
function commitAnimatedScheme(target, origin) {
|
|
6483
|
+
return commitRevealScheme(target, origin)
|
|
6484
|
+
}
|
|
6485
|
+
function setTheme(id, options = {}) {
|
|
6486
|
+
const target = id === 'dark' ? 'dark' : 'light'
|
|
6487
|
+
const revision = ++setRevision
|
|
6488
|
+
const animate = canAnimateScheme(options) && target !== root.dataset.prtsScheme
|
|
6489
|
+
if (animate) return commitAnimatedScheme(target, options.origin)
|
|
6490
|
+
const commit = () => {
|
|
6491
|
+
if (disposed || revision !== setRevision) return root.dataset.prtsScheme
|
|
6492
|
+
return applyScheme(target)
|
|
6493
|
+
}
|
|
6494
|
+
const fail = () => {
|
|
6495
|
+
if (disposed || revision !== setRevision) return root.dataset.prtsScheme
|
|
6496
|
+
const result = refresh()
|
|
6497
|
+
if (result && typeof result.then === 'function') {
|
|
6498
|
+
return result.then(() => root.dataset.prtsScheme)
|
|
6499
|
+
}
|
|
6500
|
+
return root.dataset.prtsScheme
|
|
6501
|
+
}
|
|
6502
|
+
try {
|
|
6503
|
+
const result = service?.setTheme?.(target)
|
|
6504
|
+
if (result && typeof result.then === 'function') return result.then(commit).catch(fail)
|
|
6505
|
+
return commit()
|
|
5797
6506
|
} catch {
|
|
5798
|
-
|
|
6507
|
+
return fail()
|
|
5799
6508
|
}
|
|
5800
|
-
return target
|
|
5801
6509
|
}
|
|
5802
6510
|
function toggle() {
|
|
5803
6511
|
return setTheme(root.dataset.prtsScheme === 'dark' ? 'light' : 'dark')
|
|
@@ -5808,6 +6516,7 @@ disposed = false
|
|
|
5808
6516
|
const preferences = normalizePreferences(value)
|
|
5809
6517
|
ensureStyle()
|
|
5810
6518
|
if (!preferences.enabled) {
|
|
6519
|
+
cancelActiveTransition()
|
|
5811
6520
|
clearThemeState()
|
|
5812
6521
|
return
|
|
5813
6522
|
}
|
|
@@ -5821,6 +6530,7 @@ refresh()
|
|
|
5821
6530
|
sync,
|
|
5822
6531
|
refresh,
|
|
5823
6532
|
setTheme,
|
|
6533
|
+
beginThemeTransition,
|
|
5824
6534
|
toggle,
|
|
5825
6535
|
dispose: removeOwnedState,
|
|
5826
6536
|
}
|
|
@@ -6322,6 +7032,7 @@ const PRESET_OPTIONS = [
|
|
|
6322
7032
|
['quiet-reading', '静谧阅读', '克制底纹 / 柔和玻璃 / 减少动效'],
|
|
6323
7033
|
]
|
|
6324
7034
|
const COMMON_CONTROLS = [
|
|
7035
|
+
['railDefaultHidden', '默认隐藏导航栏', [['false', '关闭'], ['true', '开启']]],
|
|
6325
7036
|
['texture', '环境底纹', [['off', '关闭'], ['restrained', '克制'], ['full', '完整']]],
|
|
6326
7037
|
['glass', '玻璃材质', [['off', '关闭'], ['soft', '柔和'], ['standard', '标准'], ['clear', '清晰']]],
|
|
6327
7038
|
['motion', '动态效果', [['system', '跟随系统'], ['reduced', '减少']]],
|
|
@@ -6336,6 +7047,8 @@ const note = key === 'glass'
|
|
|
6336
7047
|
? '<small data-prts-setting-note data-prts-transparency-status hidden>系统当前要求降低透明度</small>'
|
|
6337
7048
|
: key === 'motion'
|
|
6338
7049
|
? '<small data-prts-setting-note data-prts-effective-motion hidden>系统当前要求减少动态</small>'
|
|
7050
|
+
: key === 'railDefaultHidden'
|
|
7051
|
+
? '<small data-prts-setting-note>在任意窗口宽度下默认收起 P.R.T.S. 导航,可从左侧按钮临时展开</small>'
|
|
6339
7052
|
: ''
|
|
6340
7053
|
const sample = value => key === 'texture' || key === 'glass'
|
|
6341
7054
|
? `<i data-prts-option-sample="${key}" data-prts-option-sample-value="${value}" aria-hidden="true"></i>`
|
|
@@ -6399,6 +7112,10 @@ return `<div data-prts-settings-backdrop hidden aria-hidden="true"></div>
|
|
|
6399
7112
|
<section data-prts-particle-detail>
|
|
6400
7113
|
<header><strong>粒子精度</strong><span>同时调整会话与新会话徽记</span></header>
|
|
6401
7114
|
<div role="radiogroup" aria-label="粒子精度">${particleMarkup()}</div>
|
|
7115
|
+
<label data-prts-setting-row="particleTraversalSpeed" data-prts-setting-range-row data-prts-particle-traversal>
|
|
7116
|
+
<span><strong>跟随移动速度</strong><small>控制普通会话徽记移动及破碎重组的滚动距离</small></span>
|
|
7117
|
+
<div><input type="range" min="0" max="2" step="0.25" value="1" data-prts-setting-range data-prts-setting-key="particleTraversalSpeed" aria-label="粒子徽记跟随移动速度"><output data-prts-particle-traversal-output>1× · 每 1 个视口重组</output></div>
|
|
7118
|
+
</label>
|
|
6402
7119
|
<span data-prts-particle-error role="alert" hidden>粒子资源加载异常,主题已使用静态后备效果</span>
|
|
6403
7120
|
</section>
|
|
6404
7121
|
<section data-prts-scale-adjustment>
|
|
@@ -6445,6 +7162,7 @@ panel,
|
|
|
6445
7162
|
backdrop,
|
|
6446
7163
|
onOpen = () => {},
|
|
6447
7164
|
onPreferenceChange = () => {},
|
|
7165
|
+
onPreferencePreview = () => {},
|
|
6448
7166
|
onResetVisual = () => {},
|
|
6449
7167
|
onRetrySave = () => {},
|
|
6450
7168
|
getConversationScalePreview = () => ({ visible: false, reason: 'unmeasured', mode: 'hidden' }),
|
|
@@ -6462,6 +7180,8 @@ let scaleDistanceDraft
|
|
|
6462
7180
|
let scaleDistanceDirty = false
|
|
6463
7181
|
let scaleFocusContrastDraft
|
|
6464
7182
|
let scaleFocusContrastDirty = false
|
|
7183
|
+
let particleTraversalSpeedDraft
|
|
7184
|
+
let particleTraversalSpeedDirty = false
|
|
6465
7185
|
let calibrationResizeObserver
|
|
6466
7186
|
let calibrationSettleTimer
|
|
6467
7187
|
let calibrationFrame
|
|
@@ -6511,6 +7231,7 @@ if (value === isOpen) return isOpen
|
|
|
6511
7231
|
if (!value) {
|
|
6512
7232
|
commitScaleDistance()
|
|
6513
7233
|
commitScaleFocusContrast()
|
|
7234
|
+
commitParticleTraversalSpeed()
|
|
6514
7235
|
}
|
|
6515
7236
|
isOpen = value
|
|
6516
7237
|
trigger.setAttribute('aria-expanded', String(isOpen))
|
|
@@ -6548,6 +7269,32 @@ return Math.round(clamped / CONVERSATION_SCALE_FOCUS_CONTRAST_STEP) * CONVERSATI
|
|
|
6548
7269
|
function currentScaleFocusContrast() {
|
|
6549
7270
|
return normalizeScaleFocusContrast(scaleFocusContrastDirty ? scaleFocusContrastDraft : currentPreferences?.conversationScaleFocusContrast)
|
|
6550
7271
|
}
|
|
7272
|
+
function normalizeParticleTraversalSpeed(value) {
|
|
7273
|
+
const numeric = Number(value)
|
|
7274
|
+
if (!Number.isFinite(numeric)) return PARTICLE_TRAVERSAL_SPEED_DEFAULT
|
|
7275
|
+
const clamped = Math.min(PARTICLE_TRAVERSAL_SPEED_MAX, Math.max(PARTICLE_TRAVERSAL_SPEED_MIN, numeric))
|
|
7276
|
+
return Math.round(clamped / PARTICLE_TRAVERSAL_SPEED_STEP) * PARTICLE_TRAVERSAL_SPEED_STEP
|
|
7277
|
+
}
|
|
7278
|
+
function currentParticleTraversalSpeed() {
|
|
7279
|
+
return normalizeParticleTraversalSpeed(
|
|
7280
|
+
particleTraversalSpeedDirty ? particleTraversalSpeedDraft : currentPreferences?.particleTraversalSpeed,
|
|
7281
|
+
)
|
|
7282
|
+
}
|
|
7283
|
+
function conciseNumber(value) {
|
|
7284
|
+
return String(Number(Number(value).toFixed(2)))
|
|
7285
|
+
}
|
|
7286
|
+
function particleTraversalLabel(value) {
|
|
7287
|
+
const speed = normalizeParticleTraversalSpeed(value)
|
|
7288
|
+
if (speed === 0) return '0× · 静止 / 不重组'
|
|
7289
|
+
return `${conciseNumber(speed)}× · 每 ${conciseNumber(1 / speed)} 个视口重组`
|
|
7290
|
+
}
|
|
7291
|
+
function renderParticleTraversal() {
|
|
7292
|
+
if (!panel || !currentPreferences) return
|
|
7293
|
+
const value = currentParticleTraversalSpeed()
|
|
7294
|
+
const range = panel.querySelector('input[data-prts-setting-range][data-prts-setting-key="particleTraversalSpeed"]')
|
|
7295
|
+
if (range && range.value !== String(value)) range.value = String(value)
|
|
7296
|
+
setText(panel.querySelector('[data-prts-particle-traversal-output]'), particleTraversalLabel(value))
|
|
7297
|
+
}
|
|
6551
7298
|
function calibrationStatus(state, value) {
|
|
6552
7299
|
if (state?.mode === 'configured') return `当前视图:使用配置上限 / ${Math.round(Number(state.left) || value)} px`
|
|
6553
7300
|
if (state?.simulated) return `模拟布局:使用配置上限 / ${value} px`
|
|
@@ -6647,7 +7394,7 @@ if (tick.style.width !== width) tick.style.width = width
|
|
|
6647
7394
|
const detail = resolveParticleDetail(currentPreferences)
|
|
6648
7395
|
const detailLabels = { compact: '精简', standard: '标准', precise: '精细' }
|
|
6649
7396
|
const advanced = panel.querySelector('[data-prts-advanced-summary]')
|
|
6650
|
-
setText(advanced, `${detailLabels[detail]} / 区分度 ${contrast} / ${value} px`)
|
|
7397
|
+
setText(advanced, `${detailLabels[detail]} / ${conciseNumber(currentParticleTraversalSpeed())}× / 区分度 ${contrast} / ${value} px`)
|
|
6651
7398
|
if (!calibration) return
|
|
6652
7399
|
const distance = `${value}px`
|
|
6653
7400
|
if (calibration.style.getPropertyValue('--prts-calibration-distance') !== distance) {
|
|
@@ -6673,6 +7420,18 @@ if (value !== normalizeScaleFocusContrast(currentPreferences.conversationScaleFo
|
|
|
6673
7420
|
else renderScaleCalibration()
|
|
6674
7421
|
return true
|
|
6675
7422
|
}
|
|
7423
|
+
function commitParticleTraversalSpeed() {
|
|
7424
|
+
if (!particleTraversalSpeedDirty || !currentPreferences) return false
|
|
7425
|
+
const value = currentParticleTraversalSpeed()
|
|
7426
|
+
particleTraversalSpeedDirty = false
|
|
7427
|
+
particleTraversalSpeedDraft = value
|
|
7428
|
+
if (value !== normalizeParticleTraversalSpeed(currentPreferences.particleTraversalSpeed)) {
|
|
7429
|
+
onPreferenceChange('particleTraversalSpeed', value)
|
|
7430
|
+
} else {
|
|
7431
|
+
renderParticleTraversal()
|
|
7432
|
+
}
|
|
7433
|
+
return true
|
|
7434
|
+
}
|
|
6676
7435
|
function renderPersistence() {
|
|
6677
7436
|
const status = panel?.querySelector?.('[data-prts-persistence-status]')
|
|
6678
7437
|
const error = panel?.querySelector?.('[data-prts-persistence-error]')
|
|
@@ -6714,6 +7473,8 @@ const particleError = panel.querySelector('[data-prts-particle-error]')
|
|
|
6714
7473
|
if (particleError) particleError.hidden = currentStatus?.particle?.phase !== 'error'
|
|
6715
7474
|
if (!scaleDistanceDirty) scaleDistanceDraft = normalizeScaleDistance(currentPreferences.conversationScaleMaxDistance)
|
|
6716
7475
|
if (!scaleFocusContrastDirty) scaleFocusContrastDraft = normalizeScaleFocusContrast(currentPreferences.conversationScaleFocusContrast)
|
|
7476
|
+
if (!particleTraversalSpeedDirty) particleTraversalSpeedDraft = normalizeParticleTraversalSpeed(currentPreferences.particleTraversalSpeed)
|
|
7477
|
+
renderParticleTraversal()
|
|
6717
7478
|
renderScaleCalibration()
|
|
6718
7479
|
renderPersistence()
|
|
6719
7480
|
}
|
|
@@ -6748,6 +7509,8 @@ scaleDistanceDirty = false
|
|
|
6748
7509
|
scaleDistanceDraft = undefined
|
|
6749
7510
|
scaleFocusContrastDirty = false
|
|
6750
7511
|
scaleFocusContrastDraft = undefined
|
|
7512
|
+
particleTraversalSpeedDirty = false
|
|
7513
|
+
particleTraversalSpeedDraft = undefined
|
|
6751
7514
|
setResetConfirmation(false)
|
|
6752
7515
|
onResetVisual()
|
|
6753
7516
|
}
|
|
@@ -6763,6 +7526,12 @@ scaleDistanceDirty = true
|
|
|
6763
7526
|
} else if (target.dataset.prtsSettingKey === 'conversationScaleFocusContrast') {
|
|
6764
7527
|
scaleFocusContrastDraft = value
|
|
6765
7528
|
scaleFocusContrastDirty = true
|
|
7529
|
+
} else if (target.dataset.prtsSettingKey === 'particleTraversalSpeed') {
|
|
7530
|
+
particleTraversalSpeedDraft = normalizeParticleTraversalSpeed(value)
|
|
7531
|
+
particleTraversalSpeedDirty = true
|
|
7532
|
+
renderParticleTraversal()
|
|
7533
|
+
onPreferencePreview('particleTraversalSpeed', particleTraversalSpeedDraft)
|
|
7534
|
+
return
|
|
6766
7535
|
} else {
|
|
6767
7536
|
return
|
|
6768
7537
|
}
|
|
@@ -6788,6 +7557,7 @@ const target = event.target
|
|
|
6788
7557
|
if (!target?.matches?.('input[data-prts-setting-range]')) return
|
|
6789
7558
|
if (target.dataset.prtsSettingKey === 'conversationScaleMaxDistance') commitScaleDistance()
|
|
6790
7559
|
if (target.dataset.prtsSettingKey === 'conversationScaleFocusContrast') commitScaleFocusContrast()
|
|
7560
|
+
if (target.dataset.prtsSettingKey === 'particleTraversalSpeed') commitParticleTraversalSpeed()
|
|
6791
7561
|
}
|
|
6792
7562
|
trigger?.addEventListener('click', toggle)
|
|
6793
7563
|
panel?.addEventListener('click', onPanelClick)
|
|
@@ -6812,6 +7582,7 @@ currentStatus = status
|
|
|
6812
7582
|
currentPersistence = persistenceState ?? { phase: 'idle', revision: 0 }
|
|
6813
7583
|
if (!scaleDistanceDirty) scaleDistanceDraft = normalizeScaleDistance(preferences?.conversationScaleMaxDistance)
|
|
6814
7584
|
if (!scaleFocusContrastDirty) scaleFocusContrastDraft = normalizeScaleFocusContrast(preferences?.conversationScaleFocusContrast)
|
|
7585
|
+
if (!particleTraversalSpeedDirty) particleTraversalSpeedDraft = normalizeParticleTraversalSpeed(preferences?.particleTraversalSpeed)
|
|
6815
7586
|
renderState()
|
|
6816
7587
|
},
|
|
6817
7588
|
refreshScalePreview: renderScaleCalibration,
|
|
@@ -6937,8 +7708,10 @@ assets = {},
|
|
|
6937
7708
|
adapter,
|
|
6938
7709
|
hostGeometry,
|
|
6939
7710
|
onSchemeToggle = () => {},
|
|
7711
|
+
onSchemeDragStart = () => undefined,
|
|
6940
7712
|
onThemeDisable = () => {},
|
|
6941
7713
|
onPreferenceChange = () => {},
|
|
7714
|
+
onPreferencePreview = () => {},
|
|
6942
7715
|
onVisualReset = () => {},
|
|
6943
7716
|
getConversationScalePreview = () => ({ visible: false, reason: 'unmeasured', mode: 'hidden' }),
|
|
6944
7717
|
onRetrySave = () => {},
|
|
@@ -6949,14 +7722,71 @@ let shell
|
|
|
6949
7722
|
let navRail
|
|
6950
7723
|
let railLauncher
|
|
6951
7724
|
let railMode
|
|
7725
|
+
let railViewport
|
|
7726
|
+
let railDefaultHidden = false
|
|
6952
7727
|
let railViewportQuery
|
|
6953
7728
|
let settingsOverlay
|
|
6954
7729
|
let schemeToggle
|
|
7730
|
+
let schemeIntent
|
|
7731
|
+
let schemePressRevision = 0
|
|
7732
|
+
let schemePressAnimation
|
|
7733
|
+
let schemePointer
|
|
7734
|
+
let suppressSchemeClick = false
|
|
7735
|
+
let suppressSchemeClickTimer
|
|
6955
7736
|
let themeDisable
|
|
6956
7737
|
let connectionIndicator
|
|
6957
7738
|
let conversationObserver
|
|
6958
7739
|
let schemeObserver
|
|
6959
7740
|
let operationRegion
|
|
7741
|
+
const schemePressDelays = new Set()
|
|
7742
|
+
function reducedMotion() {
|
|
7743
|
+
if (root.dataset.prtsMotion === 'reduced') return true
|
|
7744
|
+
try { return window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches === true } catch { return false }
|
|
7745
|
+
}
|
|
7746
|
+
function playSchemePress() {
|
|
7747
|
+
if (!schemeToggle || reducedMotion()) return
|
|
7748
|
+
const revision = ++schemePressRevision
|
|
7749
|
+
schemePressAnimation?.cancel?.()
|
|
7750
|
+
schemePressAnimation = undefined
|
|
7751
|
+
schemeToggle.removeAttribute('data-prts-scheme-press')
|
|
7752
|
+
if (typeof schemeToggle.animate === 'function') {
|
|
7753
|
+
const animation = schemeToggle.animate([
|
|
7754
|
+
{ transform: 'translateY(0) scale(1)' },
|
|
7755
|
+
{ transform: 'translateY(0) scale(.96)', offset: 0.5 },
|
|
7756
|
+
{ transform: 'translateY(0) scale(1)' },
|
|
7757
|
+
], { duration: 100, easing: 'cubic-bezier(.22, 1, .36, 1)' })
|
|
7758
|
+
schemePressAnimation = animation
|
|
7759
|
+
Promise.resolve(animation.finished).catch(() => {}).finally(() => {
|
|
7760
|
+
if (revision === schemePressRevision && schemePressAnimation === animation) schemePressAnimation = undefined
|
|
7761
|
+
})
|
|
7762
|
+
return
|
|
7763
|
+
}
|
|
7764
|
+
schemeToggle.setAttribute('data-prts-scheme-press', '')
|
|
7765
|
+
const entry = { timer: undefined }
|
|
7766
|
+
entry.timer = window.setTimeout(() => {
|
|
7767
|
+
schemePressDelays.delete(entry)
|
|
7768
|
+
if (revision === schemePressRevision) schemeToggle?.removeAttribute('data-prts-scheme-press')
|
|
7769
|
+
}, 100)
|
|
7770
|
+
schemePressDelays.add(entry)
|
|
7771
|
+
}
|
|
7772
|
+
function clearSchemePressDelays() {
|
|
7773
|
+
schemePressRevision += 1
|
|
7774
|
+
schemePressAnimation?.cancel?.()
|
|
7775
|
+
schemePressAnimation = undefined
|
|
7776
|
+
schemeToggle?.removeAttribute('data-prts-scheme-press')
|
|
7777
|
+
for (const entry of schemePressDelays) {
|
|
7778
|
+
window.clearTimeout(entry.timer)
|
|
7779
|
+
}
|
|
7780
|
+
schemePressDelays.clear()
|
|
7781
|
+
}
|
|
7782
|
+
function schemeTarget() {
|
|
7783
|
+
const current = schemeIntent ?? (root.dataset.prtsScheme === 'dark' ? 'dark' : 'light')
|
|
7784
|
+
return current === 'dark' ? 'light' : 'dark'
|
|
7785
|
+
}
|
|
7786
|
+
function schemeOrigin() {
|
|
7787
|
+
const rect = schemeToggle?.getBoundingClientRect?.()
|
|
7788
|
+
return rect ? { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 } : undefined
|
|
7789
|
+
}
|
|
6960
7790
|
function syncConversationState() {
|
|
6961
7791
|
if (!operationRegion) return
|
|
6962
7792
|
const candidate = operationRegion.querySelector(
|
|
@@ -6966,12 +7796,112 @@ const active = Boolean(candidate)
|
|
|
6966
7796
|
root.dataset.prtsConversationState = active ? 'active' : 'idle'
|
|
6967
7797
|
settingsOverlay?.refreshScalePreview()
|
|
6968
7798
|
}
|
|
6969
|
-
function toggleScheme() {
|
|
6970
|
-
|
|
7799
|
+
function toggleScheme(event) {
|
|
7800
|
+
if (suppressSchemeClick) {
|
|
7801
|
+
event?.preventDefault?.()
|
|
7802
|
+
return
|
|
7803
|
+
}
|
|
7804
|
+
const next = schemeTarget()
|
|
7805
|
+
schemeIntent = next
|
|
7806
|
+
playSchemePress()
|
|
7807
|
+
let request
|
|
7808
|
+
try { request = onSchemeToggle(next, { origin: schemeOrigin() }) } catch { request = undefined }
|
|
7809
|
+
Promise.resolve(request).catch(() => {}).finally(() => {
|
|
7810
|
+
if (schemeIntent === next) schemeIntent = undefined
|
|
7811
|
+
})
|
|
7812
|
+
}
|
|
7813
|
+
function schemePointerProgress(event) {
|
|
7814
|
+
const width = Math.max(1, Number(window.innerWidth) || Number(root.clientWidth) || 1)
|
|
7815
|
+
return Math.min(1, Math.max(0, Number(event?.clientX) / width || 0))
|
|
7816
|
+
}
|
|
7817
|
+
function clearSchemeClickSuppression() {
|
|
7818
|
+
if (suppressSchemeClickTimer !== undefined) window.clearTimeout(suppressSchemeClickTimer)
|
|
7819
|
+
suppressSchemeClickTimer = undefined
|
|
7820
|
+
suppressSchemeClick = false
|
|
7821
|
+
}
|
|
7822
|
+
function suppressNextSchemeClick() {
|
|
7823
|
+
clearSchemeClickSuppression()
|
|
7824
|
+
suppressSchemeClick = true
|
|
7825
|
+
suppressSchemeClickTimer = window.setTimeout(() => {
|
|
7826
|
+
suppressSchemeClickTimer = undefined
|
|
7827
|
+
suppressSchemeClick = false
|
|
7828
|
+
}, 0)
|
|
7829
|
+
}
|
|
7830
|
+
function settleSchemePointer({ commit = false } = {}) {
|
|
7831
|
+
const pointer = schemePointer
|
|
7832
|
+
if (!pointer) return
|
|
7833
|
+
schemePointer = undefined
|
|
7834
|
+
try { schemeToggle?.releasePointerCapture?.(pointer.pointerId) } catch {}
|
|
7835
|
+
if (!pointer.dragging) return
|
|
7836
|
+
suppressNextSchemeClick()
|
|
7837
|
+
let result
|
|
7838
|
+
try { result = pointer.gesture?.finish?.(commit) } catch { result = undefined }
|
|
7839
|
+
Promise.resolve(result).catch(() => {}).finally(() => {
|
|
7840
|
+
if (schemeIntent === pointer.target) schemeIntent = undefined
|
|
7841
|
+
})
|
|
7842
|
+
}
|
|
7843
|
+
function onSchemePointerDown(event) {
|
|
7844
|
+
if ((event.button ?? 0) !== 0 || schemePointer) return
|
|
7845
|
+
const pointerId = event.pointerId ?? 1
|
|
7846
|
+
schemePointer = {
|
|
7847
|
+
pointerId,
|
|
7848
|
+
startX: Number(event.clientX) || 0,
|
|
7849
|
+
startY: Number(event.clientY) || 0,
|
|
7850
|
+
target: schemeTarget(),
|
|
7851
|
+
origin: schemeOrigin(),
|
|
7852
|
+
dragging: false,
|
|
7853
|
+
gesture: undefined,
|
|
7854
|
+
}
|
|
7855
|
+
try { schemeToggle?.setPointerCapture?.(pointerId) } catch {}
|
|
7856
|
+
}
|
|
7857
|
+
function onSchemePointerMove(event) {
|
|
7858
|
+
const pointer = schemePointer
|
|
7859
|
+
if (!pointer || (event.pointerId ?? 1) !== pointer.pointerId) return
|
|
7860
|
+
const deltaX = (Number(event.clientX) || 0) - pointer.startX
|
|
7861
|
+
if (!pointer.dragging) {
|
|
7862
|
+
if (deltaX < 8) return
|
|
7863
|
+
pointer.dragging = true
|
|
7864
|
+
schemeIntent = pointer.target
|
|
7865
|
+
playSchemePress()
|
|
7866
|
+
const progress = schemePointerProgress(event)
|
|
7867
|
+
try {
|
|
7868
|
+
pointer.gesture = onSchemeDragStart(pointer.target, {
|
|
7869
|
+
origin: pointer.origin,
|
|
7870
|
+
progress,
|
|
7871
|
+
clientX: Number(event.clientX) || 0,
|
|
7872
|
+
})
|
|
7873
|
+
} catch {
|
|
7874
|
+
pointer.gesture = undefined
|
|
7875
|
+
}
|
|
7876
|
+
}
|
|
7877
|
+
event.preventDefault?.()
|
|
7878
|
+
pointer.gesture?.update?.(schemePointerProgress(event))
|
|
7879
|
+
}
|
|
7880
|
+
function onSchemePointerUp(event) {
|
|
7881
|
+
const pointer = schemePointer
|
|
7882
|
+
if (!pointer || (event.pointerId ?? 1) !== pointer.pointerId) return
|
|
7883
|
+
const commit = pointer.dragging && schemePointerProgress(event) >= .5
|
|
7884
|
+
settleSchemePointer({ commit })
|
|
7885
|
+
}
|
|
7886
|
+
function cancelSchemePointer() {
|
|
7887
|
+
const pointer = schemePointer
|
|
7888
|
+
if (!pointer) return
|
|
7889
|
+
if (pointer.dragging) {
|
|
7890
|
+
try { pointer.gesture?.cancel?.() } catch {}
|
|
7891
|
+
}
|
|
7892
|
+
schemePointer = undefined
|
|
7893
|
+
try { schemeToggle?.releasePointerCapture?.(pointer.pointerId) } catch {}
|
|
7894
|
+
if (pointer.dragging) suppressNextSchemeClick()
|
|
7895
|
+
if (schemeIntent === pointer.target) schemeIntent = undefined
|
|
7896
|
+
}
|
|
7897
|
+
function onSchemeLostPointerCapture(event) {
|
|
7898
|
+
if (!schemePointer || (event.pointerId ?? 1) !== schemePointer.pointerId) return
|
|
7899
|
+
cancelSchemePointer()
|
|
6971
7900
|
}
|
|
6972
7901
|
function syncSchemeToggle() {
|
|
6973
7902
|
if (!schemeToggle) return
|
|
6974
7903
|
const current = root.dataset.prtsScheme === 'dark' ? 'dark' : 'light'
|
|
7904
|
+
if (schemeIntent === current) schemeIntent = undefined
|
|
6975
7905
|
schemeToggle.dataset.prtsSchemeCurrent = current
|
|
6976
7906
|
schemeToggle.setAttribute('aria-label', current === 'dark' ? '切换到日间模式' : '切换到夜间模式')
|
|
6977
7907
|
}
|
|
@@ -7006,13 +7936,16 @@ if (root.hasAttribute('data-prts-rail-open')) navRail?.querySelector('button')?.
|
|
|
7006
7936
|
if (window?.requestAnimationFrame) window.requestAnimationFrame(focusFirst)
|
|
7007
7937
|
else window?.setTimeout?.(focusFirst, 0)
|
|
7008
7938
|
}
|
|
7009
|
-
function setRailViewport(width = window.innerWidth) {
|
|
7010
|
-
const
|
|
7011
|
-
|
|
7939
|
+
function setRailViewport(width = window.innerWidth, { forceClose = false } = {}) {
|
|
7940
|
+
const nextViewport = Number(width) >= 1180 ? 'wide' : 'narrow'
|
|
7941
|
+
const viewportChanged = nextViewport !== railViewport
|
|
7942
|
+
const nextMode = railDefaultHidden || nextViewport === 'narrow' ? 'overlay' : 'docked'
|
|
7943
|
+
const modeChanged = nextMode !== railMode
|
|
7944
|
+
if (!viewportChanged && !modeChanged && !forceClose) return railMode
|
|
7945
|
+
railViewport = nextViewport
|
|
7012
7946
|
railMode = nextMode
|
|
7013
7947
|
root.dataset.prtsRailMode = nextMode
|
|
7014
|
-
|
|
7015
|
-
else root.removeAttribute('data-prts-rail-open')
|
|
7948
|
+
root.removeAttribute('data-prts-rail-open')
|
|
7016
7949
|
syncRailState()
|
|
7017
7950
|
return nextMode
|
|
7018
7951
|
}
|
|
@@ -7027,13 +7960,11 @@ closeRail({ returnFocus: true })
|
|
|
7027
7960
|
}
|
|
7028
7961
|
function onDocumentClick(event) {
|
|
7029
7962
|
if (railMode !== 'overlay' || !root.hasAttribute('data-prts-rail-open')) return
|
|
7030
|
-
|
|
7963
|
+
const settingsPanel = shell?.querySelector?.('[data-prts-theme-settings]')
|
|
7964
|
+
const insideSettingsContent = settingsPanel?.contains?.(event.target) && event.target !== settingsPanel
|
|
7965
|
+
if (navRail?.contains?.(event.target) || railLauncher?.contains?.(event.target) || insideSettingsContent) return
|
|
7031
7966
|
closeRail()
|
|
7032
7967
|
}
|
|
7033
|
-
function onRailAction(event) {
|
|
7034
|
-
const action = event.target?.closest?.('[data-prts-rail-brand], [data-prts-scheme-toggle]')
|
|
7035
|
-
if (action && navRail?.contains?.(action)) closeRail()
|
|
7036
|
-
}
|
|
7037
7968
|
function onResponsiveChange() {
|
|
7038
7969
|
setRailViewport(window.innerWidth)
|
|
7039
7970
|
settingsOverlay?.scheduleScalePreviewRefresh?.()
|
|
@@ -7066,6 +7997,7 @@ trigger: shell.querySelector('[data-prts-rail-brand]'),
|
|
|
7066
7997
|
panel: shell.querySelector('[data-prts-theme-settings]'),
|
|
7067
7998
|
backdrop: shell.querySelector('[data-prts-settings-backdrop]'),
|
|
7068
7999
|
onPreferenceChange,
|
|
8000
|
+
onPreferencePreview,
|
|
7069
8001
|
onResetVisual: onVisualReset,
|
|
7070
8002
|
onRetrySave,
|
|
7071
8003
|
getConversationScalePreview,
|
|
@@ -7080,21 +8012,34 @@ conversationObserver.observe(operationRegion, { childList: true, subtree: true,
|
|
|
7080
8012
|
schemeObserver = new window.MutationObserver(syncSchemeToggle)
|
|
7081
8013
|
schemeObserver.observe(root, { attributes: true, attributeFilter: ['data-prts-scheme'] })
|
|
7082
8014
|
railLauncher.addEventListener('click', toggleRail)
|
|
7083
|
-
navRail.addEventListener('click', onRailAction)
|
|
7084
8015
|
document.addEventListener('keydown', onRailKeydown)
|
|
7085
8016
|
document.addEventListener('click', onDocumentClick)
|
|
7086
8017
|
schemeToggle.addEventListener('click', toggleScheme)
|
|
8018
|
+
schemeToggle.addEventListener('pointerdown', onSchemePointerDown)
|
|
8019
|
+
schemeToggle.addEventListener('pointermove', onSchemePointerMove)
|
|
8020
|
+
schemeToggle.addEventListener('pointerup', onSchemePointerUp)
|
|
8021
|
+
schemeToggle.addEventListener('pointercancel', cancelSchemePointer)
|
|
8022
|
+
schemeToggle.addEventListener('lostpointercapture', onSchemeLostPointerCapture)
|
|
8023
|
+
window.addEventListener?.('blur', cancelSchemePointer)
|
|
7087
8024
|
themeDisable.addEventListener('click', disableTheme)
|
|
7088
8025
|
syncConversationState()
|
|
7089
8026
|
syncSchemeToggle()
|
|
7090
8027
|
return true
|
|
7091
8028
|
}
|
|
7092
8029
|
function dispose() {
|
|
8030
|
+
cancelSchemePointer()
|
|
8031
|
+
clearSchemeClickSuppression()
|
|
8032
|
+
clearSchemePressDelays()
|
|
7093
8033
|
railLauncher?.removeEventListener('click', toggleRail)
|
|
7094
|
-
navRail?.removeEventListener('click', onRailAction)
|
|
7095
8034
|
document.removeEventListener('keydown', onRailKeydown)
|
|
7096
8035
|
document.removeEventListener('click', onDocumentClick)
|
|
7097
8036
|
schemeToggle?.removeEventListener('click', toggleScheme)
|
|
8037
|
+
schemeToggle?.removeEventListener('pointerdown', onSchemePointerDown)
|
|
8038
|
+
schemeToggle?.removeEventListener('pointermove', onSchemePointerMove)
|
|
8039
|
+
schemeToggle?.removeEventListener('pointerup', onSchemePointerUp)
|
|
8040
|
+
schemeToggle?.removeEventListener('pointercancel', cancelSchemePointer)
|
|
8041
|
+
schemeToggle?.removeEventListener('lostpointercapture', onSchemeLostPointerCapture)
|
|
8042
|
+
window.removeEventListener?.('blur', cancelSchemePointer)
|
|
7098
8043
|
themeDisable?.removeEventListener('click', disableTheme)
|
|
7099
8044
|
railViewportQuery?.removeEventListener?.('change', onResponsiveChange)
|
|
7100
8045
|
railViewportQuery = undefined
|
|
@@ -7106,7 +8051,10 @@ shell?.remove()
|
|
|
7106
8051
|
root.removeAttribute('data-prts-conversation-state')
|
|
7107
8052
|
root.removeAttribute('data-prts-rail-mode')
|
|
7108
8053
|
root.removeAttribute('data-prts-rail-open')
|
|
7109
|
-
|
|
8054
|
+
root.removeAttribute('data-prts-rail-default-hidden')
|
|
8055
|
+
navRail = railLauncher = railMode = railViewport = undefined
|
|
8056
|
+
railDefaultHidden = false
|
|
8057
|
+
schemeIntent = undefined
|
|
7110
8058
|
shell = settingsOverlay = schemeToggle = themeDisable = connectionIndicator = undefined
|
|
7111
8059
|
conversationObserver = schemeObserver = undefined
|
|
7112
8060
|
operationRegion = undefined
|
|
@@ -7119,7 +8067,12 @@ if (!preferences?.enabled) {
|
|
|
7119
8067
|
dispose()
|
|
7120
8068
|
return false
|
|
7121
8069
|
}
|
|
8070
|
+
const nextRailDefaultHidden = Boolean(preferences.railDefaultHidden)
|
|
8071
|
+
const railPreferenceChanged = nextRailDefaultHidden !== railDefaultHidden
|
|
8072
|
+
railDefaultHidden = nextRailDefaultHidden
|
|
7122
8073
|
if (!mount()) return false
|
|
8074
|
+
root.toggleAttribute('data-prts-rail-default-hidden', railDefaultHidden)
|
|
8075
|
+
setRailViewport(window.innerWidth, { forceClose: railPreferenceChanged })
|
|
7123
8076
|
const connection = status?.connection || 'unknown'
|
|
7124
8077
|
const connectionLabel = status?.connectionLabel || '未知'
|
|
7125
8078
|
connectionIndicator.dataset.state = connection
|
|
@@ -7160,7 +8113,6 @@ startupTimings,
|
|
|
7160
8113
|
const safeMode = isSafeMode(window?.location?.search ?? '')
|
|
7161
8114
|
const storage = window?.localStorage
|
|
7162
8115
|
const themeService = contextService(ctx, 'theme')
|
|
7163
|
-
const theme = createThemeController({ document, window, cssText, service: themeService })
|
|
7164
8116
|
const startup = createPrtsStartupSequence({ document, window, prtsEmblem: assets.prtsEmblem, rhodesEmblem: assets.emblem, timings: startupTimings })
|
|
7165
8117
|
const composerGlass = createComposerGlassAdapter({ document, window })
|
|
7166
8118
|
const assistantGlass = createAssistantGlassAdapter({ document, window })
|
|
@@ -7175,6 +8127,15 @@ status = { ...status, particle: next }
|
|
|
7175
8127
|
sync()
|
|
7176
8128
|
},
|
|
7177
8129
|
})
|
|
8130
|
+
const theme = createThemeController({
|
|
8131
|
+
document,
|
|
8132
|
+
window,
|
|
8133
|
+
cssText,
|
|
8134
|
+
service: themeService,
|
|
8135
|
+
onTransitionStateChange(active) {
|
|
8136
|
+
particleField.setSchemeTransitionActive(active)
|
|
8137
|
+
},
|
|
8138
|
+
})
|
|
7178
8139
|
const sessions = contextService(ctx, 'sessions')
|
|
7179
8140
|
const toBottom = createToBottomAdapter({ document, window })
|
|
7180
8141
|
const conversationControls = createConversationControlAdapter({ document, window })
|
|
@@ -7266,8 +8227,11 @@ return
|
|
|
7266
8227
|
if (!themeAlreadyApplied) theme.apply(preferences)
|
|
7267
8228
|
operations ||= createOperationsShell({
|
|
7268
8229
|
document, window, assets, adapter, hostGeometry,
|
|
7269
|
-
onSchemeToggle(next) {
|
|
7270
|
-
theme.setTheme(next)
|
|
8230
|
+
onSchemeToggle(next, interaction) {
|
|
8231
|
+
return theme.setTheme(next, { ...interaction, animate: true })
|
|
8232
|
+
},
|
|
8233
|
+
onSchemeDragStart(next, interaction) {
|
|
8234
|
+
return theme.beginThemeTransition(next, interaction)
|
|
7271
8235
|
},
|
|
7272
8236
|
onThemeDisable() {
|
|
7273
8237
|
persistAndApply(updatePreferenceValue(preferences, 'enabled', false))
|
|
@@ -7275,6 +8239,10 @@ persistAndApply(updatePreferenceValue(preferences, 'enabled', false))
|
|
|
7275
8239
|
onPreferenceChange(key, value) {
|
|
7276
8240
|
persistAndApply(updatePreferenceValue(preferences, key, value))
|
|
7277
8241
|
},
|
|
8242
|
+
onPreferencePreview(key, value) {
|
|
8243
|
+
if (key !== 'particleTraversalSpeed') return
|
|
8244
|
+
particleField.update(updatePreferenceValue(preferences, key, value))
|
|
8245
|
+
},
|
|
7278
8246
|
onVisualReset() {
|
|
7279
8247
|
persistAndApply({
|
|
7280
8248
|
...DEFAULT_PREFERENCES,
|