:root,[data-theme=light]{--pt-bg: #f1f5f9;--pt-canvas-bg: #cbd5e1;--pt-panel-bg: #ffffff;--pt-panel-border: #e2e8f0;--pt-text-primary: #0f172a;--pt-text-secondary: #475569;--pt-text-muted: #64748b;--pt-primary: #f97316;--pt-primary-hover: #ea580c;--pt-primary-light: #ffedd5;--pt-primary-foreground: #ffffff;--pt-success: #059669;--pt-success-soft: rgba(5, 150, 105, .12);--pt-warning: #d97706;--pt-error: #dc2626;--pt-info: #0284c7;--pt-grid-line: rgba(148, 163, 184, .28);--pt-panel-shadow: 0 4px 16px rgba(15,23,42,.06);--sound-fork: #b8c2cf;--sound-fork-stroke: #64748b;--sound-box: #c69a63;--sound-box-stroke: #8a6134;--sound-wave-a: #f59e0b;--sound-wave-b: #38bdf8;--sound-glass: rgba(148, 197, 235, .2);--sound-glass-stroke: #7fb2d8;--sound-molecule: #0ea5e9;--sound-bell: #f0b64a;--sound-bell-stroke: #b5761f;--sound-med-air: rgba(148, 163, 184, .1);--sound-base-fill: #b9c1ca;--sound-base-stroke: #7c828b;--sound-pipe: #5b6472;--sound-valve: #c8ced6;--sound-valve-disc: #99a1aa;--sound-valve-stroke: #6b7280}[data-theme=dark]{--pt-bg: #000000;--pt-canvas-bg: #0f172a;--pt-panel-bg: rgba(24, 24, 27, .7);--pt-panel-border: rgba(255, 255, 255, .08);--pt-text-primary: #f1f5f9;--pt-text-secondary: #a1a1aa;--pt-text-muted: #71717a;--pt-primary: #fb923c;--pt-primary-hover: #f97316;--pt-primary-light: rgba(251, 146, 60, .15);--pt-primary-foreground: #ffffff;--pt-success: #34d399;--pt-success-soft: rgba(52, 211, 153, .15);--pt-warning: #fbbf24;--pt-error: #f87171;--pt-info: #60a5fa;--pt-grid-line: rgba(148, 163, 184, .12);--pt-panel-shadow: 0 4px 24px rgba(0,0,0,.3);--sound-fork: #cbd5e1;--sound-fork-stroke: #e2e8f0;--sound-box: #8a6134;--sound-box-stroke: #c8a06a;--sound-wave-a: #fbbf24;--sound-wave-b: #60a5fa;--sound-glass: rgba(125, 211, 252, .12);--sound-glass-stroke: #7fb2d8;--sound-molecule: #60a5fa;--sound-bell: #f0b64a;--sound-bell-stroke: #d99a2e;--sound-med-air: rgba(148, 163, 184, .08);--sound-base-fill: #414b59;--sound-base-stroke: #6b7280;--sound-pipe: #9aa3ad;--sound-valve: #8b95a3;--sound-valve-disc: #5d6672;--sound-valve-stroke: #c3cbd6}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,Noto Sans SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif;background:var(--pt-bg);color:var(--pt-text-primary);font-size:14px;line-height:1.6;transition:background-color .3s ease,color .3s ease;min-height:100vh}.ambient-glow{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:-1}.ambient-glow:before{content:"";position:absolute;top:-180px;right:-120px;width:460px;height:460px;border-radius:50%;background:radial-gradient(circle,rgba(249,115,22,.12) 0%,transparent 68%)}.top-nav{position:sticky;top:0;z-index:50;background:var(--pt-panel-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid var(--pt-panel-border);height:56px;display:flex;align-items:center;padding:0 16px;transition:background-color .3s ease,border-color .3s ease}.top-nav .logo{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;color:var(--pt-text-primary);text-decoration:none}.top-nav .logo svg{color:var(--pt-primary)}.top-nav .breadcrumb{margin-left:16px;padding-left:16px;border-left:1px solid var(--pt-panel-border);font-size:13px;color:var(--pt-text-muted);display:flex;align-items:center;gap:6px}.top-nav .breadcrumb a{color:var(--pt-text-secondary);text-decoration:none}.top-nav .breadcrumb a:hover{color:var(--pt-primary)}.top-nav .breadcrumb .current{color:var(--pt-text-primary);font-weight:500}.top-nav .nav-actions{margin-left:auto;display:flex;align-items:center;gap:4px}.icon-btn{width:36px;height:36px;border-radius:8px;border:none;background:transparent;color:var(--pt-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .2s ease}.icon-btn:hover{background:var(--pt-primary-light);color:var(--pt-primary)}.theme-icon-dark{display:none}.theme-icon-light,[data-theme=dark] .theme-icon-dark{display:inline-block}[data-theme=dark] .theme-icon-light{display:none}.page-header{padding:24px 20px 16px;text-align:center}.page-header h1{font-size:22px;font-weight:700;color:var(--pt-text-primary);margin-bottom:6px;display:flex;align-items:center;justify-content:center;gap:10px}.page-header h1 i{color:var(--pt-primary)}.page-header p{font-size:13px;color:var(--pt-text-secondary);max-width:660px;margin:0 auto}.main-container{max-width:1400px;margin:0 auto;padding:0 16px 40px;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:16px;align-items:start}.panel{background:var(--pt-panel-bg);border:1px solid var(--pt-panel-border);border-radius:12px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:background-color .3s ease,border-color .3s ease}.panel-header{padding:12px 14px;border-bottom:1px solid var(--pt-panel-border);font-weight:600;font-size:14px;color:var(--pt-text-primary);display:flex;align-items:center;gap:8px}.panel-header i{color:var(--pt-primary);font-size:13px}.panel-body{padding:12px}.right-sidebar{display:flex;flex-direction:column;gap:16px;position:sticky;top:72px}.sound-param-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.sound-param-card{min-width:0}.sound-param-card .data-grid,.sound-param-card .nature-box{margin-bottom:12px}.canvas-section{display:flex;flex-direction:column;gap:12px;min-width:0}.canvas-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:var(--pt-panel-bg);border:1px solid var(--pt-panel-border);border-radius:10px;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.legend{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--pt-text-secondary)}.legend-swatch{width:16px;height:3px;border-radius:2px;display:inline-block}.legend-swatch.dashed{height:0;border-top:2px dashed var(--sound-wave-b);border-radius:0}.canvas-info{margin-left:auto;display:flex;align-items:center;gap:12px}.canvas-info .stat{display:flex;align-items:center;gap:4px;padding:4px 12px;background:var(--pt-primary-light);border-radius:20px;color:var(--pt-primary);font-weight:600;font-size:12px}.sound-audio-btn{width:32px;height:32px;border-radius:8px;background:var(--pt-canvas-bg);border:1px solid var(--pt-panel-border);color:var(--pt-text-secondary);font-size:14px}.sound-audio-btn:hover{background:var(--pt-primary-light);color:var(--pt-primary)}.sound-audio-btn.is-active{color:var(--pt-primary);border-color:var(--pt-primary)}.canvas-wrapper{position:relative;background:var(--pt-canvas-bg);border:1px solid var(--pt-panel-border);border-radius:12px;overflow:hidden;aspect-ratio:1080 / 620;min-height:380px;transition:background-color .3s ease,border-color .3s ease}.canvas-label{position:absolute;top:12px;left:14px;z-index:5;font-size:12px;font-weight:500;color:var(--pt-text-muted);background:var(--pt-panel-bg);padding:4px 10px;border-radius:6px;border:1px solid var(--pt-panel-border);backdrop-filter:blur(8px)}.sound-svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:hidden;touch-action:none;user-select:none}.screen-tip{position:absolute;left:26%;bottom:12px;transform:translate(-50%);z-index:6;padding:6px 14px;border-radius:20px;font-size:12px;font-weight:600;background:var(--pt-panel-bg);border:1px solid var(--pt-panel-border);color:var(--pt-text-secondary);backdrop-filter:blur(8px);white-space:nowrap;max-width:calc(50% - 24px);overflow:hidden;text-overflow:ellipsis;transition:color .2s ease,border-color .2s ease}.screen-tip.success{color:var(--pt-success);border-color:var(--pt-success)}.screen-tip.warn{color:var(--pt-warning);border-color:var(--pt-warning)}.screen-tip.info{color:var(--pt-info);border-color:var(--pt-info)}.sound-tip-right{left:74%}.grid-line{fill:none;stroke:var(--pt-grid-line);stroke-width:1}.sound-divider{stroke:var(--pt-text-muted);stroke-width:1.5;stroke-dasharray:8 8;opacity:.5}.sound-scene-title{fill:var(--pt-text-secondary);font-size:20px;font-weight:700;text-anchor:middle;letter-spacing:1px}.sound-label{fill:var(--pt-text-muted);font-size:16px;font-weight:600;text-anchor:middle}.sound-scene-desc{fill:var(--pt-text-secondary);font-size:16px;font-weight:600;text-anchor:middle}.sound-fork-bend{fill:none;stroke:var(--sound-fork);stroke-width:16;stroke-linecap:round}.sound-fork-shine{fill:none;stroke:#ffffffa6;stroke-width:3;stroke-linecap:round}.sound-box{fill:var(--sound-box);stroke:var(--sound-box-stroke);stroke-width:2}.sound-box-top{fill:none;stroke:#fff6;stroke-width:2;stroke-linecap:round}.sound-hammer-handle{stroke:var(--sound-valve, #8b95a3);stroke-width:10;stroke-linecap:round}.sound-hammer-head{fill:var(--sound-box);stroke:var(--sound-box-stroke);stroke-width:2}.sound-hammer-pivot{fill:var(--pt-text-secondary)}.sound-waveform-box{fill:var(--pt-panel-bg);stroke:var(--pt-panel-border);stroke-width:1;opacity:.75}.sound-waveform-line{fill:none;stroke:var(--sound-wave-a);stroke-width:2.2;stroke-linejoin:round;stroke-linecap:round}.sound-waveform-label{fill:var(--pt-text-muted);font-size:15px;text-anchor:start}.sound-wave{fill:none;stroke-width:2.4;vector-effect:non-scaling-stroke}.sound-wave.a{stroke:var(--sound-wave-a)}.sound-wave.b{stroke:var(--sound-wave-b)}.sound-jar-fill{fill:var(--sound-med-air);stroke:none}.sound-jar-glass{fill:url(#sound-dome-grad);stroke:var(--sound-glass-stroke);stroke-width:2.4;stroke-linejoin:round}.sound-base{fill:var(--sound-base-fill);stroke:var(--sound-base-stroke);stroke-width:1.5;stroke-linejoin:round}.sound-molecule{fill:var(--sound-molecule)}.sound-clock-dial{fill:#eceef1;stroke:#8b929c;stroke-width:1.5}.sound-clock-ring{fill:none;stroke:#dc2626;stroke-width:7}.sound-clock-tick{stroke:#4b5563;stroke-width:2;stroke-linecap:round}.sound-clock-hand{stroke:#1f2937;stroke-width:4;stroke-linecap:round}.sound-clock-bell{fill:#f5c542;stroke:#c99a1e;stroke-width:1.5}.sound-clock-hammer{stroke:#374151;stroke-width:3;stroke-linecap:round}.sound-clock-leg{stroke:#b91c1c;stroke-width:4;stroke-linecap:round}.sound-clock-plate{fill:#f8fafc;stroke:#b6bcc4;stroke-width:1.5}.sound-pipe{fill:none;stroke:var(--sound-pipe);stroke-width:17;stroke-linecap:butt;stroke-linejoin:round}.sound-valve-disc{fill:var(--sound-valve-disc);stroke:var(--sound-valve-stroke);stroke-width:2}.sound-valve-axis{fill:var(--sound-pipe)}.sound-valve-cone{fill:var(--sound-valve);stroke:var(--sound-valve-stroke);stroke-width:2}.sound-valve-stub{fill:var(--sound-valve-disc);stroke:var(--sound-valve-stroke);stroke-width:2}.sound-pump-label{fill:var(--pt-text-secondary);font-size:15px;font-weight:600;text-anchor:middle}.sound-vacuum-label{fill:var(--pt-error);font-size:16px;font-weight:700;text-anchor:middle}.ctrl-group{margin-bottom:14px}.ctrl-label{display:flex;align-items:center;justify-content:space-between;font-size:13px;color:var(--pt-text-secondary);margin-bottom:6px}.ctrl-value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--pt-primary);font-size:12px;background:var(--pt-primary-light);padding:1px 8px;border-radius:10px}.range{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:3px;background:var(--pt-panel-border);outline:none;cursor:pointer}.range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--pt-primary);cursor:pointer;box-shadow:0 0 0 3px var(--pt-primary-light);transition:box-shadow .15s ease}.range::-webkit-slider-thumb:hover{box-shadow:0 0 0 5px var(--pt-primary-light)}.range::-moz-range-thumb{width:16px;height:16px;border:none;border-radius:50%;background:var(--pt-primary);cursor:pointer}.sound-btn-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.sound-btn-row .tool-btn{min-height:38px;height:auto;gap:6px;padding:6px 8px;font-weight:600;line-height:1.25;white-space:normal;text-align:center}.sound-strike-btn{width:100%}.tool-btn.sound-hold-btn{background:var(--pt-canvas-bg);color:var(--pt-text-secondary);border:1px solid var(--pt-panel-border);transition:all .15s ease}.tool-btn.sound-hold-btn:hover{background:var(--pt-primary-light);color:var(--pt-primary)}.tool-btn.sound-hold-btn.is-active{background:var(--pt-warning);color:#fff;border-color:var(--pt-warning)}.sound-hint{display:flex;align-items:flex-start;gap:6px;font-size:12px;color:var(--pt-text-muted);line-height:1.6;padding:8px 10px;margin-bottom:12px;border-radius:8px;background:var(--pt-canvas-bg);border:1px dashed var(--pt-panel-border)}.sound-hint i{color:var(--pt-primary);margin-top:3px}.sound-hint strong{color:var(--pt-text-secondary)}.tool-btn{height:32px;border-radius:6px;border:none;background:transparent;color:var(--pt-text-secondary);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:13px;transition:all .15s ease}.tool-btn:hover{background:var(--pt-primary-light);color:var(--pt-primary)}.tool-btn.primary-btn{background:var(--pt-primary);color:var(--pt-primary-foreground);padding:0 14px;font-weight:500;gap:6px}.tool-btn.primary-btn:hover{background:var(--pt-primary-hover);color:#fff}.full-btn{width:100%}.tool-btn:disabled{opacity:.6;cursor:not-allowed}.tool-btn.primary-btn:disabled:hover{background:var(--pt-primary)}.tool-btn.is-flowing i{animation:sound-pump-spin .9s linear infinite}@keyframes sound-pump-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.data-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.data-item{background:var(--pt-canvas-bg);border:1px solid var(--pt-panel-border);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:2px;transition:border-color .2s ease,background-color .2s ease}.data-k{font-size:11px;color:var(--pt-text-muted)}.data-v{font-size:16px;font-weight:700;color:var(--pt-text-primary);font-variant-numeric:tabular-nums}.nature-box{margin-top:10px;padding:10px;border-radius:8px;background:var(--pt-primary-light);color:var(--pt-primary);font-weight:700;font-size:13px;text-align:center;transition:background-color .2s ease,color .2s ease}.nature-box.transmit-ok{background:var(--pt-success-soft);color:var(--pt-success)}.nature-box.transmit-weak{background:var(--pt-primary-light);color:var(--pt-warning)}.nature-box.transmit-none{background:#dc26261f;color:var(--pt-error)}.sound-rules{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.sound-rule{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border-radius:8px;background:var(--pt-canvas-bg);border:1px solid var(--pt-panel-border)}.sound-rule-no{flex-shrink:0;width:20px;height:20px;border-radius:50%;background:var(--pt-primary);color:var(--pt-primary-foreground);font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-top:1px}.sound-rule p{font-size:12px;color:var(--pt-text-secondary);line-height:1.6}.sound-rule p strong{color:var(--pt-primary)}.rule-table{width:100%;border-collapse:collapse;font-size:12px}.rule-table th,.rule-table td{padding:7px 6px;text-align:left;border-bottom:1px solid var(--pt-panel-border);color:var(--pt-text-secondary);transition:background-color .2s ease,color .2s ease}.rule-table th{font-size:11px;color:var(--pt-text-muted);font-weight:600}.rule-table tbody tr:last-child td{border-bottom:none}.rule-note{margin-top:10px;font-size:11px;color:var(--pt-text-muted);line-height:1.6}.site-footer{max-width:1400px;margin:0 auto;padding:20px 16px 40px;text-align:center;color:var(--pt-text-muted);font-size:13px}.site-footer .footer-links{display:flex;justify-content:center;gap:18px;margin-bottom:10px;flex-wrap:wrap}.site-footer .footer-links a{color:var(--pt-text-secondary);text-decoration:none}.site-footer .footer-links a:hover{color:var(--pt-primary)}@media(max-width:900px){.main-container{grid-template-columns:minmax(0,1fr);gap:14px}.right-sidebar{position:static}.sound-param-row{grid-template-columns:1fr}}@media(max-width:640px){.top-nav{height:48px}.top-nav .breadcrumb{display:none}.page-header{padding:16px 12px 12px}.page-header h1{font-size:18px}.page-header p{font-size:12px}.main-container{padding:0 10px 20px;gap:12px}.screen-tip{font-size:11px;max-width:calc(50% - 16px)}.legend{gap:10px}.legend-item{font-size:11px}.canvas-info{width:100%;margin-left:0;justify-content:center}.panel-body{padding:10px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
