@ash-qw/dsh-theme-prts 0.1.92 → 0.1.94

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/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.92";
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.94";
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: 50%; width: 24px; height: 88px; opacity: .58; transform: translateY(-50%); touch-action: none}html[data-dsh-prts] [data-prts-rail-launcher] > span{opacity: 0}html[data-dsh-prts] [data-prts-rail-launcher][data-prts-rail-gesture-active]{width: 40px; opacity: 1}html[data-dsh-prts] [data-prts-rail-gesture-cue]{position: absolute; inset: calc(27px + var(--prts-rail-gesture-progress,0px)) 10px auto auto; display: block; opacity: 0; font: 700 14px/8px sans-serif}html[data-dsh-prts] [data-prts-rail-gesture-active] [data-prts-rail-gesture-cue]{opacity: 1; animation: prts-rail-swipe-cue 720ms ease-in-out infinite}html[data-dsh-prts] [data-prts-rail-gesture-ready] [data-prts-rail-gesture-cue]{filter: drop-shadow(0 0 3px currentColor)}}@keyframes prts-rail-swipe-cue{50%{opacity: .45}}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-region=\"frame\"][data-sidebar-collapsed] [data-prts-region=\"sessions\"] :is( [data-slot=\"sidebar.workspaces\"],[data-slot=\"sidebar.settings\"] ){opacity: 0; pointer-events: none}html[data-dsh-prts] [data-sidebar-collapsed] :is([data-prts-owned-facility],[data-prts-owned-facility-spine],[data-prts-owned-facility-vector]){visibility: hidden; content-visibility: hidden}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: hidden auto; background: transparent !important; color: var(--prts-ink)}html[data-dsh-prts] [data-prts-region=\"sessions\"] [data-slot=\"sidebar.workspaces\"] [role=\"tree\"]{overflow-x: hidden}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; container: prts-plugin-settings / inline-size; 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}}@container prts-plugin-settings (max-width: 22rem){html[data-dsh-prts-settings] .prts-plugin-settings__row{flex-direction: column; align-items: stretch; gap: 10px}html[data-dsh-prts-settings] .prts-plugin-settings button[role='switch']{align-self: flex-end}}@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: 6,
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: 6,
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,45 @@ 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
+ if (phoneStatic()) return 0
1440
+ const numeric = Number(value?.particleTraversalSpeed)
1441
+ return Number.isFinite(numeric) ? clamp(numeric, 0, 2) : 1
1442
+ }
1443
+ function currentScrollTop() {
1444
+ return Number(scroller?.scrollTop) || 0
1445
+ }
1446
+ function traversalViewport() {
1447
+ return Math.max(1, Number(scroller?.clientHeight) || height)
1448
+ }
1449
+ function traversalCoordinate(value = preferences) {
1450
+ return traversalOffset + currentScrollTop() * particleTraversalSpeed(value) / traversalViewport()
1451
+ }
1419
1452
  function scrollProgress() {
1420
1453
  if (!scroller) return 0
1421
- const viewport = Math.max(1, Number(scroller.clientHeight) || height)
1422
- const raw = (Number(scroller.scrollTop) || 0) / viewport
1423
- return raw - Math.floor(raw)
1454
+ const coordinate = traversalCoordinate()
1455
+ return coordinate - Math.floor(coordinate)
1456
+ }
1457
+ function restoreTraversalFromScroll() {
1458
+ traversalOffset = 0
1459
+ const coordinate = traversalCoordinate()
1460
+ segment = Math.floor(coordinate)
1461
+ side = sideForSegment(segment)
1462
+ pendingSegment = undefined
1463
+ transition = undefined
1464
+ transitionStartedAt = undefined
1465
+ }
1466
+ function reanchorTraversal(coordinate = traversalCoordinate()) {
1467
+ if (transition) {
1468
+ const targetSegment = transition.targetSegment
1469
+ side = sideForSegment(targetSegment)
1470
+ transition = undefined
1471
+ transitionStartedAt = undefined
1472
+ commitTransitionTargets(targetSegment, true)
1473
+ }
1474
+ pendingSegment = undefined
1475
+ traversalOffset = coordinate - currentScrollTop() * particleTraversalSpeed() / traversalViewport()
1476
+ if (particles.length) snapParticlesToCurrentLayout()
1424
1477
  }
