:root{--color-bg:#fafafa;--color-surface:#fff;--color-border:#e7e5e4;--color-text:#1c1917;--color-text-muted:#6b6560;--color-text-faint:#a39d97;--status-gray-bg:#f0efee;--status-gray-fg:#6b6560;--status-amber-bg:#fdf1de;--status-amber-fg:#92620c;--status-red-bg:#fdecec;--status-red-fg:#ae2b2b;--status-blue-bg:#e8f0fe;--status-blue-fg:#1a56c4;--status-green-bg:#e8f6ee;--status-green-fg:#147a45;--accent:#1a56c4;--accent-fg:#fff;--danger:#ae2b2b;--radius-control:8px;--radius-card:12px;--radius-pill:999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--font-page-title:500 22px/1.4 -apple-system, "PingFang TC", "Noto Sans TC", sans-serif;--font-section-title:500 18px/1.4 -apple-system, "PingFang TC", "Noto Sans TC", sans-serif;--font-body:400 16px/1.6 -apple-system, "PingFang TC", "Noto Sans TC", sans-serif;--font-table:400 14px/1.5 -apple-system, "PingFang TC", "Noto Sans TC", sans-serif;--font-badge:500 12px/1 -apple-system, "PingFang TC", "Noto Sans TC", sans-serif;--shadow-card:0 1px 2px #1c19170a, 0 1px 8px #1c19170a}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--color-bg);color:var(--color-text);font:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--accent)}.page{max-width:960px;padding:var(--space-8) var(--space-8);margin:0 auto}@media (width<=720px){.page{padding:var(--space-4)}}.page-title{font:var(--font-page-title);margin:0 0 var(--space-6) 0}.section-title{font:var(--font-section-title);margin:0 0 var(--space-3) 0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-card);padding:var(--space-4);box-shadow:var(--shadow-card)}.card+.card{margin-top:var(--space-6)}.stack{gap:var(--space-4);flex-direction:column;display:flex}.row{align-items:center;gap:var(--space-3);display:flex}.row-between{justify-content:space-between;align-items:center;gap:var(--space-3);display:flex}.spread{gap:var(--space-4);flex-wrap:wrap;display:flex}.field{gap:var(--space-1);flex-direction:column;display:flex}.field label{font:var(--font-table);color:var(--color-text-muted)}.field input[type=text],.field input[type=date],.field input[type=time],.field input[type=tel],.field input[type=email],.field select,.field textarea{border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);padding:10px 12px}.field textarea{resize:vertical;min-height:88px}.btn{appearance:none;border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-control);cursor:pointer;padding:9px 16px;font-weight:500}.btn:hover{background:var(--color-bg)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.btn-primary:hover{filter:brightness(.95);background:var(--accent)}.btn-danger{color:var(--danger);border-color:#f0d3d3}.btn-sm{padding:6px 12px;font-size:14px}.badge{font:var(--font-badge);border-radius:var(--radius-pill);white-space:nowrap;align-items:center;gap:6px;padding:4px 10px;display:inline-flex}.badge-gray{background:var(--status-gray-bg);color:var(--status-gray-fg)}.badge-amber{background:var(--status-amber-bg);color:var(--status-amber-fg)}.badge-red{background:var(--status-red-bg);color:var(--status-red-fg)}.badge-blue{background:var(--status-blue-bg);color:var(--status-blue-fg)}.badge-green{background:var(--status-green-bg);color:var(--status-green-fg)}table.plain{border-collapse:collapse;width:100%;font:var(--font-table)}table.plain th{text-align:left;color:var(--color-text-muted);border-bottom:1px solid var(--color-border);padding:8px 12px;font-weight:400}table.plain td{border-bottom:1px solid var(--color-border);vertical-align:top;padding:12px}table.plain tr:last-child td{border-bottom:none}.empty-state{text-align:center;color:var(--color-text-muted);padding:var(--space-8)}.empty-state .suggestion{margin-top:var(--space-2);font:var(--font-table)}.topbar{border-bottom:1px solid var(--color-border);background:var(--color-surface)}.topbar-inner{max-width:960px;padding:0 var(--space-8);align-items:center;gap:var(--space-6);height:56px;margin:0 auto;display:flex}@media (width<=720px){.topbar-inner{padding:0 var(--space-4)}}.topbar nav{gap:var(--space-4);flex:1;display:flex}.topbar nav a{color:var(--color-text-muted);font-size:14px;font-weight:500;text-decoration:none}.topbar nav a.active{color:var(--color-text)}.brand{font-weight:500}.drawer-backdrop{z-index:20;background:#1c191747;position:fixed;inset:0}.drawer{background:var(--color-surface);z-index:21;width:360px;max-width:92vw;padding:var(--space-6);position:fixed;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-4px 0 24px #0000001f}.timeline{margin:0;padding:0;list-style:none}.timeline li{padding:0 0 var(--space-6) 28px;position:relative}.timeline li:last-child{padding-bottom:0}.timeline .dot{border:2px solid var(--color-border);background:var(--color-surface);border-radius:50%;width:16px;height:16px;position:absolute;top:2px;left:0}.timeline li.done .dot{background:var(--status-green-fg);border-color:var(--status-green-fg)}.timeline li.current .dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 4px var(--status-blue-bg)}.timeline li.faded{opacity:.45}.timeline .line{background:var(--color-border);width:2px;position:absolute;top:18px;bottom:-8px;left:7px}.timeline li:last-child .line{display:none}.text-muted{color:var(--color-text-muted)}.text-faint{color:var(--color-text-faint)}.text-sm{font:var(--font-table)}.link-btn{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.range-thumb{appearance:none;pointer-events:none;background:0 0;height:32px}.range-thumb::-webkit-slider-runnable-track{background:0 0;height:4px}.range-thumb::-moz-range-track{background:0 0;height:4px}.range-thumb::-webkit-slider-thumb{appearance:none;pointer-events:auto;background:var(--accent);width:16px;height:16px;box-shadow:0 0 0 1px var(--color-border);cursor:pointer;border:2px solid #fff;border-radius:50%;margin-top:10px}.range-thumb::-moz-range-thumb{pointer-events:auto;background:var(--accent);cursor:pointer;border:2px solid #fff;border-radius:50%;width:16px;height:16px}.player-page{--p-bg-0:#0a0c10;--p-bg-1:#12151b;--p-surface:#ffffff0d;--p-surface-hover:#ffffff14;--p-border:#ffffff17;--p-text:#f4f5f7;--p-text-muted:#9aa1ac;--p-text-faint:#676e79;--p-accent:#22c55e;--p-accent-fg:#06210f;--p-accent-soft:#22c55e29;--p-glow-1:#6366f140;--p-glow-2:#22c55e2e;--p-danger:#f87171;background:radial-gradient(60% 50% at 15% -10%, var(--p-glow-1), transparent 60%), radial-gradient(50% 45% at 100% 10%, var(--p-glow-2), transparent 60%), linear-gradient(180deg, var(--p-bg-1), var(--p-bg-0));min-height:100vh;color:var(--p-text);font:400 16px/1.6 -apple-system,PingFang TC,Noto Sans TC,sans-serif}.player-topbar{z-index:10;justify-content:center;padding:18px 16px 0;display:flex;position:sticky;top:0}.player-pill{border:1px solid var(--p-border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--p-text-muted);background:#0a0c1099;border-radius:999px;align-items:center;gap:6px;padding:7px 16px;font-size:13px;font-weight:500;display:inline-flex}.player-pill strong{color:var(--p-accent);font-weight:600}.player-body{max-width:560px;margin:0 auto;padding:56px 20px 48px}.player-card{background:var(--p-surface);border:1px solid var(--p-border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:24px;padding:36px 28px 28px;box-shadow:0 24px 60px -20px #0009}.player-glyph{border:1px solid var(--p-border);background:linear-gradient(155deg,#22c55e38,#6366f12e);border-radius:24px;justify-content:center;align-items:center;gap:4px;width:108px;height:108px;margin:0 auto 24px;display:flex}.player-glyph span{background:var(--p-accent);opacity:.85;border-radius:3px;width:5px;animation:1.8s ease-in-out infinite player-glyph-bar}.player-glyph span:first-child{height:22px;animation-delay:-1.1s}.player-glyph span:nth-child(2){height:42px;animation-delay:-.5s}.player-glyph span:nth-child(3){height:30px;animation-delay:-1.4s}.player-glyph span:nth-child(4){height:46px;animation-delay:-.2s}.player-glyph span:nth-child(5){height:18px;animation-delay:-.8s}@keyframes player-glyph-bar{0%,to{transform:scaleY(.55)}50%{transform:scaleY(1)}}.player-glyph.is-paused span{animation-play-state:paused}.player-eyebrow{text-align:center;letter-spacing:.08em;text-transform:uppercase;color:var(--p-text-faint);margin:0 0 6px;font-size:12px;font-weight:600}.player-title{text-align:center;justify-content:center;align-items:center;gap:10px;margin:0 0 6px;font-size:21px;font-weight:600;display:flex}.player-nowplaying{color:var(--p-text-muted);justify-content:center;align-items:baseline;gap:8px;margin:0 0 20px;font-size:13px;display:flex}.player-nowplaying-name{text-overflow:ellipsis;white-space:nowrap;max-width:260px;overflow:hidden}.player-nowplaying-time{color:var(--p-accent);font-variant-numeric:tabular-nums;flex-shrink:0;font-weight:600}.player-tracks{flex-direction:column;gap:6px;margin:0 0 22px;display:flex}.player-track-btn{appearance:none;border:1px solid var(--p-border);color:var(--p-text-muted);text-align:left;cursor:pointer;background:0 0;border-radius:12px;align-items:center;gap:8px;padding:9px 14px;font-size:13px;font-weight:500;display:flex}.player-track-btn:hover{color:var(--p-text);background:var(--p-surface-hover)}.player-track-btn.active{background:var(--p-accent-soft);color:var(--p-accent);border-color:#0000;font-weight:600}.player-track-dur{font-variant-numeric:tabular-nums;opacity:.75;margin-left:auto;font-size:12px}.player-eq{align-items:flex-end;gap:2px;height:12px;display:inline-flex}.player-eq span{background:var(--p-accent);border-radius:2px;width:3px;animation:.9s ease-in-out infinite player-eq-bounce}.player-eq span:first-child{animation-delay:-.6s}.player-eq span:nth-child(2){animation-delay:-.2s}.player-eq span:nth-child(3){animation-delay:-.4s}@keyframes player-eq-bounce{0%,to{height:3px}50%{height:12px}}.player-times{font-variant-numeric:tabular-nums;color:var(--p-text-faint);justify-content:space-between;margin-top:10px;font-size:12.5px;display:flex}.player-transport{justify-content:center;align-items:center;gap:22px;margin:26px 0 24px;display:flex}.player-btn-icon{appearance:none;color:var(--p-text-muted);cursor:pointer;background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;width:44px;height:44px;transition:color .15s,background .15s;display:flex}.player-btn-icon:hover{color:var(--p-text);background:var(--p-surface-hover)}.player-btn-play{appearance:none;background:var(--p-accent);width:60px;height:60px;color:var(--p-accent-fg);cursor:pointer;box-shadow:0 8px 24px -6px var(--p-accent-soft);border:none;border-radius:999px;justify-content:center;align-items:center;transition:transform .12s;display:flex}.player-btn-play:hover{transform:scale(1.05)}.player-btn-play:active{transform:scale(.97)}.player-btn-play svg{margin-left:2px}.player-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.player-speed{border:1px solid var(--p-border);background:#ffffff0a;border-radius:999px;gap:2px;padding:3px;display:inline-flex}.player-speed button{appearance:none;color:var(--p-text-faint);cursor:pointer;font-variant-numeric:tabular-nums;background:0 0;border:none;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:500}.player-speed button.active{background:var(--p-surface-hover);color:var(--p-text)}.player-speed button:hover:not(.active){color:var(--p-text-muted)}.player-ab{align-items:center;gap:6px;display:inline-flex}.player-ab-btn{appearance:none;border:1px solid var(--p-border);color:var(--p-text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:600}.player-ab-btn.set{background:var(--p-accent-soft);color:var(--p-accent);border-color:#0000}.player-ab-clear{appearance:none;color:var(--p-text-faint);cursor:pointer;background:0 0;border:none;padding:6px 8px;font-size:12px;text-decoration:underline}.player-ab-clear:hover{color:var(--p-text-muted)}.player-footnote{color:var(--p-text-faint);justify-content:center;align-items:center;gap:6px;margin:26px 0 0;font-size:12.5px;display:flex}.player-error-card{background:var(--p-surface);border:1px solid var(--p-border);color:var(--p-text);border-radius:20px;padding:28px}.player-error-card p{color:#fca5a5;margin:0;line-height:1.7}
