/*!
 * SR-DevBox 开发者效率工具箱
 *
 * @author     Zhu Rui
 * @website    https://srdevbox.com
 * @email      30501250@qq.com
 * @copyright  © 2026 Zhu Rui. All Rights Reserved.
 *
 * 本文件及其相关代码为 SR-DevBox 项目的组成部分，版权归作者 Zhu Rui 所有。
 * 未经书面许可，禁止以任何形式复制、修改、分发或用于商业目的。
 *
 * This file is part of the SR-DevBox project.
 * Copyright (c) 2026 Zhu Rui. All rights reserved.
 * Unauthorized copying, modification, distribution, or commercial use is prohibited.
 */html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden;background:#08080f}.pg-app *{margin:0;padding:0;box-sizing:border-box;-webkit-user-select:none;user-select:none}.pg-app{--pg-bg: #08080f;--pg-panel-bg: rgba(13, 13, 23, .75);--pg-border: rgba(255, 255, 255, .08);--pg-gold: #ffd700;--pg-cyan: #06b6d4;--pg-text: #f3f4f6;--pg-text-dim: #9ca3af;--pg-font: "Outfit", "Microsoft YaHei", sans-serif;--pg-code: "JetBrains Mono", monospace;font-family:var(--pg-font);background:var(--pg-bg);color:var(--pg-text);overflow:hidden;height:100vh;width:100vw;font-size:13px;display:flex;flex-direction:column}.pg-layout{display:flex;flex:1;overflow:hidden}.pg-sidebar{width:300px;min-width:300px;height:100%;background:#0b0b14;border-right:1px solid var(--pg-border);display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden;z-index:10;box-shadow:6px 0 24px #00000080;transition:width .3s cubic-bezier(.4,0,.2,1),min-width .3s cubic-bezier(.4,0,.2,1),border-color .3s}.pg-sidebar::-webkit-scrollbar{width:4px}.pg-sidebar::-webkit-scrollbar-thumb{background:rgba(255,215,0,.2);border-radius:2px}.pg-header{padding:16px 18px;border-bottom:1px solid var(--pg-border);display:flex;align-items:center;gap:10px;flex-shrink:0;position:sticky;top:0;z-index:20;background:#0b0b14}.pg-header-icon{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,rgba(255,215,0,.15),rgba(6,182,212,.1));border:1px solid rgba(255,215,0,.2);display:flex;align-items:center;justify-content:center;color:var(--pg-gold)}.pg-logo-link{display:flex;align-items:center;flex-shrink:0;text-decoration:none;transition:opacity .2s}.pg-logo-link:hover{opacity:.8}.pg-logo-img{width:32px;height:32px;border-radius:8px;object-fit:contain;filter:drop-shadow(0 0 6px rgba(255,215,0,.5));transition:filter .3s}.pg-logo-link:hover .pg-logo-img{filter:drop-shadow(0 0 10px rgba(255,215,0,.8))}.pg-header-title{font-size:16px;font-weight:700;letter-spacing:.5px}.pg-header-badge{font-size:10px;color:var(--pg-gold);background:rgba(255,215,0,.1);border:1px solid rgba(255,215,0,.2);padding:2px 8px;border-radius:10px;margin-left:auto}.pg-section{position:relative;padding:14px 18px;border-bottom:1px solid var(--pg-border);margin-top:6px}.pg-section:before{content:"";position:absolute;top:0;left:18px;right:18px;height:1px;background:linear-gradient(90deg,transparent,rgba(255,215,0,.12),transparent)}.pg-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:1.2px;color:var(--pg-text-dim);margin-bottom:12px;display:flex;align-items:center;gap:6px;cursor:pointer;transition:color .2s}.pg-section-title:hover{color:var(--pg-text)}.pg-section-title i:first-child{width:14px;height:14px}.pg-section-chevron{width:14px;height:14px;margin-left:auto;transition:transform .25s ease;opacity:.4}.pg-section.collapsed .pg-section-chevron{transform:rotate(-90deg)}.pg-section-content{overflow:hidden;max-height:2000px;transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .25s ease,padding .3s cubic-bezier(.4,0,.2,1),margin-top .3s cubic-bezier(.4,0,.2,1),border-color .25s ease;opacity:1;background:#131322;border-radius:8px;padding:12px 14px;margin-top:6px;border:1px solid rgba(255,255,255,.12)}.pg-section.collapsed .pg-section-content{max-height:0;opacity:0;padding-top:0;padding-bottom:0;margin-top:0;border-color:transparent}.pg-section.collapsed .pg-section-title{margin-bottom:0}.pg-param-row{margin-bottom:12px}.pg-param-label{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:12px;color:var(--pg-text-dim);color:#fff}.pg-param-value{color:var(--pg-gold);font-family:var(--pg-code);font-size:11px;font-weight:500}.pg-slider{width:100%;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:rgba(255,255,255,.1);border-radius:2px;outline:none;cursor:pointer}.pg-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--pg-gold);cursor:pointer;box-shadow:0 0 8px #ffd70066;transition:transform .15s}.pg-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.pg-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--pg-gold);cursor:pointer;border:none}.pg-select{width:100%;background:rgba(255,255,255,.05);border:1px solid var(--pg-border);color:var(--pg-text);padding:8px 12px;border-radius:8px;font-family:var(--pg-font);font-size:12px;cursor:pointer;outline:none;transition:border-color .2s}.pg-select:hover,.pg-select:focus{border-color:#ffd7004d}.pg-select option{background:#0b0b14;color:var(--pg-text)}.pg-color-row{display:flex;align-items:center;gap:8px}.pg-color-picker{width:32px;height:32px;border:1px solid var(--pg-border);border-radius:8px;cursor:pointer;padding:0;background:none;overflow:hidden}.pg-color-picker::-webkit-color-swatch-wrapper{padding:0}.pg-color-picker::-webkit-color-swatch{border:none;border-radius:6px}.pg-color-hex{font-family:var(--pg-code);font-size:11px;color:var(--pg-text-dim)}.pg-presets-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pg-preset-btn{background:rgba(255,255,255,.04);border:1px solid var(--pg-border);border-radius:8px;padding:10px 8px;color:var(--pg-text);font-family:var(--pg-font);font-size:12px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;gap:6px}.pg-preset-btn:hover{background:rgba(255,215,0,.08);border-color:#ffd7004d}.pg-preset-btn.active{background:rgba(255,215,0,.12);border-color:var(--pg-gold);box-shadow:0 0 12px #ffd7001a;color:var(--pg-gold)}.pg-preset-btn i{width:14px;height:14px}.pg-sidebar-actions{position:sticky;bottom:0;background:#0b0b14;border-top:1px solid var(--pg-border);padding:14px 18px;margin-top:auto;z-index:15;box-shadow:0 -8px 24px #0009}.pg-sidebar-actions .pg-action-row{display:flex;gap:8px;padding:0;margin-bottom:8px}.pg-sidebar-actions .pg-action-row:last-child{margin-bottom:0}.pg-btn{flex:1;padding:10px 14px;border-radius:8px;font-family:var(--pg-font);font-size:12px;font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid transparent}.pg-btn i{width:14px;height:14px}.pg-btn-primary{background:linear-gradient(135deg,#f59e0b,#d97706);color:#000;border-color:#f59e0b66}.pg-btn-primary:hover{box-shadow:0 0 20px #ffd7004d;transform:translateY(-1px)}.pg-btn-secondary{background:rgba(255,255,255,.04);border-color:var(--pg-border);color:var(--pg-text)}.pg-btn-secondary:hover{background:rgba(255,255,255,.08);border-color:#ffffff26}.pg-btn-accent{background:rgba(6,182,212,.1);border-color:#06b6d44d;color:var(--pg-cyan)}.pg-btn-accent:hover{background:rgba(6,182,212,.2);box-shadow:0 0 12px #06b6d426}.pg-preview{flex:1;position:relative;display:flex;flex-direction:column;min-width:0}.pg-toolbar{position:absolute;top:16px;left:16px;right:16px;z-index:5;display:flex;align-items:center;gap:8px;background:var(--pg-panel-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:8px 14px;box-shadow:0 8px 24px -8px #0009}.pg-toolbar-btn{width:36px;height:36px;border-radius:8px;background:rgba(255,255,255,.04);border:1px solid var(--pg-border);color:var(--pg-text-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}.pg-toolbar-btn:hover{background:rgba(255,215,0,.1);border-color:#ffd7004d;color:var(--pg-gold)}.pg-toolbar-btn.active{background:rgba(255,215,0,.12);border-color:var(--pg-gold);color:var(--pg-gold);box-shadow:0 0 10px #ffd70026}.pg-toolbar-btn i{width:16px;height:16px}.pg-toolbar-sep{width:1px;height:24px;background:var(--pg-border);margin:0 4px}.pg-toolbar-info{margin-left:auto;font-size:11px;font-family:var(--pg-code);color:var(--pg-text-dim);display:flex;align-items:center;gap:12px}.pg-toolbar-stat{display:flex;align-items:center;gap:4px}.pg-toolbar-stat .pg-dot{width:6px;height:6px;border-radius:50%;background:#10b981;box-shadow:0 0 6px #10b981}.pg-canvas-wrap{flex:1;position:relative;min-width:0}.pg-canvas-wrap canvas{display:block;width:100%;height:100%}.pg-footer-bar{position:absolute;bottom:16px;left:16px;right:16px;z-index:5;display:flex;align-items:center;justify-content:space-between;background:var(--pg-panel-bg);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.1);border-radius:10px;padding:8px 14px;font-size:11px;color:var(--pg-text-dim)}.pg-footer-bar .pg-fps{font-family:var(--pg-code);color:var(--pg-cyan)}.pg-toggle-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.pg-toggle-label{font-size:12px;color:var(--pg-text-dim);color:#fff}.pg-toggle{width:36px;height:20px;background:rgba(255,255,255,.1);border-radius:10px;border:none;cursor:pointer;position:relative;transition:background .2s}.pg-toggle.on{background:rgba(255,215,0,.3)}.pg-toggle:after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:var(--pg-text-dim);transition:all .2s}.pg-toggle.on:after{left:19px;background:var(--pg-gold);box-shadow:0 0 6px #ffd70066}.pg-checkbox-group{display:flex;flex-wrap:wrap;gap:6px}.pg-chip{padding:5px 10px;border-radius:6px;background:rgba(255,255,255,.04);border:1px solid var(--pg-border);color:var(--pg-text-dim);font-size:11px;font-family:var(--pg-font);cursor:pointer;transition:all .15s}.pg-chip:hover{border-color:#ffd70033}.pg-chip.active{background:rgba(255,215,0,.1);border-color:#ffd70066;color:var(--pg-gold)}.pg-app ::-webkit-scrollbar{width:5px}.pg-app ::-webkit-scrollbar-track{background:transparent}.pg-app ::-webkit-scrollbar-thumb{background:rgba(255,255,255,.1);border-radius:3px}.pg-palette-dot{width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.15);cursor:pointer;position:relative;transition:all .15s;padding:0;overflow:hidden}.pg-palette-dot input[type=color]{position:absolute;top:-4px;left:-4px;width:calc(100% + 8px);height:calc(100% + 8px);border:none;cursor:pointer;opacity:0}.pg-palette-remove{position:absolute;top:-4px;right:-4px;width:14px;height:14px;border-radius:50%;background:rgba(239,68,68,.8);border:1px solid rgba(255,255,255,.2);color:#fff;font-size:9px;line-height:12px;text-align:center;cursor:pointer;display:none;z-index:2}.pg-palette-add{width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.05);border:1px dashed rgba(255,255,255,.2);color:var(--pg-text-dim);font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}.pg-palette-toggle{display:flex;align-items:center;gap:8px;margin-bottom:8px}[id$=ConfigMode] .pg-chip{text-align:center;font-size:11px;padding:4px 10px;font-weight:500;border-radius:6px}[id$=ConfigMode] .pg-chip.active{background:#ffffff!important;border-color:#fff!important;color:#000!important;font-weight:600}.pg-physics-hint{font-size:10px;color:#ffffff4d;margin-top:-4px;margin-bottom:8px;font-style:italic}#pgConeCanvas,#pgCameraCanvas{image-rendering:auto}@media (max-width: 768px){.pg-sidebar{width:260px;min-width:260px}}.pg-param-row{transition:max-height .3s cubic-bezier(.4,0,.2,1),opacity .3s ease,margin-bottom .3s cubic-bezier(.4,0,.2,1),padding .3s ease;max-height:240px;opacity:1}.pg-param-row.hidden{max-height:0!important;opacity:0!important;margin-top:0!important;margin-bottom:0!important;padding-top:0!important;padding-bottom:0!important;border:none!important;overflow:hidden!important;pointer-events:none}.pg-section.hidden{display:none!important}.pg-presets-label{font-size:10px;color:#888;margin-bottom:8px;text-transform:uppercase;letter-spacing:.8px}.pg-presets-grid-shapes{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.pg-preset-shape-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:7px 2px 5px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:6px;color:#ffffff80;font-size:9px;font-family:var(--pg-font);cursor:pointer;transition:all .2s;line-height:1}.pg-preset-shape-btn:hover{background:rgba(255,215,0,.1);border-color:#ffd70059;color:var(--pg-gold);transform:translateY(-1px);box-shadow:0 2px 8px #ffd7001a}.pg-preset-shape-btn.active{background:rgba(255,215,0,.12);border-color:var(--pg-gold);color:var(--pg-gold)}.pg-preset-shape-btn i,.pg-preset-shape-btn svg{width:16px;height:16px;flex-shrink:0}.pg-preset-shape-btn .pg-shape-icon{font-size:15px;line-height:1}.pg-timeline{position:absolute;bottom:0;left:0;right:0;height:140px;background:#0b0b14;border-top:1px solid rgba(255,255,255,.08);display:flex;z-index:20;box-shadow:0 -5px 20px #00000080}.pg-timeline-ctrls{width:200px;padding:15px;border-right:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;justify-content:center;gap:10px}.pg-timeline-frames-wrap{flex:1;overflow-x:auto;overflow-y:hidden;padding:15px;display:flex;align-items:center}.pg-timeline-frames{display:flex;gap:15px}.timeline-thumb{width:120px;height:100px;background:#131322;border:1px solid rgba(255,255,255,.1);border-radius:6px;display:flex;flex-direction:column;transition:border-color .2s;position:relative}.timeline-thumb.active{border-color:gold;box-shadow:0 0 10px #ffd70033}.thumb-header{background:rgba(255,255,255,.05);padding:4px 8px;font-size:11px;font-weight:700;cursor:pointer;border-bottom:1px solid rgba(255,255,255,.1)}.thumb-header:hover{background:rgba(255,255,255,.1)}.timeline-thumb.active .thumb-header{background:rgba(255,215,0,.15);color:gold}.thumb-body{padding:6px;flex:1;display:flex;flex-direction:column;gap:4px}.thumb-file{display:none}.thumb-btn{display:flex;align-items:center;justify-content:center;gap:4px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:4px;padding:4px;font-size:10px;cursor:pointer;color:#ccc}.thumb-btn:hover{background:rgba(255,255,255,.1);color:#fff}.thumb-ctrls{display:flex;justify-content:space-between;margin-top:2px}.thumb-ctrl{display:flex;flex-direction:column;gap:2px}.thumb-ctrl label{font-size:9px;color:#888}.thumb-ctrl input{width:45px;background:rgba(0,0,0,.3);border:1px solid rgba(255,255,255,.1);color:gold;font-size:10px;border-radius:3px;padding:2px 4px}.btn-add-frame{width:100px;height:100px;border:1px dashed rgba(255,255,255,.2);border-radius:6px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:#888;transition:all .2s}.btn-add-frame:hover{border-color:gold;color:gold;background:rgba(255,215,0,.05)}.color-preset{width:24px;height:24px;border-radius:50%;border:2px solid rgba(255,255,255,.1);cursor:pointer;transition:transform .1s}.color-preset:hover{transform:scale(1.1);border-color:#fff}.ps-timeline{height:150px;flex-shrink:0;background:#0b0b14;display:flex;flex-direction:column;z-index:20;box-shadow:0 -5px 20px #00000080;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.ps-timeline-header{background:rgba(255,255,255,.05);padding:4px 10px;font-size:12px;color:var(--pg-text-dim);border-bottom:1px solid rgba(255,255,255,.08);border-right:1px solid rgba(255,255,255,.08);width:max-content}.ps-timeline-frames{flex:1;display:flex;gap:2px;padding:10px;overflow-x:auto;background:#0b0b14}.ps-thumb{display:flex;flex-direction:column;align-items:center;width:60px}.ps-thumb-img-wrap{width:60px;height:60px;background:#1a1a24;border:1px solid #aaa;position:relative;cursor:grab;display:flex;align-items:center;justify-content:center}.ps-thumb.active .ps-thumb-img-wrap{border:2px solid var(--pg-gold);box-shadow:0 0 10px #ffd7004d}.ps-thumb-num{position:absolute;top:0;left:0;background:rgba(83,83,83,.8);color:#fff;font-size:10px;padding:0 3px}.ps-thumb-duration{font-size:11px;color:#ccc;margin-top:4px;cursor:pointer;display:flex;align-items:center;gap:2px}.ps-thumb-duration:hover{color:#fff}.ps-thumb.dragging{opacity:.4}.ps-thumb.drag-over .ps-thumb-img-wrap{border:2px dashed var(--pg-gold)!important}.ps-timeline-toolbar{height:32px;background:#0b0b14;border-top:1px solid #444;display:flex;align-items:center;justify-content:space-between;padding:0 10px}.ps-toolbar-left,.ps-toolbar-center,.ps-toolbar-right{display:flex;align-items:center;gap:8px}.ps-icon{width:16px;height:16px;color:#fff;cursor:pointer;transition:opacity .15s,transform .15s}.ps-icon:hover{color:#fff;opacity:.75}.ps-loop-select{background:transparent;color:#888;border:none;font-size:12px;cursor:pointer}.ps-loop-select:focus{outline:none}.pg-palette-wrap{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin-bottom:8px}.pg-palette-dot{width:26px;height:26px;border-radius:50%;border:2px solid rgba(255,255,255,.15);cursor:pointer;position:relative}.pg-palette-dot:hover{border-color:var(--pg-gold);transform:scale(1.15)}.pg-palette-dot input[type=color]{position:absolute;top:-4px;left:-4px;width:calc(100% + 8px);height:calc(100% + 8px);opacity:0;cursor:pointer}.pg-palette-remove{position:absolute;top:-4px;right:-4px;width:14px;height:14px;background:#ff3366;color:#fff;border-radius:50%;font-size:10px;text-align:center;line-height:14px;display:none}.pg-palette-dot:hover .pg-palette-remove{display:block}.pg-palette-add{width:26px;height:26px;border-radius:50%;background:rgba(255,255,255,.05);border:1px dashed rgba(255,255,255,.2);color:#fff;cursor:pointer;font-size:16px;line-height:22px;text-align:center;padding:0}.pg-palette-add:hover{border-color:var(--pg-gold);color:var(--pg-gold);background:rgba(255,215,0,.08)}.floating-panel{position:absolute!important;background:rgba(11,11,20,.82)!important;-webkit-backdrop-filter:blur(15px)!important;backdrop-filter:blur(15px)!important;border:1px solid rgba(255,255,255,.12)!important;border-radius:12px!important;width:300px!important;box-shadow:0 10px 30px #00000080!important;margin-top:0!important;z-index:100!important;padding:0!important;overflow:visible!important}.floating-panel:before{display:none!important}.floating-panel .pg-section-title{padding:12px 14px 10px!important;margin-bottom:0!important;cursor:move!important;border-bottom:1px solid rgba(255,255,255,.08)!important;display:flex!important;align-items:center!important;background:rgba(255,255,255,.02)!important;border-top-left-radius:11px!important;border-top-right-radius:11px!important}.floating-panel .pg-section-content{margin-top:0!important;border:none!important;border-radius:0 0 12px 12px!important;background:transparent!important;padding:12px 14px!important}.drag-grip{color:var(--pg-text-dim);transition:color .2s}.pg-section-title:hover .drag-grip{color:var(--pg-gold)}#pgSectionParticleSetting{left:16px;top:80px}#pgSectionMaterialColor{left:332px;top:80px}#pgSectionFlightAnim{right:16px;top:80px}.pg-sidebar-collapse-btn{width:26px;height:26px;border-radius:6px;background:rgba(255,215,0,.12);border:1px solid rgba(255,215,0,.3);color:var(--pg-gold);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s;padding:0;margin-left:auto;box-shadow:0 0 8px #ffd70026}.pg-sidebar-collapse-btn:hover{background:var(--pg-gold);border-color:var(--pg-gold);color:#000;box-shadow:0 0 12px #ffd70066}.pg-sidebar-collapse-btn svg{width:14px;height:14px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.pg-sidebar.collapsed{width:0!important;min-width:0!important;overflow:visible!important;border-right:none!important}.pg-sidebar.collapsed>*:not(.pg-header){display:none!important}.pg-sidebar.collapsed .pg-header{background:transparent!important;border-bottom:none!important;padding:0!important;margin:0!important;height:0!important;overflow:visible!important}.pg-sidebar.collapsed .pg-header>*:not(#sidebarCollapseBtn){display:none!important}.pg-sidebar.collapsed #sidebarCollapseBtn{position:absolute!important;left:0!important;top:20px!important;width:24px!important;height:40px!important;border-radius:0 8px 8px 0!important;z-index:200!important;background:#0b0b14!important;border:1px solid var(--pg-border)!important;border-left:none!important;box-shadow:4px 0 10px #0006!important}.pg-sidebar.collapsed #sidebarCollapseBtn svg{transform:rotate(180deg)!important}