1425
1478
  function anchorFor(sideValue, verticalProgress) {
1426
1479
  if (phoneStatic()) return { horizontalProgress: 0.5, verticalProgress: 0.52 }
@@ -1908,6 +1961,19 @@ resizeObservations += 1
1908
1961
  const entry = entries.find(candidate => candidate.target === operation) ?? entries[0]
1909
1962
  const contentRect = entry?.contentRect
1910
1963
  pendingResizeSize = contentRect ? sizeFromRect(contentRect) : readOperationSize()
1964
+ if (phoneStatic()) {
1965
+ const nextSize = pendingResizeSize
1966
+ clearResizeState()
1967
+ const changed = applyFieldSize(nextSize)
1968
+ if (changed && particles.length) snapParticlesToCurrentLayout()
1969
+ resizeCommits += changed ? 1 : 0
1970
+ syncCanvasBackingStore()
1971
+ geometryDirty = false
1972
+ cancelFrame()
1973
+ draw(Number(window.performance?.now?.()) || 0)
1974
+ cancelFrame()
1975
+ return
1976
+ }
1911
1977
  if (resizeFrame !== undefined) return
1912
1978
  resizeFrame = window.requestAnimationFrame?.(() => {
1913
1979
  resizeFrame = undefined
@@ -2183,6 +2249,7 @@ pendingSegment = targetSegment
2183
2249
  return
2184
2250
  }
2185
2251
  const targetSide = sideForSegment(targetSegment)
2252
+ const direction = targetSegment > segment ? 1 : -1
2186
2253
  if (targetSide === side || motionReduced() || phoneStatic()) {
2187
2254
  side = targetSide
2188
2255
  transition = undefined
@@ -2199,7 +2266,7 @@ transition = {
2199
2266
  ...population,
2200
2267
  fromSide: side,
2201
2268
  toSide: targetSide,
2202
- direction: targetSegment > segment ? 1 : -1,
2269
+ direction,
2203
2270
  targetSegment,
2204
2271
  progress: 0,
2205
2272
  }
@@ -2207,9 +2274,26 @@ transitionStartedAt = undefined
2207
2274
  pointerActive = false
2208
2275
  scheduleFrame()
2209
2276
  }
2277
+ function retargetTransition(targetSegment) {
2278
+ if (!transition || targetSegment === transition.targetSegment) return
2279
+ const population = prepareTransitionTargets(targetSegment)
2280
+ if (!population.toCount) {
2281
+ reportState({ phase: 'error', error: '徽记资源异常' })
2282
+ return
2283
+ }
2284
+ transition = {
2285
+ ...transition,
2286
+ ...population,
2287
+ toSide: sideForSegment(targetSegment),
2288
+ direction: targetSegment >= segment ? 1 : -1,
2289
+ targetSegment,
2290
+ }
2291
+ pendingSegment = undefined
2292
+ }
2210
2293
  function resetTraversal() {
2211
2294
  side = -1
2212
2295
  segment = 0
2296
+ traversalOffset = -currentScrollTop() * particleTraversalSpeed() / traversalViewport()
2213
2297
  pendingSegment = undefined
2214
2298
  queuedDensityCount = undefined
2215
2299
  queuedTargetRefresh = false
@@ -2237,6 +2321,9 @@ const fromSize = heroLogoSize()
2237
2321
  heroMarker = undefined
2238
2322
  heroActive = false
2239
2323
  scroller?.removeAttribute('data-prts-hero-active')
2324
+ side = -1
2325
+ segment = 0
2326
+ traversalOffset = -currentScrollTop() * particleTraversalSpeed() / traversalViewport()
2240
2327
  pendingSegment = undefined
2241
2328
  queuedDensityCount = undefined
2242
2329
  queuedTargetRefresh = false
@@ -2275,14 +2362,13 @@ return
2275
2362
  if (heroActive) leaveHero()
2276
2363
  }
2277
2364
  function onScroll() {
2278
- if (!scroller) return
2365
+ if (!scroller || phoneStatic()) return
2279
2366
  if (heroActive) {
2280
2367
  scheduleFrame()
2281
2368
  return
2282
2369
  }
2283
- const viewport = Math.max(1, Number(scroller.clientHeight) || height)
2284
- const desiredSegment = Math.floor(((Number(scroller.scrollTop) || 0) + 1) / viewport)
2285
- if (transition) pendingSegment = desiredSegment
2370
+ const desiredSegment = Math.floor(traversalCoordinate())
2371
+ if (transition) retargetTransition(desiredSegment)
2286
2372
  else if (desiredSegment !== segment) startTransition(desiredSegment)
2287
2373
  scheduleFrame()
2288
2374
  }
@@ -2320,6 +2406,7 @@ hydrationPaused = false
2320
2406
  updateFrameGate()
2321
2407
  }
2322
2408
  function registerContentMutations(mutations) {
2409
+ if (phoneStatic()) return
2323
2410
  let weight = mutations.length
2324
2411
  for (const mutation of mutations) {
2325
2412
  for (const node of [...mutation.addedNodes, ...mutation.removedNodes]) {
@@ -2425,8 +2512,34 @@ mutationBurstTimer = undefined
2425
2512
  mutationBurstScore = 0
2426
2513
  cancelFrame()
2427
2514
  }
2515
+ function rebindScroller(nextScroller) {
2516
+ scroller?.removeAttribute('data-prts-hero-active')
2517
+ scroller?.removeEventListener('scroll', onScroll)
2518
+ cancelHydrationResume()
2519
+ hydrationPaused = false
2520
+ mutationBurstScore = 0
2521
+ if (mutationBurstTimer !== undefined) window.clearTimeout?.(mutationBurstTimer)
2522
+ mutationBurstTimer = undefined
2523
+ heroMarker = undefined
2524
+ heroActive = false
2525
+ scroller = nextScroller
2526
+ scroller.addEventListener('scroll', onScroll, { passive: true })
2527
+ syncHeroState()
2528
+ if (!heroActive) {
2529
+ resetTraversal()
2530
+ if (!phoneStatic()) restoreTraversalFromScroll()
2531
+ commitTransitionTargets(segment, true)
2532
+ }
2533
+ scheduleFrame()
2534
+ }
2428
2535
  function mount(nextOperation, nextScroller) {
2429
- if (operation === nextOperation && scroller === nextScroller && ambient?.isConnected && canvas?.isConnected) return
2536
+ if (operation === nextOperation && ambient?.isConnected && canvas?.isConnected) {
2537
+ if (scroller === nextScroller) return
2538
+ if (nextScroller) {
2539
+ rebindScroller(nextScroller)
2540
+ return
2541
+ }
2542
+ }
2430
2543
  unmount()
2431
2544
  operation = nextOperation
2432
2545
  scroller = nextScroller
@@ -2436,12 +2549,13 @@ ambient = created.layer
2436
2549
  glow = created.glow
2437
2550
  canvas = document.createElement('canvas')
2438
2551
  canvas.setAttribute('data-prts-particle-layer', '')
2439
- canvas.setAttribute('aria-label', '随对话滚动轮换阵营标识的粒子画布')
2552
+ canvas.setAttribute('aria-label', phoneStatic() ? '静态阵营标识粒子画布' : '随对话滚动轮换阵营标识的粒子画布')
2440
2553
  canvas.style.visibility = 'hidden'
2441
2554
  if (typeof window.CanvasRenderingContext2D === 'function') context = canvas.getContext('2d')
2442
2555
  targetCache.clear()
2443
2556
  initializeFieldSize()
2444
2557
  syncHeroState()
2558
+ if (!heroActive) restoreTraversalFromScroll()
2445
2559
  if (!particles.length && maskRecords.length) buildParticles()
2446
2560
  if (context && particles.length) {
2447
2561
  syncCanvasBackingStore()
@@ -2502,8 +2616,19 @@ mediaQuery?.addEventListener?.('change', mediaListener)
2502
2616
  if (!mediaQuery?.addEventListener) mediaQuery?.addListener?.(mediaListener)
2503
2617
  document.addEventListener?.('visibilitychange', onVisibilityChange)
2504
2618
  return {
2619
+ setSchemeTransitionActive(active) {
2620
+ const next = Boolean(active)
2621
+ if (schemeTransitionPaused === next) return
2622
+ schemeTransitionPaused = next
2623
+ updateFrameGate()
2624
+ },
2505
2625
  update(nextPreferences = {}) {
2506
2626
  const previousPreferences = preferences
2627
+ const traversalSpeedChanged = previousPreferences.particleTraversalSpeed !== undefined
2628
+ && particleTraversalSpeed(previousPreferences) !== particleTraversalSpeed(nextPreferences)
2629
+ const preservedTraversalCoordinate = traversalSpeedChanged && scroller && !heroActive
2630
+ ? traversalCoordinate(previousPreferences)
2631
+ : undefined
2507
2632
  preferences = nextPreferences
2508
2633
  disposed = false
2509
2634
  if (!preferences.enabled) {
@@ -2521,6 +2646,7 @@ const previousActiveDensity = heroActive
2521
2646
  const activeDensityChanged = previousActiveDensity !== undefined && previousActiveDensity !== activeDensity()
2522
2647
  reportState({ requestedPattern: 'orthogonal' })
2523
2648
  if (particles.length && activeDensityChanged) scheduleDensityReassembly(targetParticleCount(), true)
2649
+ if (preservedTraversalCoordinate !== undefined && scroller && !heroActive) reanchorTraversal(preservedTraversalCoordinate)
2524
2650
  if (!mutationObserver && window.MutationObserver && document.body) {
2525
2651
  const observationRoot = document.querySelector('[data-slot="root"]')
2526
2652
  ?? document.querySelector('[data-prts-region="frame"]')
@@ -2558,6 +2684,10 @@ side,
2558
2684
  emblemKey: (heroActive || transition?.fromHero ? heroEmblem() : emblemForSegment(segment))?.key,
2559
2685
  nextEmblemKey: transition ? emblemForSegment(transition.targetSegment)?.key : null,
2560
2686
  segment,
2687
+ traversalSpeed: particleTraversalSpeed(),
2688
+ traversalOffset,
2689
+ traversalCoordinate: traversalCoordinate(),
2690
+ traversalProgress: scrollProgress(),
2561
2691
  transition: transition ? {
2562
2692
  fromSide: transition.fromSide,
2563
2693
  toSide: transition.toSide,
@@ -2574,6 +2704,7 @@ density: activeDensity() || 'standard',
2574
2704
  firstFrameReady: canvas?.hasAttribute('data-prts-particle-ready') === true,
2575
2705
  hydrationPaused,
2576
2706
  sleeping: Boolean(context && particles.length && frame === undefined && canRenderFrame() && !motionReduced() && !phoneStatic()),
2707
+ schemeTransitionPaused,
2577
2708
  pointer: {
2578
2709
  active: pointerActive,
2579
2710
  clientX: pointerClientX,
@@ -2902,6 +3033,8 @@ const PREVIEW_TOUCH_DURATION = 1200
2902
3033
  const SNAP_DELAY = 110
2903
3034
  const TOUCH_WAVE_DURATION = 620
2904
3035
  const HISTORY_PAGE_SETTLE_LIMIT = 4000
3036
+ const GEOMETRY_SETTLE_FRAME_LIMIT = 8
3037
+ const GEOMETRY_SETTLE_STABLE_FRAMES = 2
2905
3038
  let scaleInstanceSeed = 0
2906
3039
  function clamp(value, minimum, maximum) {
2907
3040
  return Math.min(maximum, Math.max(minimum, value))
@@ -3520,6 +3653,10 @@ let focusContrast = CONVERSATION_SCALE_FOCUS_CONTRAST_DEFAULT
3520
3653
  let scaleLengths = resolveConversationScaleLengths(focusContrast)
3521
3654
  let contentLeft
3522
3655
  let geometryDirty = true
3656
+ let geometrySettleFrame
3657
+ let geometrySettleFramesRemaining = 0
3658
+ let geometrySettleStableFrames = 0
3659
+ let geometrySettleSignature
3523
3660
  let observedOperationWidth
3524
3661
  let observedOperationHeight
3525
3662
  let started = false
@@ -3540,6 +3677,75 @@ else window?.clearTimeout?.(id)
3540
3677
  const currentTime = timestamp => Number.isFinite(timestamp)
3541
3678
  ? timestamp
3542
3679
  : window?.performance?.now?.() ?? Date.now()
3680
+ const phoneScaleHidden = () => Number(window?.innerWidth) <= 640
3681
+ function currentGeometrySignature() {
3682
+ if (!operation || !scroller) return undefined
3683
+ const operationBox = operation.getBoundingClientRect?.()
3684
+ const scrollerBox = scroller.getBoundingClientRect?.()
3685
+ const composerBox = composer?.getBoundingClientRect?.()
3686
+ if (!operationBox || !scrollerBox) return undefined
3687
+ const values = [
3688
+ operationBox.width,
3689
+ operationBox.height,
3690
+ scrollerBox.top - operationBox.top,
3691
+ scrollerBox.bottom - operationBox.top,
3692
+ scrollerBox.left - operationBox.left,
3693
+ scrollerBox.right - operationBox.left,
3694
+ composerBox ? composerBox.top - operationBox.top : -1,
3695
+ composerBox ? composerBox.bottom - operationBox.top : -1,
3696
+ composerBox ? composerBox.left - operationBox.left : -1,
3697
+ composerBox ? composerBox.right - operationBox.left : -1,
3698
+ ]
3699
+ if (!values.every(Number.isFinite)) return undefined
3700
+ return values.map(value => Number(value.toFixed(2))).join(':')
3701
+ }
3702
+ function sampleGeometryStabilization() {
3703
+ geometrySettleFrame = undefined
3704
+ if (!started || failed || geometrySettleFramesRemaining <= 0) return
3705
+ geometrySettleFramesRemaining -= 1
3706
+ const signature = currentGeometrySignature()
3707
+ if (signature === undefined) {
3708
+ geometrySettleStableFrames = 0
3709
+ } else if (signature !== geometrySettleSignature) {
3710
+ geometrySettleSignature = signature
3711
+ geometrySettleStableFrames = 1
3712
+ geometryDirty = true
3713
+ obstructionDirty = true
3714
+ schedule()
3715
+ } else {
3716
+ geometrySettleStableFrames += 1
3717
+ }
3718
+ if (geometrySettleStableFrames >= GEOMETRY_SETTLE_STABLE_FRAMES) {
3719
+ geometrySettleFramesRemaining = 0
3720
+ return
3721
+ }
3722
+ if (geometrySettleFramesRemaining > 0) {
3723
+ geometrySettleFrame = requestFrame(sampleGeometryStabilization)
3724
+ }
3725
+ }
3726
+ function requestGeometryStabilization() {
3727
+ if (!started || failed || phoneScaleHidden()) return
3728
+ geometrySettleFramesRemaining = GEOMETRY_SETTLE_FRAME_LIMIT
3729
+ geometrySettleStableFrames = 0
3730
+ if (geometrySettleFrame === undefined) {
3731
+ geometrySettleFrame = requestFrame(sampleGeometryStabilization)
3732
+ }
3733
+ }
3734
+ function stopGeometryStabilization() {
3735
+ cancelFrame(geometrySettleFrame)
3736
+ geometrySettleFrame = undefined
3737
+ geometrySettleFramesRemaining = 0
3738
+ geometrySettleStableFrames = 0
3739
+ geometrySettleSignature = undefined
3740
+ }
3741
+ function onHostGeometryChange() {
3742
+ if (phoneScaleHidden()) {
3743
+ stopGeometryStabilization()
3744
+ return
3745
+ }
3746
+ requestGeometryStabilization()
3747
+ schedule(true)
3748
+ }
3543
3749
  function reducedMotion() {
3544
3750
  return window?.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches
3545
3751
  || document.documentElement.dataset.prtsMotion === 'reduced'
@@ -3731,7 +3937,6 @@ if (scan) {
3731
3937
  scanPending = true
3732
3938
  fullScanPending = true
3733
3939
  }
3734
- if (resizeActive) return
3735
3940
  if (frame !== undefined || failed) return
3736
3941
  frame = requestFrame(flush)
3737
3942
  }
@@ -3845,9 +4050,11 @@ historyHintHovered = false
3845
4050
  setScaleResizeState(resizeActive)
3846
4051
  cancelJump()
3847
4052
  resetWave()
4053
+ requestGeometryStabilization()
3848
4054
  return true
3849
4055
  }
3850
4056
  function disconnectRoots() {
4057
+ stopGeometryStabilization()
3851
4058
  clearTimers()
3852
4059
  hidePreview()
3853
4060
  disconnectPreviewObserver()
@@ -4801,10 +5008,22 @@ start() {
4801
5008
  if (started || !document) return
4802
5009
  started = true
4803
5010
  failed = false
5011
+ window?.addEventListener?.('resize', onHostGeometryChange)
5012
+ window?.addEventListener?.('orientationchange', onHostGeometryChange)
5013
+ window?.addEventListener?.('pageshow', onHostGeometryChange)
5014
+ window?.visualViewport?.addEventListener?.('resize', onHostGeometryChange)
4804
5015
  const ResizeObserver = window?.ResizeObserver
4805
5016
  if (typeof ResizeObserver === 'function') {
4806
5017
  resizeObserver = new ResizeObserver((entries = []) => {
4807
5018
  geometryDirty = true
5019
+ if (phoneScaleHidden()) {
5020
+ stopGeometryStabilization()
5021
+ if (resizeSettleTimer !== undefined) window?.clearTimeout?.(resizeSettleTimer)
5022
+ resizeSettleTimer = undefined
5023
+ setScaleResizeState(false)
5024
+ return
5025
+ }
5026
+ requestGeometryStabilization()
4808
5027
  const operationEntry = entries.find(entry => entry.target === operation)
4809
5028
  const width = Number(operationEntry?.contentRect?.width)
4810
5029
  const height = Number(operationEntry?.contentRect?.height)
@@ -4823,12 +5042,8 @@ schedule()
4823
5042
  return
4824
5043
  }
4825
5044
  if (!resizeActive) {
5045
+ schedule()
4826
5046
  setScaleResizeState(true)
4827
- if (frame !== undefined) {
4828
- if (window?.cancelAnimationFrame) window.cancelAnimationFrame(frame)
4829
- else window?.clearTimeout?.(frame)
4830
- frame = undefined
4831
- }
4832
5047
  }
4833
5048
  if (resizeSettleTimer !== undefined) window?.clearTimeout?.(resizeSettleTimer)
4834
5049
  resizeSettleTimer = window?.setTimeout?.(() => {
@@ -4845,6 +5060,13 @@ mutationObserver = new MutationObserver(mutations => {
4845
5060
  const external = mutations.filter(mutation =>
4846
5061
  !mutation.target?.closest?.('[data-prts-conversation-scale], [data-prts-conversation-preview], [data-prts-conversation-history-hint], [data-prts-conversation-history-status]')
4847
5062
  )
5063
+ if (phoneScaleHidden()) return
5064
+ if (external.some(mutation =>
5065
+ operation?.contains?.(mutation.target)
5066
+ || mutation.target?.contains?.(operation)
5067
+ || mutation.target?.matches?.('header, [data-host-header], [data-slot*="header" i]')
5068
+ || mutationAffectsOverlay(mutation)
5069
+ )) requestGeometryStabilization()
4848
5070
  const historyRelevant = external.some(mutation =>
4849
5071
  mutation.type === 'childList'
4850
5072
  && operation?.contains?.(mutation.target)
@@ -4882,9 +5104,17 @@ attributeFilter: [
4882
5104
  ],
4883
5105
  })
4884
5106
  }
5107
+ document.fonts?.ready?.then?.(() => {
5108
+ if (started) requestGeometryStabilization()
5109
+ }).catch?.(() => {})
4885
5110
  schedule(true)
4886
5111
  },
4887
5112
  dispose() {
5113
+ window?.removeEventListener?.('resize', onHostGeometryChange)
5114
+ window?.removeEventListener?.('orientationchange', onHostGeometryChange)
5115
+ window?.removeEventListener?.('pageshow', onHostGeometryChange)
5116
+ window?.visualViewport?.removeEventListener?.('resize', onHostGeometryChange)
5117
+ stopGeometryStabilization()
4888
5118
  started = false
4889
5119
  failed = false
4890
5120
  mutationObserver?.disconnect()
@@ -5714,6 +5944,36 @@ const ROOT_ATTRIBUTES = [
5714
5944
  'data-prts-motion',
5715
5945
  'data-prts-particle-pattern',
5716
5946
  ]
5947
+ const TRANSITION_ATTRIBUTE = 'data-prts-scheme-transition'
5948
+ const TRANSITION_MODE_ATTRIBUTE = 'data-prts-scheme-transition-mode'
5949
+ const TRANSITION_INTERACTIVE_ATTRIBUTE = 'data-prts-scheme-transition-interactive'
5950
+ const TRANSITION_ARMED_ATTRIBUTE = 'data-prts-scheme-transition-armed'
5951
+ const TRANSITION_COMPLETE_ATTRIBUTE = 'data-prts-scheme-transition-complete'
5952
+ const TRANSITION_PROPERTIES = [
5953
+ '--prts-scheme-origin-x',
5954
+ '--prts-scheme-origin-y',
5955
+ '--prts-scheme-duration',
5956
+ '--prts-scheme-reveal-x',
5957
+ '--prts-scheme-control-progress',
5958
+ '--prts-scheme-control-meter-height',
5959
+ '--prts-scheme-control-value-image',
5960
+ ]
5961
+ const REVEAL_EDGE_OVERSCAN = 32
5962
+ const REVEAL_GRID_WIDTH = 220
5963
+ const REVEAL_TIMING_LIMITS = {
5964
+ desktop: { minimum: 480, maximum: 560, widthFactor: .38 },
5965
+ mobile: { minimum: 320, maximum: 380, widthFactor: .9 },
5966
+ }
5967
+ const revealValueImages = new Map()
5968
+ function revealValueImageUrl(value) {
5969
+ const percentage = Math.min(100, Math.max(0, Math.round(Number(value) || 0)))
5970
+ if (revealValueImages.has(percentage)) return revealValueImages.get(percentage)
5971
+ const label = String(percentage).padStart(3, '0')
5972
+ 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>`
5973
+ const url = `url("data:image/svg+xml,${encodeURIComponent(svg)}")`
5974
+ revealValueImages.set(percentage, url)
5975
+ return url
5976
+ }
5717
5977
  function themeIdentity(value) {
5718
5978
  if (typeof value === 'string') return value
5719
5979
  if (!value || typeof value !== 'object') return ''
@@ -5728,20 +5988,50 @@ function resolveScheme(value) {
5728
5988
  const identity = String(themeIdentity(value)).toLowerCase()
5729
5989
  return identity.includes('dark') || identity.includes('night') ? 'dark' : 'light'
5730
5990
  }
5731
- function createThemeController({ document, window, cssText, service }) {
5732
- if (!document || !window) return { apply() {}, sync() {}, refresh() {}, setTheme() {}, toggle() {}, dispose() {} }
5991
+ function createThemeController({ document, window, cssText, service, onTransitionStateChange = () => {} }) {
5992
+ if (!document || !window) {
5993
+ const gesture = { update() {}, finish() {}, cancel() {} }
5994
+ return { apply() {}, sync() {}, refresh() {}, setTheme() {}, beginThemeTransition() { return gesture }, toggle() {}, dispose() {} }
5995
+ }
5733
5996
  const root = document.documentElement
5734
5997
  let style
5735
5998
  let disposed = false
5736
5999
  let refreshRevision = 0
5737
6000
  let setRevision = 0
6001
+ let transitionRevision = 0
6002
+ let activeTransition
6003
+ let transitionStateActive = false
6004
+ function setTransitionState(active) {
6005
+ const next = Boolean(active)
6006
+ if (transitionStateActive === next) return
6007
+ transitionStateActive = next
6008
+ try { onTransitionStateChange(next) } catch {}
6009
+ }
6010
+ function clearTransitionState() {
6011
+ root.removeAttribute(TRANSITION_ATTRIBUTE)
6012
+ root.removeAttribute(TRANSITION_MODE_ATTRIBUTE)
6013
+ root.removeAttribute(TRANSITION_INTERACTIVE_ATTRIBUTE)
6014
+ root.removeAttribute(TRANSITION_ARMED_ATTRIBUTE)
6015
+ root.removeAttribute(TRANSITION_COMPLETE_ATTRIBUTE)
6016
+ for (const property of TRANSITION_PROPERTIES) root.style.removeProperty(property)
6017
+ }
6018
+ function cancelActiveTransition({ keepPaused = false } = {}) {
6019
+ const current = activeTransition
6020
+ activeTransition = undefined
6021
+ current?.cancel?.()
6022
+ current?.viewTransition?.skipTransition?.()
6023
+ clearTransitionState()
6024
+ if (!keepPaused) setTransitionState(false)
6025
+ }
5738
6026
  function clearThemeState() {
5739
6027
  for (const attribute of ROOT_ATTRIBUTES) root.removeAttribute(attribute)
6028
+ clearTransitionState()
5740
6029
  }
5741
6030
  function removeOwnedState() {
5742
6031
  disposed = true
5743
6032
  refreshRevision += 1
5744
6033
  setRevision += 1
6034
+ cancelActiveTransition()
5745
6035
  clearThemeState()
5746
6036
  root.removeAttribute('data-dsh-prts-settings')
5747
6037
  style?.remove()
@@ -5757,9 +6047,21 @@ document.head.appendChild(style)
5757
6047
  if (style.textContent !== cssText) style.textContent = cssText
5758
6048
  root.setAttribute('data-dsh-prts-settings', '')
5759
6049
  }
6050
+ function applyScheme(value) {
6051
+ if (disposed) return
6052
+ const next = resolveScheme(value)
6053
+ root.dataset.prtsScheme = next
6054
+ return next
6055
+ }
5760
6056
  function sync(value) {
5761
6057
  if (disposed) return
5762
- root.dataset.prtsScheme = resolveScheme(value)
6058
+ const next = resolveScheme(value)
6059
+ if (activeTransition) {
6060
+ if (next === activeTransition.target) return root.dataset.prtsScheme
6061
+ if (activeTransition.interactive && next === activeTransition.source) return root.dataset.prtsScheme
6062
+ if (next !== root.dataset.prtsScheme) cancelActiveTransition()
6063
+ }
6064
+ return applyScheme(next)
5763
6065
  }
5764
6066
  function fallbackTheme() {
5765
6067
  return root.dataset.theme || root.getAttribute('data-color-scheme') || root.style.colorScheme || 'light'
@@ -5779,25 +6081,499 @@ if (!disposed && revision === refreshRevision) sync(fallbackTheme())
5779
6081
  sync(value ?? fallbackTheme())
5780
6082
  return value
5781
6083
  }
5782
- function setTheme(id) {
5783
- const target = id === 'dark' ? 'dark' : 'light'
5784
- const revision = ++setRevision
6084
+ function prefersReducedMotion() {
6085
+ if (root.dataset.prtsMotion === 'reduced') return true
6086
+ try { return window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches === true } catch { return false }
6087
+ }
6088
+ function canAnimateScheme(options) {
6089
+ const animationAvailable = typeof document.startViewTransition === 'function'
6090
+ && typeof root.animate === 'function'
6091
+ return options?.animate === true
6092
+ && animationAvailable
6093
+ && !prefersReducedMotion()
6094
+ }
6095
+ function transitionOrigin(origin) {
6096
+ const width = Math.max(Number(window.innerWidth) || 0, Number(root.clientWidth) || 0)
6097
+ const height = Math.max(Number(window.innerHeight) || 0, Number(root.clientHeight) || 0)
6098
+ const clamp = (value, maximum, fallback) => Math.min(maximum, Math.max(0, Number.isFinite(Number(value)) ? Number(value) : fallback))
6099
+ const x = clamp(origin?.x, width, width / 2)
6100
+ const y = clamp(origin?.y, height, height / 2)
6101
+ return { x, y }
6102
+ }
6103
+ function revealViewport(origin) {
6104
+ const geometry = transitionOrigin(origin)
6105
+ const width = Math.max(1, Number(window.innerWidth) || 0, Number(root.clientWidth) || 0)
6106
+ const height = Math.max(1, Number(window.innerHeight) || 0, Number(root.clientHeight) || 0)
6107
+ return { ...geometry, width, height }
6108
+ }
6109
+ function revealDuration(width) {
6110
+ const limits = width <= 720 ? REVEAL_TIMING_LIMITS.mobile : REVEAL_TIMING_LIMITS.desktop
6111
+ return Math.min(limits.maximum, Math.max(limits.minimum, Math.round(width * limits.widthFactor)))
6112
+ }
6113
+ function revealProgress(value) {
6114
+ const numeric = Number(value)
6115
+ if (!Number.isFinite(numeric)) return 0
6116
+ return Math.min(1, Math.max(0, numeric))
6117
+ }
6118
+ function removeRevealHud(session) {
6119
+ const hud = session?.hud
6120
+ if (!hud) return
5785
6121
  try {
5786
- const result = service?.setTheme?.(target)
5787
- if (result && typeof result.then === 'function') {
5788
- return result.then(() => {
5789
- if (!disposed && revision === setRevision) sync(target)
6122
+ if (hud.matches?.(':popover-open')) hud.hidePopover?.()
6123
+ } catch {}
6124
+ hud.remove()
6125
+ session.hud = undefined
6126
+ session.hudGrid = undefined
6127
+ session.hudEdge = undefined
6128
+ session.hudMark = undefined
6129
+ session.hudMeterFill = undefined
6130
+ session.hudLabel = undefined
6131
+ session.hudValue = undefined
6132
+ }
6133
+ function updateRevealHud(session) {
6134
+ if (!session || session.settled) return
6135
+ const percentage = Math.round(revealProgress(session.progress) * 100)
6136
+ if (session.hudEdge) session.hudEdge.dataset.prtsSchemeRevealSide = 'left'
6137
+ root.style.setProperty('--prts-scheme-control-progress', String(session.progress))
6138
+ root.style.setProperty('--prts-scheme-control-meter-height', `${revealProgress(session.progress) * 48}px`)
6139
+ root.style.setProperty('--prts-scheme-control-value-image', revealValueImageUrl(percentage))
6140
+ root.toggleAttribute(TRANSITION_ARMED_ATTRIBUTE, session.interactive && session.progress >= .5)
6141
+ }
6142
+ function releaseRevealHud(session) {
6143
+ if (!session?.hud || session.settled) return Promise.resolve()
6144
+ session.hud.dataset.prtsSchemeRevealState = 'complete'
6145
+ root.setAttribute(TRANSITION_COMPLETE_ATTRIBUTE, '')
6146
+ return new Promise(resolve => window.setTimeout(resolve, 100))
6147
+ }
6148
+ function mountRevealHud(session) {
6149
+ if (session.settled || session.hud || !document.body) return
6150
+ const hud = document.createElement('div')
6151
+ hud.dataset.prtsSchemeReveal = session.target
6152
+ hud.dataset.prtsSchemeRevealMode = session.interactive ? 'interactive' : 'automatic'
6153
+ hud.setAttribute('aria-hidden', 'true')
6154
+ hud.setAttribute('popover', 'manual')
6155
+ const grid = document.createElement('i')
6156
+ grid.dataset.prtsSchemeRevealGrid = ''
6157
+ const edge = document.createElement('span')
6158
+ edge.dataset.prtsSchemeRevealEdge = ''
6159
+ const blend = document.createElement('i')
6160
+ blend.dataset.prtsSchemeRevealBlend = ''
6161
+ const node = document.createElement('span')
6162
+ node.dataset.prtsSchemeRevealNode = ''
6163
+ const meter = document.createElement('i')
6164
+ meter.dataset.prtsSchemeRevealMeter = ''
6165
+ const meterFill = document.createElement('i')
6166
+ meterFill.dataset.prtsSchemeRevealMeterFill = ''
6167
+ const label = document.createElement('span')
6168
+ label.dataset.prtsSchemeRevealLabel = ''
6169
+ label.textContent = 'CTRL'
6170
+ const mark = document.createElement('i')
6171
+ mark.dataset.prtsSchemeRevealMark = ''
6172
+ const value = document.createElement('span')
6173
+ value.dataset.prtsSchemeRevealValue = ''
6174
+ meter.appendChild(meterFill)
6175
+ node.append(meter, label, value, mark)
6176
+ edge.append(grid, blend, node)
6177
+ hud.appendChild(edge)
6178
+ document.body.appendChild(hud)
6179
+ session.hud = hud
6180
+ session.hudGrid = grid
6181
+ session.hudEdge = edge
6182
+ session.hudMark = mark
6183
+ session.hudMeterFill = meterFill
6184
+ session.hudLabel = label
6185
+ session.hudValue = value
6186
+ updateRevealHud(session)
6187
+ try { hud.showPopover?.() } catch {}
6188
+ }
6189
+ function revealTargetX(session, progress) {
6190
+ if (progress === 0) return -REVEAL_EDGE_OVERSCAN
6191
+ if (progress === 1) return session.geometry.width + REVEAL_EDGE_OVERSCAN
6192
+ return progress * session.geometry.width
6193
+ }
6194
+ function revealPixels(value) {
6195
+ const rounded = Math.round(value * 1000) / 1000
6196
+ return `${Object.is(rounded, -0) ? 0 : rounded}px`
6197
+ }
6198
+ function revealClipPath(session, x) {
6199
+ return `inset(0 ${revealPixels(Math.max(0, session.geometry.width - x))} 0 0)`
6200
+ }
6201
+ function revealEdgeTransform(x) {
6202
+ return `translate3d(${revealPixels(x - 1)}, 0, 0)`
6203
+ }
6204
+ function revealGridPosition(x) {
6205
+ return `${revealPixels(REVEAL_GRID_WIDTH - x)} 0px`
6206
+ }
6207
+ function revealGroupTranslate(x) {
6208
+ return `${revealPixels(x)} 0px`
6209
+ }
6210
+ function revealNamedAnimation(keyframes, options, pseudoElement) {
6211
+ return root.animate(keyframes, { ...options, pseudoElement })
6212
+ }
6213
+ function createInteractiveScrub(session) {
6214
+ if (!session.interactive || session.settled || session.scrubAnimations) return
6215
+ try {
6216
+ const options = {
6217
+ duration: session.duration,
6218
+ easing: 'linear',
6219
+ fill: 'both',
6220
+ }
6221
+ const clip = revealNamedAnimation([
6222
+ { clipPath: revealClipPath(session, 0) },
6223
+ { clipPath: revealClipPath(session, session.geometry.width) },
6224
+ ], options, '::view-transition-new(root)')
6225
+ const edge = revealNamedAnimation([
6226
+ { translate: revealGroupTranslate(0) },
6227
+ { translate: revealGroupTranslate(session.geometry.width) },
6228
+ ], options, '::view-transition-group(prts-scheme-edge)')
6229
+ const node = revealNamedAnimation([
6230
+ { translate: revealGroupTranslate(0) },
6231
+ { translate: revealGroupTranslate(session.geometry.width) },
6232
+ ], options, '::view-transition-group(prts-scheme-node)')
6233
+ const grid = revealNamedAnimation([
6234
+ { translate: revealGroupTranslate(0) },
6235
+ { translate: revealGroupTranslate(session.geometry.width) },
6236
+ ], options, '::view-transition-group(prts-scheme-grid)')
6237
+ const gridPhase = revealNamedAnimation([
6238
+ { backgroundPosition: revealGridPosition(0) },
6239
+ { backgroundPosition: revealGridPosition(session.geometry.width) },
6240
+ ], options, '::view-transition-new(prts-scheme-grid)')
6241
+ const mark = revealNamedAnimation([
6242
+ { offset: 0, translate: revealGroupTranslate(0), rotate: '45deg' },
6243
+ { offset: .49, translate: revealGroupTranslate(session.geometry.width * .49), rotate: '45deg' },
6244
+ { offset: .51, translate: revealGroupTranslate(session.geometry.width * .51), rotate: '225deg' },
6245
+ { offset: 1, translate: revealGroupTranslate(session.geometry.width), rotate: '225deg' },
6246
+ ], options, '::view-transition-group(prts-scheme-mark)')
6247
+ session.scrubAnimations = [clip, edge, node, grid, gridPhase, mark]
6248
+ for (const animation of session.scrubAnimations) {
6249
+ animation.pause?.()
6250
+ animation.currentTime = session.progress * session.duration
6251
+ }
6252
+ } catch {}
6253
+ }
6254
+ function setRevealProgress(session, value) {
6255
+ if (!session || session.settled) return
6256
+ session.progress = revealProgress(value)
6257
+ session.revealX = session.progress * session.geometry.width
6258
+ root.style.setProperty('--prts-scheme-reveal-x', `${session.revealX}px`)
6259
+ if (session.scrubAnimations) {
6260
+ try {
6261
+ for (const animation of session.scrubAnimations) {
6262
+ animation.pause?.()
6263
+ animation.currentTime = session.progress * session.duration
6264
+ }
6265
+ } catch {}
6266
+ }
6267
+ updateRevealHud(session)
6268
+ }
6269
+ function cancelRevealAnimation(session) {
6270
+ const animations = session?.progressAnimations || []
6271
+ session.progressAnimations = undefined
6272
+ for (const animation of animations) {
6273
+ try { animation?.cancel?.() } catch {}
6274
+ }
6275
+ for (const animation of session?.completedAnimations || []) {
6276
+ try { animation?.cancel?.() } catch {}
6277
+ }
6278
+ if (session) session.completedAnimations = undefined
6279
+ for (const animation of session?.scrubAnimations || []) {
6280
+ try { animation?.cancel?.() } catch {}
6281
+ }
6282
+ if (session) session.scrubAnimations = undefined
6283
+ }
6284
+ function animateRevealTo(session, value, duration, easing) {
6285
+ if (!session || session.settled) return Promise.resolve(false)
6286
+ cancelRevealAnimation(session)
6287
+ const targetProgress = revealProgress(value)
6288
+ const targetX = revealTargetX(session, targetProgress)
6289
+ if (!(duration > 0)) {
6290
+ setRevealProgress(session, targetProgress)
6291
+ return Promise.resolve(true)
6292
+ }
6293
+ let animations
6294
+ try {
6295
+ const options = {
6296
+ duration: Math.round(duration),
6297
+ easing,
6298
+ fill: 'forwards',
6299
+ }
6300
+ const clip = root.animate([
6301
+ { clipPath: revealClipPath(session, session.revealX) },
6302
+ { clipPath: revealClipPath(session, targetX) },
6303
+ ], {
6304
+ ...options,
6305
+ pseudoElement: '::view-transition-new(root)',
6306
+ })
6307
+ const edge = revealNamedAnimation([
6308
+ { translate: revealGroupTranslate(session.revealX) },
6309
+ { translate: revealGroupTranslate(targetX) },
6310
+ ], options, '::view-transition-group(prts-scheme-edge)')
6311
+ const node = revealNamedAnimation([
6312
+ { translate: revealGroupTranslate(session.revealX) },
6313
+ { translate: revealGroupTranslate(targetX) },
6314
+ ], options, '::view-transition-group(prts-scheme-node)')
6315
+ const grid = revealNamedAnimation([
6316
+ { translate: revealGroupTranslate(session.revealX) },
6317
+ { translate: revealGroupTranslate(targetX) },
6318
+ ], options, '::view-transition-group(prts-scheme-grid)')
6319
+ const gridPhase = revealNamedAnimation([
6320
+ { backgroundPosition: revealGridPosition(session.revealX) },
6321
+ { backgroundPosition: revealGridPosition(targetX) },
6322
+ ], options, '::view-transition-new(prts-scheme-grid)')
6323
+ const nodeProgress = revealNamedAnimation([
6324
+ { backgroundSize: `2px ${session.progress * 48}px` },
6325
+ { backgroundSize: `2px ${targetProgress * 48}px` },
6326
+ ], options, '::view-transition-new(prts-scheme-node)')
6327
+ const mark = revealNamedAnimation([
6328
+ { translate: revealGroupTranslate(session.revealX), rotate: session.progress >= .5 ? '225deg' : '45deg' },
6329
+ { translate: revealGroupTranslate(targetX), rotate: targetProgress >= .5 ? '225deg' : '45deg' },
6330
+ ], options, '::view-transition-group(prts-scheme-mark)')
6331
+ animations = [clip, edge, node, grid, gridPhase, nodeProgress, mark]
6332
+ } catch {
6333
+ setRevealProgress(session, targetProgress)
6334
+ return Promise.resolve(true)
6335
+ }
6336
+ session.progressAnimations = animations
6337
+ return Promise.all(animations.map(animation => Promise.resolve(animation?.finished).then(() => true, () => false))).then(results => {
6338
+ const completed = results.every(Boolean)
6339
+ if (!completed || session.settled || session.progressAnimations !== animations) return false
6340
+ session.progressAnimations = undefined
6341
+ session.completedAnimations = animations
6342
+ session.progress = targetProgress
6343
+ session.revealX = targetX
6344
+ root.style.setProperty('--prts-scheme-reveal-x', `${session.revealX}px`)
6345
+ updateRevealHud(session)
6346
+ return true
6347
+ })
6348
+ }
6349
+ function requestHostScheme(value) {
6350
+ try {
6351
+ return Promise.resolve(service?.setTheme?.(value)).then(() => true, () => false)
6352
+ } catch {
6353
+ return Promise.resolve(false)
6354
+ }
6355
+ }
6356
+ function restoreRevealSource(session) {
6357
+ if (!session) return Promise.resolve(false)
6358
+ session.restoreRequested = true
6359
+ if (session.restorePromise) return session.restorePromise
6360
+ session.restorePromise = Promise.resolve(session.hostRequest).then(async accepted => {
6361
+ if (accepted && !(await requestHostScheme(session.source))) return false
6362
+ applyScheme(session.source)
6363
+ session.hostAccepted = false
6364
+ return true
6365
+ })
6366
+ return session.restorePromise
6367
+ }
6368
+ function finishRevealSession(session, { commit }) {
6369
+ if (!session || session.settled) return
6370
+ session.committed = commit
6371
+ session.settled = true
6372
+ cancelRevealAnimation(session)
6373
+ if (!commit) applyScheme(session.source)
6374
+ try { session.viewTransition?.skipTransition?.() } catch {}
6375
+ removeRevealHud(session)
6376
+ if (activeTransition?.token === session.token) activeTransition = undefined
6377
+ clearTransitionState()
6378
+ setTransitionState(false)
6379
+ }
6380
+ function createRevealSession(target, options = {}) {
6381
+ cancelActiveTransition({ keepPaused: true })
6382
+ setTransitionState(true)
6383
+ const source = root.dataset.prtsScheme === 'dark' ? 'dark' : 'light'
6384
+ const geometry = revealViewport(options.origin)
6385
+ const interactive = options.interactive === true
6386
+ const initialProgress = interactive ? revealProgress(options.progress) : 0
6387
+ const duration = revealDuration(geometry.width)
6388
+ const token = ++transitionRevision
6389
+ let resolveHostReady
6390
+ const session = {
6391
+ token,
6392
+ target,
6393
+ source,
6394
+ geometry,
6395
+ interactive,
6396
+ progress: initialProgress,
6397
+ revealX: interactive ? initialProgress * geometry.width : -REVEAL_EDGE_OVERSCAN,
6398
+ duration,
6399
+ settled: false,
6400
+ committed: false,
6401
+ hostAccepted: false,
6402
+ hostReady: new Promise(resolve => { resolveHostReady = resolve }),
6403
+ }
6404
+ root.style.setProperty('--prts-scheme-origin-x', `${geometry.x}px`)
6405
+ root.style.setProperty('--prts-scheme-origin-y', `${geometry.y}px`)
6406
+ root.style.setProperty('--prts-scheme-duration', `${interactive ? 3600000 : duration}ms`)
6407
+ root.style.setProperty('--prts-scheme-reveal-x', `${session.revealX}px`)
6408
+ root.style.setProperty('--prts-scheme-control-progress', String(initialProgress))
6409
+ root.style.setProperty('--prts-scheme-control-meter-height', `${initialProgress * 48}px`)
6410
+ root.style.setProperty('--prts-scheme-control-value-image', revealValueImageUrl(initialProgress * 100))
6411
+ root.setAttribute(TRANSITION_ATTRIBUTE, target)
6412
+ root.setAttribute(TRANSITION_MODE_ATTRIBUTE, 'view')
6413
+ root.toggleAttribute(TRANSITION_INTERACTIVE_ATTRIBUTE, interactive)
6414
+ session.cancel = () => {
6415
+ if (session.settled) return
6416
+ session.settled = true
6417
+ cancelRevealAnimation(session)
6418
+ if (session.interactive && !session.committed) void restoreRevealSource(session)
6419
+ removeRevealHud(session)
6420
+ }
6421
+ activeTransition = session
6422
+ let viewTransition
6423
+ try {
6424
+ viewTransition = document.startViewTransition(async () => {
6425
+ session.hostRequest = requestHostScheme(target)
6426
+ const accepted = await session.hostRequest
6427
+ session.hostAccepted = accepted
6428
+ if (!accepted) {
6429
+ applyScheme(source)
6430
+ resolveHostReady(false)
6431
+ return
6432
+ }
6433
+ if (session.settled || session.restoreRequested) {
6434
+ await restoreRevealSource(session)
6435
+ resolveHostReady(false)
6436
+ return
6437
+ }
6438
+ applyScheme(target)
6439
+ mountRevealHud(session)
6440
+ resolveHostReady(true)
6441
+ })
6442
+ } catch {
6443
+ resolveHostReady(false)
6444
+ if (activeTransition?.token === token) activeTransition = undefined
6445
+ removeRevealHud(session)
6446
+ clearTransitionState()
6447
+ applyScheme(source)
6448
+ setTransitionState(false)
6449
+ return undefined
6450
+ }
6451
+ session.viewTransition = viewTransition
6452
+ session.ready = Promise.all([
6453
+ Promise.resolve(viewTransition?.ready).then(() => true, () => false),
6454
+ session.hostReady,
6455
+ ]).then(([viewReady, hostReady]) => {
6456
+ const ready = viewReady && hostReady
6457
+ if (ready && activeTransition?.token === token && !session.settled) {
6458
+ createInteractiveScrub(session)
6459
+ }
6460
+ return ready
6461
+ })
6462
+ return session
6463
+ }
6464
+ async function commitRevealScheme(target, origin) {
6465
+ const session = createRevealSession(target, { origin })
6466
+ if (!session) return root.dataset.prtsScheme
6467
+ const ready = await session.ready
6468
+ if (!ready) {
6469
+ if (!session.settled) finishRevealSession(session, { commit: false })
6470
+ return session.source
6471
+ }
6472
+ if (activeTransition?.token !== session.token || session.settled) return root.dataset.prtsScheme
6473
+ await animateRevealTo(session, 1, session.duration, 'cubic-bezier(.4, 0, .2, 1)')
6474
+ await releaseRevealHud(session)
6475
+ if (activeTransition?.token === session.token && !session.settled) finishRevealSession(session, { commit: true })
5790
6476
  return target
5791
- }).catch(() => {
5792
- if (!disposed && revision === setRevision) refresh()
6477
+ }
6478
+ function fallbackGesture(target, source) {
6479
+ let progress = 0
6480
+ let settled = false
6481
+ return {
6482
+ update(value) { if (!settled) progress = revealProgress(value) },
6483
+ finish(commit = progress >= .5) {
6484
+ if (settled) return root.dataset.prtsScheme
6485
+ settled = true
6486
+ return commit ? setTheme(target, { animate: false }) : source
6487
+ },
6488
+ cancel() {
6489
+ if (settled) return source
6490
+ settled = true
6491
+ return source
6492
+ },
6493
+ }
6494
+ }
6495
+ function beginThemeTransition(id, options = {}) {
6496
+ const target = id === 'dark' ? 'dark' : 'light'
6497
+ const source = root.dataset.prtsScheme === 'dark' ? 'dark' : 'light'
6498
+ if (disposed || target === source || !canAnimateScheme({ ...options, animate: true })) return fallbackGesture(target, source)
6499
+ const session = createRevealSession(target, { ...options, interactive: true })
6500
+ if (!session) return fallbackGesture(target, source)
6501
+ let finishPromise
6502
+ const finish = commit => {
6503
+ if (finishPromise) return finishPromise
6504
+ if (session.settled || activeTransition?.token !== session.token) return Promise.resolve(root.dataset.prtsScheme)
6505
+ root.removeAttribute(TRANSITION_INTERACTIVE_ATTRIBUTE)
6506
+ root.toggleAttribute(TRANSITION_ARMED_ATTRIBUTE, commit)
6507
+ if (session.hud) session.hud.dataset.prtsSchemeRevealMode = 'settling'
6508
+ const visualDuration = commit
6509
+ ? Math.max(90, Math.round(session.duration * (1 - session.progress)))
6510
+ : Math.max(90, Math.round(session.duration * session.progress * .72))
6511
+ const visual = session.ready.then(ready => {
6512
+ if (!ready || session.settled) return false
6513
+ return animateRevealTo(
6514
+ session,
6515
+ commit ? 1 : 0,
6516
+ visualDuration,
6517
+ commit ? 'cubic-bezier(.22, 1, .36, 1)' : 'cubic-bezier(.4, 0, .2, 1)',
6518
+ )
6519
+ })
6520
+ if (!commit) {
6521
+ finishPromise = visual.then(async () => {
6522
+ await releaseRevealHud(session)
6523
+ await restoreRevealSource(session)
6524
+ if (!session.settled) finishRevealSession(session, { commit: false })
6525
+ return session.source
6526
+ })
6527
+ return finishPromise
6528
+ }
6529
+ finishPromise = visual.then(async () => {
6530
+ if (!session.hostAccepted) {
6531
+ if (!session.settled) finishRevealSession(session, { commit: false })
6532
+ refresh()
5793
6533
  return root.dataset.prtsScheme
6534
+ }
6535
+ await releaseRevealHud(session)
6536
+ if (!session.settled) finishRevealSession(session, { commit: true })
6537
+ return target
5794
6538
  })
6539
+ return finishPromise
6540
+ }
6541
+ return {
6542
+ update(progress) {
6543
+ if (session.settled || activeTransition?.token !== session.token) return
6544
+ setRevealProgress(session, progress)
6545
+ },
6546
+ finish,
6547
+ cancel() { return finish(false) },
6548
+ }
6549
+ }
6550
+ function commitAnimatedScheme(target, origin) {
6551
+ return commitRevealScheme(target, origin)
5795
6552
  }
5796
- if (!disposed && revision === setRevision) sync(target)
6553
+ function setTheme(id, options = {}) {
6554
+ const target = id === 'dark' ? 'dark' : 'light'
6555
+ const revision = ++setRevision
6556
+ const animate = canAnimateScheme(options) && target !== root.dataset.prtsScheme
6557
+ if (animate) return commitAnimatedScheme(target, options.origin)
6558
+ const commit = () => {
6559
+ if (disposed || revision !== setRevision) return root.dataset.prtsScheme
6560
+ return applyScheme(target)
6561
+ }
6562
+ const fail = () => {
6563
+ if (disposed || revision !== setRevision) return root.dataset.prtsScheme
6564
+ const result = refresh()
6565
+ if (result && typeof result.then === 'function') {
6566
+ return result.then(() => root.dataset.prtsScheme)
6567
+ }
6568
+ return root.dataset.prtsScheme
6569
+ }
6570
+ try {
6571
+ const result = service?.setTheme?.(target)
6572
+ if (result && typeof result.then === 'function') return result.then(commit).catch(fail)
6573
+ return commit()
5797
6574
  } catch {
5798
- if (!disposed && revision === setRevision) sync(target)
6575
+ return fail()
5799
6576
  }
5800
- return target
5801
6577
  }
5802
6578
  function toggle() {
5803
6579
  return setTheme(root.dataset.prtsScheme === 'dark' ? 'light' : 'dark')
@@ -5808,6 +6584,7 @@ disposed = false
5808
6584
  const preferences = normalizePreferences(value)
5809
6585
  ensureStyle()
5810
6586
  if (!preferences.enabled) {
6587
+ cancelActiveTransition()
5811
6588
  clearThemeState()
5812
6589
  return
5813
6590
  }
@@ -5821,6 +6598,7 @@ refresh()
5821
6598
  sync,
5822
6599
  refresh,
5823
6600
  setTheme,
6601
+ beginThemeTransition,
5824
6602
  toggle,
5825
6603
  dispose: removeOwnedState,
5826
6604
  }
@@ -6322,6 +7100,7 @@ const PRESET_OPTIONS = [
6322
7100
  ['quiet-reading', '静谧阅读', '克制底纹 / 柔和玻璃 / 减少动效'],
6323
7101
  ]
6324
7102
  const COMMON_CONTROLS = [
7103
+ ['railDefaultHidden', '默认隐藏导航栏', [['false', '关闭'], ['true', '开启']]],
6325
7104
  ['texture', '环境底纹', [['off', '关闭'], ['restrained', '克制'], ['full', '完整']]],
6326
7105
  ['glass', '玻璃材质', [['off', '关闭'], ['soft', '柔和'], ['standard', '标准'], ['clear', '清晰']]],
6327
7106
  ['motion', '动态效果', [['system', '跟随系统'], ['reduced', '减少']]],
@@ -6336,6 +7115,8 @@ const note = key === 'glass'
6336
7115
  ? '<small data-prts-setting-note data-prts-transparency-status hidden>系统当前要求降低透明度</small>'
6337
7116
  : key === 'motion'
6338
7117
  ? '<small data-prts-setting-note data-prts-effective-motion hidden>系统当前要求减少动态</small>'
7118
+ : key === 'railDefaultHidden'
7119
+ ? '<small data-prts-setting-note>在任意窗口宽度下默认收起 P.R.T.S. 导航,可从左侧按钮临时展开</small>'
6339
7120
  : ''
6340
7121
  const sample = value => key === 'texture' || key === 'glass'
6341
7122
  ? `<i data-prts-option-sample="${key}" data-prts-option-sample-value="${value}" aria-hidden="true"></i>`
@@ -6399,6 +7180,10 @@ return `<div data-prts-settings-backdrop hidden aria-hidden="true"></div>
6399
7180
  <section data-prts-particle-detail>
6400
7181
  <header><strong>粒子精度</strong><span>同时调整会话与新会话徽记</span></header>
6401
7182
  <div role="radiogroup" aria-label="粒子精度">${particleMarkup()}</div>
7183
+ <label data-prts-setting-row="particleTraversalSpeed" data-prts-setting-range-row data-prts-particle-traversal>
7184
+ <span><strong>跟随移动速度</strong><small>控制普通会话徽记移动及破碎重组的滚动距离</small></span>
7185
+ <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>
7186
+ </label>
6402
7187
  <span data-prts-particle-error role="alert" hidden>粒子资源加载异常,主题已使用静态后备效果</span>
6403
7188
  </section>
6404
7189
  <section data-prts-scale-adjustment>
@@ -6445,6 +7230,7 @@ panel,
6445
7230
  backdrop,
6446
7231
  onOpen = () => {},
6447
7232
  onPreferenceChange = () => {},
7233
+ onPreferencePreview = () => {},
6448
7234
  onResetVisual = () => {},
6449
7235
  onRetrySave = () => {},
6450
7236
  getConversationScalePreview = () => ({ visible: false, reason: 'unmeasured', mode: 'hidden' }),
@@ -6462,6 +7248,8 @@ let scaleDistanceDraft
6462
7248
  let scaleDistanceDirty = false
6463
7249
  let scaleFocusContrastDraft
6464
7250
  let scaleFocusContrastDirty = false
7251
+ let particleTraversalSpeedDraft
7252
+ let particleTraversalSpeedDirty = false
6465
7253
  let calibrationResizeObserver
6466
7254
  let calibrationSettleTimer
6467
7255
  let calibrationFrame
@@ -6511,6 +7299,7 @@ if (value === isOpen) return isOpen
6511
7299
  if (!value) {
6512
7300
  commitScaleDistance()
6513
7301
  commitScaleFocusContrast()
7302
+ commitParticleTraversalSpeed()
6514
7303
  }
6515
7304
  isOpen = value
6516
7305
  trigger.setAttribute('aria-expanded', String(isOpen))
@@ -6548,6 +7337,32 @@ return Math.round(clamped / CONVERSATION_SCALE_FOCUS_CONTRAST_STEP) * CONVERSATI
6548
7337
  function currentScaleFocusContrast() {
6549
7338
  return normalizeScaleFocusContrast(scaleFocusContrastDirty ? scaleFocusContrastDraft : currentPreferences?.conversationScaleFocusContrast)
6550
7339
  }
7340
+ function normalizeParticleTraversalSpeed(value) {
7341
+ const numeric = Number(value)
7342
+ if (!Number.isFinite(numeric)) return PARTICLE_TRAVERSAL_SPEED_DEFAULT
7343
+ const clamped = Math.min(PARTICLE_TRAVERSAL_SPEED_MAX, Math.max(PARTICLE_TRAVERSAL_SPEED_MIN, numeric))
7344
+ return Math.round(clamped / PARTICLE_TRAVERSAL_SPEED_STEP) * PARTICLE_TRAVERSAL_SPEED_STEP
7345
+ }
7346
+ function currentParticleTraversalSpeed() {
7347
+ return normalizeParticleTraversalSpeed(
7348
+ particleTraversalSpeedDirty ? particleTraversalSpeedDraft : currentPreferences?.particleTraversalSpeed,
7349
+ )
7350
+ }
7351
+ function conciseNumber(value) {
7352
+ return String(Number(Number(value).toFixed(2)))
7353
+ }
7354
+ function particleTraversalLabel(value) {
7355
+ const speed = normalizeParticleTraversalSpeed(value)
7356
+ if (speed === 0) return '0× · 静止 / 不重组'
7357
+ return `${conciseNumber(speed)}× · 每 ${conciseNumber(1 / speed)} 个视口重组`
7358
+ }
7359
+ function renderParticleTraversal() {
7360
+ if (!panel || !currentPreferences) return
7361
+ const value = currentParticleTraversalSpeed()
7362
+ const range = panel.querySelector('input[data-prts-setting-range][data-prts-setting-key="particleTraversalSpeed"]')
7363
+ if (range && range.value !== String(value)) range.value = String(value)
7364
+ setText(panel.querySelector('[data-prts-particle-traversal-output]'), particleTraversalLabel(value))
7365
+ }
6551
7366
  function calibrationStatus(state, value) {
6552
7367
  if (state?.mode === 'configured') return `当前视图:使用配置上限 / ${Math.round(Number(state.left) || value)} px`
6553
7368
  if (state?.simulated) return `模拟布局:使用配置上限 / ${value} px`
@@ -6647,7 +7462,7 @@ if (tick.style.width !== width) tick.style.width = width
6647
7462
  const detail = resolveParticleDetail(currentPreferences)
6648
7463
  const detailLabels = { compact: '精简', standard: '标准', precise: '精细' }
6649
7464
  const advanced = panel.querySelector('[data-prts-advanced-summary]')
6650
- setText(advanced, `${detailLabels[detail]} / 区分度 ${contrast} / ${value} px`)
7465
+ setText(advanced, `${detailLabels[detail]} / ${conciseNumber(currentParticleTraversalSpeed())}× / 区分度 ${contrast} / ${value} px`)
6651
7466
  if (!calibration) return
6652
7467
  const distance = `${value}px`
6653
7468
  if (calibration.style.getPropertyValue('--prts-calibration-distance') !== distance) {
@@ -6673,6 +7488,18 @@ if (value !== normalizeScaleFocusContrast(currentPreferences.conversationScaleFo
6673
7488
  else renderScaleCalibration()
6674
7489
  return true
6675
7490
  }
7491
+ function commitParticleTraversalSpeed() {
7492
+ if (!particleTraversalSpeedDirty || !currentPreferences) return false
7493
+ const value = currentParticleTraversalSpeed()
7494
+ particleTraversalSpeedDirty = false
7495
+ particleTraversalSpeedDraft = value
7496
+ if (value !== normalizeParticleTraversalSpeed(currentPreferences.particleTraversalSpeed)) {
7497
+ onPreferenceChange('particleTraversalSpeed', value)
7498
+ } else {
7499
+ renderParticleTraversal()
7500
+ }
7501
+ return true
7502
+ }
6676
7503
  function renderPersistence() {
6677
7504
  const status = panel?.querySelector?.('[data-prts-persistence-status]')
6678
7505
  const error = panel?.querySelector?.('[data-prts-persistence-error]')
@@ -6714,6 +7541,8 @@ const particleError = panel.querySelector('[data-prts-particle-error]')
6714
7541
  if (particleError) particleError.hidden = currentStatus?.particle?.phase !== 'error'
6715
7542
  if (!scaleDistanceDirty) scaleDistanceDraft = normalizeScaleDistance(currentPreferences.conversationScaleMaxDistance)
6716
7543
  if (!scaleFocusContrastDirty) scaleFocusContrastDraft = normalizeScaleFocusContrast(currentPreferences.conversationScaleFocusContrast)
7544
+ if (!particleTraversalSpeedDirty) particleTraversalSpeedDraft = normalizeParticleTraversalSpeed(currentPreferences.particleTraversalSpeed)
7545
+ renderParticleTraversal()
6717
7546
  renderScaleCalibration()
6718
7547
  renderPersistence()
6719
7548
  }
@@ -6748,6 +7577,8 @@ scaleDistanceDirty = false
6748
7577
  scaleDistanceDraft = undefined
6749
7578
  scaleFocusContrastDirty = false
6750
7579
  scaleFocusContrastDraft = undefined
7580
+ particleTraversalSpeedDirty = false
7581
+ particleTraversalSpeedDraft = undefined
6751
7582
  setResetConfirmation(false)
6752
7583
  onResetVisual()
6753
7584
  }
@@ -6763,6 +7594,12 @@ scaleDistanceDirty = true
6763
7594
  } else if (target.dataset.prtsSettingKey === 'conversationScaleFocusContrast') {
6764
7595
  scaleFocusContrastDraft = value
6765
7596
  scaleFocusContrastDirty = true
7597
+ } else if (target.dataset.prtsSettingKey === 'particleTraversalSpeed') {
7598
+ particleTraversalSpeedDraft = normalizeParticleTraversalSpeed(value)
7599
+ particleTraversalSpeedDirty = true
7600
+ renderParticleTraversal()
7601
+ onPreferencePreview('particleTraversalSpeed', particleTraversalSpeedDraft)
7602
+ return
6766
7603
  } else {
6767
7604
  return
6768
7605
  }
@@ -6788,6 +7625,7 @@ const target = event.target
6788
7625
  if (!target?.matches?.('input[data-prts-setting-range]')) return
6789
7626
  if (target.dataset.prtsSettingKey === 'conversationScaleMaxDistance') commitScaleDistance()
6790
7627
  if (target.dataset.prtsSettingKey === 'conversationScaleFocusContrast') commitScaleFocusContrast()
7628
+ if (target.dataset.prtsSettingKey === 'particleTraversalSpeed') commitParticleTraversalSpeed()
6791
7629
  }
6792
7630
  trigger?.addEventListener('click', toggle)
6793
7631
  panel?.addEventListener('click', onPanelClick)
@@ -6812,6 +7650,7 @@ currentStatus = status
6812
7650
  currentPersistence = persistenceState ?? { phase: 'idle', revision: 0 }
6813
7651
  if (!scaleDistanceDirty) scaleDistanceDraft = normalizeScaleDistance(preferences?.conversationScaleMaxDistance)
6814
7652
  if (!scaleFocusContrastDirty) scaleFocusContrastDraft = normalizeScaleFocusContrast(preferences?.conversationScaleFocusContrast)
7653
+ if (!particleTraversalSpeedDirty) particleTraversalSpeedDraft = normalizeParticleTraversalSpeed(preferences?.particleTraversalSpeed)
6815
7654
  renderState()
6816
7655
  },
6817
7656
  refreshScalePreview: renderScaleCalibration,
@@ -6873,6 +7712,11 @@ setActive(false)
6873
7712
  }
6874
7713
  function onResize() {
6875
7714
  if (!started) return
7715
+ if (Number(window?.innerWidth) <= 640) {
7716
+ clearTimer()
7717
+ setActive(false)
7718
+ return
7719
+ }
6876
7720
  setActive(true)
6877
7721
  clearTimer()
6878
7722
  settleTimer = window?.setTimeout?.(settle, settleDelay)
@@ -6905,6 +7749,11 @@ dispose,
6905
7749
  }
6906
7750
  }
6907
7751
 
7752
+ const PHONE_RAIL_BREAKPOINT = 640
7753
+ const RAIL_HOLD_DELAY_MS = 350
7754
+ const RAIL_HOLD_MOVE_TOLERANCE = 8
7755
+ const RAIL_SWIPE_THRESHOLD = 32
7756
+ const RAIL_SWIPE_AXIS_RATIO = 1.25
6908
7757
  function setText(root, selector, value) {
6909
7758
  const node = root?.querySelector(selector)
6910
7759
  const next = String(value ?? '')
@@ -6912,7 +7761,7 @@ if (node && node.textContent !== next) node.textContent = next
6912
7761
  }
6913
7762
  function markup(emblem) {
6914
7763
  return `<div data-prts-shell data-plugin="dsh-theme-prts">
6915
- <button type="button" data-prts-rail-launcher aria-label="打开 P.R.T.S. 导航" aria-controls="prts-nav-rail" aria-expanded="false"><span aria-hidden="true">P.R.T.S.</span></button>
7764
+ <button type="button" data-prts-rail-launcher aria-label="打开 P.R.T.S. 导航" aria-controls="prts-nav-rail" aria-expanded="false"><span aria-hidden="true">P.R.T.S.</span><i data-prts-rail-gesture-cue aria-hidden="true">⌄<br>⌄</i></button>
6916
7765
  <nav id="prts-nav-rail" data-prts-nav-rail aria-label="P.R.T.S. 导航">
6917
7766
  <button type="button" data-prts-rail-brand aria-label="P.R.T.S. 终端设置" aria-controls="prts-theme-settings" aria-expanded="false">${emblem || ''}<span>P.R.T.S.</span></button>
6918
7767
  <div data-prts-nav-bottom>
@@ -6937,8 +7786,10 @@ assets = {},
6937
7786
  adapter,
6938
7787
  hostGeometry,
6939
7788
  onSchemeToggle = () => {},
7789
+ onSchemeDragStart = () => undefined,
6940
7790
  onThemeDisable = () => {},
6941
7791
  onPreferenceChange = () => {},
7792
+ onPreferencePreview = () => {},
6942
7793
  onVisualReset = () => {},
6943
7794
  getConversationScalePreview = () => ({ visible: false, reason: 'unmeasured', mode: 'hidden' }),
6944
7795
  onRetrySave = () => {},
@@ -6949,14 +7800,150 @@ let shell
6949
7800
  let navRail
6950
7801
  let railLauncher
6951
7802
  let railMode
7803
+ let railViewport
7804
+ let railDefaultHidden = false
6952
7805
  let railViewportQuery
7806
+ let railPointerQuery
7807
+ let railHoverQuery
7808
+ let railPointer
7809
+ let railHoldTimer
6953
7810
  let settingsOverlay
6954
7811
  let schemeToggle
7812
+ let schemeIntent
7813
+ let schemePressRevision = 0
7814
+ let schemePressAnimation
7815
+ let schemePointer
7816
+ let suppressSchemeClick = false
7817
+ let suppressSchemeClickTimer
6955
7818
  let themeDisable
6956
7819
  let connectionIndicator
6957
7820
  let conversationObserver
6958
7821
  let schemeObserver
6959
7822
  let operationRegion
7823
+ const schemePressDelays = new Set()
7824
+ function reducedMotion() {
7825
+ if (root.dataset.prtsMotion === 'reduced') return true
7826
+ try { return window.matchMedia?.('(prefers-reduced-motion: reduce)')?.matches === true } catch { return false }
7827
+ }
7828
+ function phoneRailGesture() {
7829
+ if (railMode !== 'overlay' || Number(window.innerWidth) > PHONE_RAIL_BREAKPOINT) return false
7830
+ return railPointerQuery?.matches === true
7831
+ || railHoverQuery?.matches === true
7832
+ || Number(window.navigator?.maxTouchPoints) > 0
7833
+ }
7834
+ function clearRailGesture({ release = true } = {}) {
7835
+ if (railHoldTimer !== undefined) window.clearTimeout(railHoldTimer)
7836
+ railHoldTimer = undefined
7837
+ const pointer = railPointer
7838
+ railPointer = undefined
7839
+ if (release && pointer) {
7840
+ try { railLauncher?.releasePointerCapture?.(pointer.pointerId) } catch {}
7841
+ }
7842
+ railLauncher?.removeAttribute('data-prts-rail-gesture-active')
7843
+ railLauncher?.removeAttribute('data-prts-rail-gesture-ready')
7844
+ railLauncher?.style?.removeProperty('--prts-rail-gesture-progress')
7845
+ }
7846
+ function armRailGesture() {
7847
+ railHoldTimer = undefined
7848
+ if (!railPointer || !phoneRailGesture()) return
7849
+ railPointer.armed = true
7850
+ railLauncher?.setAttribute('data-prts-rail-gesture-active', '')
7851
+ }
7852
+ function onRailPointerDown(event) {
7853
+ if (!phoneRailGesture() || railPointer || (event.button ?? 0) !== 0) return
7854
+ const pointerId = event.pointerId ?? 1
7855
+ railPointer = {
7856
+ pointerId,
7857
+ startX: Number(event.clientX) || 0,
7858
+ startY: Number(event.clientY) || 0,
7859
+ armed: false,
7860
+ ready: false,
7861
+ }
7862
+ try { railLauncher?.setPointerCapture?.(pointerId) } catch {}
7863
+ railHoldTimer = window.setTimeout(armRailGesture, RAIL_HOLD_DELAY_MS)
7864
+ }
7865
+ function onRailPointerMove(event) {
7866
+ const pointer = railPointer
7867
+ if (!pointer || (event.pointerId ?? 1) !== pointer.pointerId) return
7868
+ const deltaX = (Number(event.clientX) || 0) - pointer.startX
7869
+ const deltaY = (Number(event.clientY) || 0) - pointer.startY
7870
+ if (!pointer.armed) {
7871
+ if (Math.hypot(deltaX, deltaY) > RAIL_HOLD_MOVE_TOLERANCE) clearRailGesture()
7872
+ return
7873
+ }
7874
+ event.preventDefault?.()
7875
+ if (Math.abs(deltaX) > Math.max(RAIL_HOLD_MOVE_TOLERANCE, Math.max(0, deltaY) / RAIL_SWIPE_AXIS_RATIO)) {
7876
+ clearRailGesture()
7877
+ return
7878
+ }
7879
+ const progress = Math.min(1, Math.max(0, deltaY) / RAIL_SWIPE_THRESHOLD)
7880
+ pointer.ready = deltaY >= RAIL_SWIPE_THRESHOLD
7881
+ && deltaY >= Math.abs(deltaX) * RAIL_SWIPE_AXIS_RATIO
7882
+ railLauncher?.style?.setProperty('--prts-rail-gesture-progress', Math.round(progress * 12) + 'px')
7883
+ railLauncher?.toggleAttribute('data-prts-rail-gesture-ready', pointer.ready)
7884
+ }
7885
+ function onRailPointerUp(event) {
7886
+ const pointer = railPointer
7887
+ if (!pointer || (event.pointerId ?? 1) !== pointer.pointerId) return
7888
+ const shouldOpen = pointer.armed && pointer.ready
7889
+ clearRailGesture()
7890
+ if (shouldOpen) openRail()
7891
+ }
7892
+ function onRailLostPointerCapture(event) {
7893
+ if (!railPointer || (event.pointerId ?? 1) !== railPointer.pointerId) return
7894
+ clearRailGesture({ release: false })
7895
+ }
7896
+ function onRailClick(event) {
7897
+ if (phoneRailGesture() && Number(event?.detail) > 0) {
7898
+ event.preventDefault?.()
7899
+ return
7900
+ }
7901
+ toggleRail()
7902
+ }
7903
+ function playSchemePress() {
7904
+ if (!schemeToggle || reducedMotion()) return
7905
+ const revision = ++schemePressRevision
7906
+ schemePressAnimation?.cancel?.()
7907
+ schemePressAnimation = undefined
7908
+ schemeToggle.removeAttribute('data-prts-scheme-press')
7909
+ if (typeof schemeToggle.animate === 'function') {
7910
+ const animation = schemeToggle.animate([
7911
+ { transform: 'translateY(0) scale(1)' },
7912
+ { transform: 'translateY(0) scale(.96)', offset: 0.5 },
7913
+ { transform: 'translateY(0) scale(1)' },
7914
+ ], { duration: 100, easing: 'cubic-bezier(.22, 1, .36, 1)' })
7915
+ schemePressAnimation = animation
7916
+ Promise.resolve(animation.finished).catch(() => {}).finally(() => {
7917
+ if (revision === schemePressRevision && schemePressAnimation === animation) schemePressAnimation = undefined
7918
+ })
7919
+ return
7920
+ }
7921
+ schemeToggle.setAttribute('data-prts-scheme-press', '')
7922
+ const entry = { timer: undefined }
7923
+ entry.timer = window.setTimeout(() => {
7924
+ schemePressDelays.delete(entry)
7925
+ if (revision === schemePressRevision) schemeToggle?.removeAttribute('data-prts-scheme-press')
7926
+ }, 100)
7927
+ schemePressDelays.add(entry)
7928
+ }
7929
+ function clearSchemePressDelays() {
7930
+ schemePressRevision += 1
7931
+ schemePressAnimation?.cancel?.()
7932
+ schemePressAnimation = undefined
7933
+ schemeToggle?.removeAttribute('data-prts-scheme-press')
7934
+ for (const entry of schemePressDelays) {
7935
+ window.clearTimeout(entry.timer)
7936
+ }
7937
+ schemePressDelays.clear()
7938
+ }
7939
+ function schemeTarget() {
7940
+ const current = schemeIntent ?? (root.dataset.prtsScheme === 'dark' ? 'dark' : 'light')
7941
+ return current === 'dark' ? 'light' : 'dark'
7942
+ }
7943
+ function schemeOrigin() {
7944
+ const rect = schemeToggle?.getBoundingClientRect?.()
7945
+ return rect ? { x: rect.left + rect.width / 2, y: rect.top + rect.height / 2 } : undefined
7946
+ }
6960
7947
  function syncConversationState() {
6961
7948
  if (!operationRegion) return
6962
7949
  const candidate = operationRegion.querySelector(
@@ -6966,12 +7953,112 @@ const active = Boolean(candidate)
6966
7953
  root.dataset.prtsConversationState = active ? 'active' : 'idle'
6967
7954
  settingsOverlay?.refreshScalePreview()
6968
7955
  }
6969
- function toggleScheme() {
6970
- onSchemeToggle(root.dataset.prtsScheme === 'dark' ? 'light' : 'dark')
7956
+ function toggleScheme(event) {
7957
+ if (suppressSchemeClick) {
7958
+ event?.preventDefault?.()
7959
+ return
7960
+ }
7961
+ const next = schemeTarget()
7962
+ schemeIntent = next
7963
+ playSchemePress()
7964
+ let request
7965
+ try { request = onSchemeToggle(next, { origin: schemeOrigin() }) } catch { request = undefined }
7966
+ Promise.resolve(request).catch(() => {}).finally(() => {
7967
+ if (schemeIntent === next) schemeIntent = undefined
7968
+ })
7969
+ }
7970
+ function schemePointerProgress(event) {
7971
+ const width = Math.max(1, Number(window.innerWidth) || Number(root.clientWidth) || 1)
7972
+ return Math.min(1, Math.max(0, Number(event?.clientX) / width || 0))
7973
+ }
7974
+ function clearSchemeClickSuppression() {
7975
+ if (suppressSchemeClickTimer !== undefined) window.clearTimeout(suppressSchemeClickTimer)
7976
+ suppressSchemeClickTimer = undefined
7977
+ suppressSchemeClick = false
7978
+ }
7979
+ function suppressNextSchemeClick() {
7980
+ clearSchemeClickSuppression()
7981
+ suppressSchemeClick = true
7982
+ suppressSchemeClickTimer = window.setTimeout(() => {
7983
+ suppressSchemeClickTimer = undefined
7984
+ suppressSchemeClick = false
7985
+ }, 0)
7986
+ }
7987
+ function settleSchemePointer({ commit = false } = {}) {
7988
+ const pointer = schemePointer
7989
+ if (!pointer) return
7990
+ schemePointer = undefined
7991
+ try { schemeToggle?.releasePointerCapture?.(pointer.pointerId) } catch {}
7992
+ if (!pointer.dragging) return
7993
+ suppressNextSchemeClick()
7994
+ let result
7995
+ try { result = pointer.gesture?.finish?.(commit) } catch { result = undefined }
7996
+ Promise.resolve(result).catch(() => {}).finally(() => {
7997
+ if (schemeIntent === pointer.target) schemeIntent = undefined
7998
+ })
7999
+ }
8000
+ function onSchemePointerDown(event) {
8001
+ if ((event.button ?? 0) !== 0 || schemePointer) return
8002
+ const pointerId = event.pointerId ?? 1
8003
+ schemePointer = {
8004
+ pointerId,
8005
+ startX: Number(event.clientX) || 0,
8006
+ startY: Number(event.clientY) || 0,
8007
+ target: schemeTarget(),
8008
+ origin: schemeOrigin(),
8009
+ dragging: false,
8010
+ gesture: undefined,
8011
+ }
8012
+ try { schemeToggle?.setPointerCapture?.(pointerId) } catch {}
8013
+ }
8014
+ function onSchemePointerMove(event) {
8015
+ const pointer = schemePointer
8016
+ if (!pointer || (event.pointerId ?? 1) !== pointer.pointerId) return
8017
+ const deltaX = (Number(event.clientX) || 0) - pointer.startX
8018
+ if (!pointer.dragging) {
8019
+ if (deltaX < 8) return
8020
+ pointer.dragging = true
8021
+ schemeIntent = pointer.target
8022
+ playSchemePress()
8023
+ const progress = schemePointerProgress(event)
8024
+ try {
8025
+ pointer.gesture = onSchemeDragStart(pointer.target, {
8026
+ origin: pointer.origin,
8027
+ progress,
8028
+ clientX: Number(event.clientX) || 0,
8029
+ })
8030
+ } catch {
8031
+ pointer.gesture = undefined
8032
+ }
8033
+ }
8034
+ event.preventDefault?.()
8035
+ pointer.gesture?.update?.(schemePointerProgress(event))
8036
+ }
8037
+ function onSchemePointerUp(event) {
8038
+ const pointer = schemePointer
8039
+ if (!pointer || (event.pointerId ?? 1) !== pointer.pointerId) return
8040
+ const commit = pointer.dragging && schemePointerProgress(event) >= .5
8041
+ settleSchemePointer({ commit })
8042
+ }
8043
+ function cancelSchemePointer() {
8044
+ const pointer = schemePointer
8045
+ if (!pointer) return
8046
+ if (pointer.dragging) {
8047
+ try { pointer.gesture?.cancel?.() } catch {}
8048
+ }
8049
+ schemePointer = undefined
8050
+ try { schemeToggle?.releasePointerCapture?.(pointer.pointerId) } catch {}
8051
+ if (pointer.dragging) suppressNextSchemeClick()
8052
+ if (schemeIntent === pointer.target) schemeIntent = undefined
8053
+ }
8054
+ function onSchemeLostPointerCapture(event) {
8055
+ if (!schemePointer || (event.pointerId ?? 1) !== schemePointer.pointerId) return
8056
+ cancelSchemePointer()
6971
8057
  }
6972
8058
  function syncSchemeToggle() {
6973
8059
  if (!schemeToggle) return
6974
8060
  const current = root.dataset.prtsScheme === 'dark' ? 'dark' : 'light'
8061
+ if (schemeIntent === current) schemeIntent = undefined
6975
8062
  schemeToggle.dataset.prtsSchemeCurrent = current
6976
8063
  schemeToggle.setAttribute('aria-label', current === 'dark' ? '切换到日间模式' : '切换到夜间模式')
6977
8064
  }
@@ -6980,7 +8067,8 @@ if (!navRail || !railLauncher) return
6980
8067
  const overlay = railMode === 'overlay'
6981
8068
  const open = overlay && root.hasAttribute('data-prts-rail-open')
6982
8069
  railLauncher.setAttribute('aria-expanded', String(open))
6983
- railLauncher.setAttribute('aria-label', open ? '关闭 P.R.T.S. 导航' : '打开 P.R.T.S. 导航')
8070
+ const closedLabel = phoneRailGesture() ? '长按并向下滑动打开 P.R.T.S. 导航' : '打开 P.R.T.S. 导航'
8071
+ railLauncher.setAttribute('aria-label', open ? '关闭 P.R.T.S. 导航' : closedLabel)
6984
8072
  if (overlay && !open) {
6985
8073
  navRail.setAttribute('aria-hidden', 'true')
6986
8074
  navRail.setAttribute('inert', '')
@@ -7006,13 +8094,17 @@ if (root.hasAttribute('data-prts-rail-open')) navRail?.querySelector('button')?.
7006
8094
  if (window?.requestAnimationFrame) window.requestAnimationFrame(focusFirst)
7007
8095
  else window?.setTimeout?.(focusFirst, 0)
7008
8096
  }
7009
- function setRailViewport(width = window.innerWidth) {
7010
- const nextMode = Number(width) >= 1180 ? 'docked' : 'overlay'
7011
- if (nextMode === railMode) return railMode
8097
+ function setRailViewport(width = window.innerWidth, { forceClose = false } = {}) {
8098
+ const nextViewport = Number(width) >= 1180 ? 'wide' : 'narrow'
8099
+ const viewportChanged = nextViewport !== railViewport
8100
+ const nextMode = railDefaultHidden || nextViewport === 'narrow' ? 'overlay' : 'docked'
8101
+ const modeChanged = nextMode !== railMode
8102
+ if (!viewportChanged && !modeChanged && !forceClose) return railMode
8103
+ railViewport = nextViewport
7012
8104
  railMode = nextMode
8105
+ clearRailGesture()
7013
8106
  root.dataset.prtsRailMode = nextMode
7014
- if (nextMode === 'docked') root.removeAttribute('data-prts-rail-open')
7015
- else root.removeAttribute('data-prts-rail-open')
8107
+ root.removeAttribute('data-prts-rail-open')
7016
8108
  syncRailState()
7017
8109
  return nextMode
7018
8110
  }
@@ -7027,20 +8119,24 @@ closeRail({ returnFocus: true })
7027
8119
  }
7028
8120
  function onDocumentClick(event) {
7029
8121
  if (railMode !== 'overlay' || !root.hasAttribute('data-prts-rail-open')) return
7030
- if (navRail?.contains?.(event.target) || railLauncher?.contains?.(event.target)) return
8122
+ const settingsPanel = shell?.querySelector?.('[data-prts-theme-settings]')
8123
+ const insideSettingsContent = settingsPanel?.contains?.(event.target) && event.target !== settingsPanel
8124
+ if (navRail?.contains?.(event.target) || railLauncher?.contains?.(event.target) || insideSettingsContent) return
7031
8125
  closeRail()
7032
8126
  }
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
8127
  function onResponsiveChange() {
8128
+ clearRailGesture()
7038
8129
  setRailViewport(window.innerWidth)
8130
+ syncRailState()
7039
8131
  settingsOverlay?.scheduleScalePreviewRefresh?.()
7040
8132
  }
7041
8133
  function bindResponsiveQueries() {
7042
8134
  railViewportQuery = window.matchMedia?.('(min-width: 1180px)')
8135
+ railPointerQuery = window.matchMedia?.('(pointer: coarse)')
8136
+ railHoverQuery = window.matchMedia?.('(hover: none)')
7043
8137
  railViewportQuery?.addEventListener?.('change', onResponsiveChange)
8138
+ railPointerQuery?.addEventListener?.('change', onResponsiveChange)
8139
+ railHoverQuery?.addEventListener?.('change', onResponsiveChange)
7044
8140
  }
7045
8141
  function disableTheme() { onThemeDisable() }
7046
8142
  function mount() {
@@ -7066,6 +8162,7 @@ trigger: shell.querySelector('[data-prts-rail-brand]'),
7066
8162
  panel: shell.querySelector('[data-prts-theme-settings]'),
7067
8163
  backdrop: shell.querySelector('[data-prts-settings-backdrop]'),
7068
8164
  onPreferenceChange,
8165
+ onPreferencePreview,
7069
8166
  onResetVisual: onVisualReset,
7070
8167
  onRetrySave,
7071
8168
  getConversationScalePreview,
@@ -7079,25 +8176,53 @@ conversationObserver = new window.MutationObserver(syncConversationState)
7079
8176
  conversationObserver.observe(operationRegion, { childList: true, subtree: true, attributes: true, attributeFilter: ['hidden', 'data-chat-flow-kind', 'data-message-role'] })
7080
8177
  schemeObserver = new window.MutationObserver(syncSchemeToggle)
7081
8178
  schemeObserver.observe(root, { attributes: true, attributeFilter: ['data-prts-scheme'] })
7082
- railLauncher.addEventListener('click', toggleRail)
7083
- navRail.addEventListener('click', onRailAction)
8179
+ railLauncher.addEventListener('click', onRailClick)
8180
+ railLauncher.addEventListener('pointerdown', onRailPointerDown)
8181
+ railLauncher.addEventListener('pointermove', onRailPointerMove)
8182
+ railLauncher.addEventListener('pointerup', onRailPointerUp)
8183
+ railLauncher.addEventListener('pointercancel', clearRailGesture)
8184
+ railLauncher.addEventListener('lostpointercapture', onRailLostPointerCapture)
7084
8185
  document.addEventListener('keydown', onRailKeydown)
7085
8186
  document.addEventListener('click', onDocumentClick)
7086
8187
  schemeToggle.addEventListener('click', toggleScheme)
8188
+ schemeToggle.addEventListener('pointerdown', onSchemePointerDown)
8189
+ schemeToggle.addEventListener('pointermove', onSchemePointerMove)
8190
+ schemeToggle.addEventListener('pointerup', onSchemePointerUp)
8191
+ schemeToggle.addEventListener('pointercancel', cancelSchemePointer)
8192
+ schemeToggle.addEventListener('lostpointercapture', onSchemeLostPointerCapture)
8193
+ window.addEventListener?.('blur', cancelSchemePointer)
7087
8194
  themeDisable.addEventListener('click', disableTheme)
7088
8195
  syncConversationState()
7089
8196
  syncSchemeToggle()
7090
8197
  return true
7091
8198
  }
7092
8199
  function dispose() {
7093
- railLauncher?.removeEventListener('click', toggleRail)
7094
- navRail?.removeEventListener('click', onRailAction)
8200
+ clearRailGesture()
8201
+ cancelSchemePointer()
8202
+ clearSchemeClickSuppression()
8203
+ clearSchemePressDelays()
8204
+ railLauncher?.removeEventListener('click', onRailClick)
8205
+ railLauncher?.removeEventListener('pointerdown', onRailPointerDown)
8206
+ railLauncher?.removeEventListener('pointermove', onRailPointerMove)
8207
+ railLauncher?.removeEventListener('pointerup', onRailPointerUp)
8208
+ railLauncher?.removeEventListener('pointercancel', clearRailGesture)
8209
+ railLauncher?.removeEventListener('lostpointercapture', onRailLostPointerCapture)
7095
8210
  document.removeEventListener('keydown', onRailKeydown)
7096
8211
  document.removeEventListener('click', onDocumentClick)
7097
8212
  schemeToggle?.removeEventListener('click', toggleScheme)
8213
+ schemeToggle?.removeEventListener('pointerdown', onSchemePointerDown)
8214
+ schemeToggle?.removeEventListener('pointermove', onSchemePointerMove)
8215
+ schemeToggle?.removeEventListener('pointerup', onSchemePointerUp)
8216
+ schemeToggle?.removeEventListener('pointercancel', cancelSchemePointer)
8217
+ schemeToggle?.removeEventListener('lostpointercapture', onSchemeLostPointerCapture)
8218
+ window.removeEventListener?.('blur', cancelSchemePointer)
7098
8219
  themeDisable?.removeEventListener('click', disableTheme)
7099
8220
  railViewportQuery?.removeEventListener?.('change', onResponsiveChange)
8221
+ railPointerQuery?.removeEventListener?.('change', onResponsiveChange)
8222
+ railHoverQuery?.removeEventListener?.('change', onResponsiveChange)
7100
8223
  railViewportQuery = undefined
8224
+ railPointerQuery = undefined
8225
+ railHoverQuery = undefined
7101
8226
  resizeShield.dispose()
7102
8227
  settingsOverlay?.dispose()
7103
8228
  conversationObserver?.disconnect()
@@ -7106,7 +8231,10 @@ shell?.remove()
7106
8231
  root.removeAttribute('data-prts-conversation-state')
7107
8232
  root.removeAttribute('data-prts-rail-mode')
7108
8233
  root.removeAttribute('data-prts-rail-open')
7109
- navRail = railLauncher = railMode = undefined
8234
+ root.removeAttribute('data-prts-rail-default-hidden')
8235
+ navRail = railLauncher = railMode = railViewport = undefined
8236
+ railDefaultHidden = false
8237
+ schemeIntent = undefined
7110
8238
  shell = settingsOverlay = schemeToggle = themeDisable = connectionIndicator = undefined
7111
8239
  conversationObserver = schemeObserver = undefined
7112
8240
  operationRegion = undefined
@@ -7119,7 +8247,12 @@ if (!preferences?.enabled) {
7119
8247
  dispose()
7120
8248
  return false
7121
8249
  }
8250
+ const nextRailDefaultHidden = Boolean(preferences.railDefaultHidden)
8251
+ const railPreferenceChanged = nextRailDefaultHidden !== railDefaultHidden
8252
+ railDefaultHidden = nextRailDefaultHidden
7122
8253
  if (!mount()) return false
8254
+ root.toggleAttribute('data-prts-rail-default-hidden', railDefaultHidden)
8255
+ setRailViewport(window.innerWidth, { forceClose: railPreferenceChanged })
7123
8256
  const connection = status?.connection || 'unknown'
7124
8257
  const connectionLabel = status?.connectionLabel || '未知'
7125
8258
  connectionIndicator.dataset.state = connection
@@ -7160,7 +8293,6 @@ startupTimings,
7160
8293
  const safeMode = isSafeMode(window?.location?.search ?? '')
7161
8294
  const storage = window?.localStorage
7162
8295
  const themeService = contextService(ctx, 'theme')
7163
- const theme = createThemeController({ document, window, cssText, service: themeService })
7164
8296
  const startup = createPrtsStartupSequence({ document, window, prtsEmblem: assets.prtsEmblem, rhodesEmblem: assets.emblem, timings: startupTimings })
7165
8297
  const composerGlass = createComposerGlassAdapter({ document, window })
7166
8298
  const assistantGlass = createAssistantGlassAdapter({ document, window })
@@ -7175,6 +8307,15 @@ status = { ...status, particle: next }
7175
8307
  sync()
7176
8308
  },
7177
8309
  })
8310
+ const theme = createThemeController({
8311
+ document,
8312
+ window,
8313
+ cssText,
8314
+ service: themeService,
8315
+ onTransitionStateChange(active) {
8316
+ particleField.setSchemeTransitionActive(active)
8317
+ },
8318
+ })
7178
8319
  const sessions = contextService(ctx, 'sessions')
7179
8320
  const toBottom = createToBottomAdapter({ document, window })
7180
8321
  const conversationControls = createConversationControlAdapter({ document, window })
@@ -7266,8 +8407,11 @@ return
7266
8407
  if (!themeAlreadyApplied) theme.apply(preferences)
7267
8408
  operations ||= createOperationsShell({
7268
8409
  document, window, assets, adapter, hostGeometry,
7269
- onSchemeToggle(next) {
7270
- theme.setTheme(next)
8410
+ onSchemeToggle(next, interaction) {
8411
+ return theme.setTheme(next, { ...interaction, animate: true })
8412
+ },
8413
+ onSchemeDragStart(next, interaction) {
8414
+ return theme.beginThemeTransition(next, interaction)
7271
8415
  },
7272
8416
  onThemeDisable() {
7273
8417
  persistAndApply(updatePreferenceValue(preferences, 'enabled', false))
@@ -7275,6 +8419,10 @@ persistAndApply(updatePreferenceValue(preferences, 'enabled', false))
7275
8419
  onPreferenceChange(key, value) {
7276
8420
  persistAndApply(updatePreferenceValue(preferences, key, value))
7277
8421
  },
8422
+ onPreferencePreview(key, value) {
8423
+ if (key !== 'particleTraversalSpeed') return
8424
+ particleField.update(updatePreferenceValue(preferences, key, value))
8425
+ },
7278
8426
  onVisualReset() {
7279
8427
  persistAndApply({
7280
8428
  ...DEFAULT_PREFERENCES,