:root{--bg:#ecf0f3;--bg-elevated:#f2f5f8;--bg-sunken:#e4e9ed;--text:#2d3436;--text-secondary:#5f6368;--text-muted:#9aa0a6;--text-inverse:#fff;--success:#34d399;--danger:#ff5c5c;--warning:#f59e0b;--info:#38bdf8;--accent:#ff8a4c;--accent-text:#fff;--accent-shadow:#ff8a4c66;--shadow-dark:#a3b1c699;--shadow-light:#ffffffe6;--shadow-out-lg:8px 8px 16px var(--shadow-dark), -8px -8px 16px var(--shadow-light);--shadow-out:6px 6px 12px var(--shadow-dark), -6px -6px 12px var(--shadow-light);--shadow-out-sm:3px 3px 6px var(--shadow-dark), -3px -3px 6px var(--shadow-light);--shadow-out-xs:2px 2px 4px var(--shadow-dark), -2px -2px 4px var(--shadow-light);--shadow-in:inset 3px 3px 6px var(--shadow-dark), inset -3px -3px 6px var(--shadow-light);--shadow-in-lg:inset 6px 6px 12px var(--shadow-dark), inset -6px -6px 12px var(--shadow-light);--radius-pill:999px;--radius-lg:20px;--radius-md:14px;--radius-sm:10px;--radius-xs:6px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"Courier New", ui-monospace, monospace;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:28px;--fw-regular:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--ease-out:cubic-bezier(.4, 0, .2, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--duration-fast:.1s;--duration-base:.2s;--duration-slow:.35s}[data-theme=dark]{--bg:#1e2024;--bg-elevated:#24272b;--bg-sunken:#181a1d;--text:#e8eaed;--text-secondary:#b0b3b8;--text-muted:#6e7175;--shadow-dark:#00000080;--shadow-light:#ffffff0a}[data-accent=orange]{--accent:#ff8a4c;--accent-shadow:#ff8a4c66}[data-accent=mint]{--accent:#34d399;--accent-shadow:#34d39966}[data-accent=sky]{--accent:#38bdf8;--accent-shadow:#38bdf866}[data-accent=violet]{--accent:#a78bfa;--accent-shadow:#a78bfa66}[data-accent=rose]{--accent:#fb7185;--accent-shadow:#fb718566}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}body{background:var(--bg);min-height:100vh;color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);transition:background var(--duration-slow) var(--ease-out), color var(--duration-slow) var(--ease-out);margin:0;line-height:1.5}h1,h2,h3,h4,h5,h6{font-weight:var(--fw-bold);margin:0;line-height:1.25}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-md)}p{margin:0}code,kbd,pre{font-family:var(--font-mono);font-size:.95em}a{color:var(--accent);transition:opacity var(--duration-fast) var(--ease-out);text-decoration:none}a:hover{opacity:.8}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:none;padding:0}input:focus-visible,button:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--accent);color:var(--accent-text)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:var(--radius-pill);opacity:.5}::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.screen{flex-direction:column;display:none}.screen.active{display:flex}.hidden{display:none!important}.section-heading{font-size:var(--fs-sm);color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;font-weight:var(--fw-semibold);margin:0 0 var(--space-3) var(--space-1)}.btn{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font-size:var(--fs-md);font-weight:var(--fw-semibold);box-shadow:var(--shadow-out-sm);transition:all var(--duration-fast) var(--ease-out);-webkit-user-select:none;user-select:none;border:none;padding:12px 18px;display:inline-flex}.btn:active{box-shadow:var(--shadow-in);transform:scale(.98)}.btn:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-primary{background:var(--accent);color:var(--accent-text);box-shadow:0 4px 12px var(--accent-shadow), inset 0 1px 0 #fff3}.btn-primary:active{box-shadow:inset 4px 4px 8px #0003,inset -2px -2px 4px #ffffff1a}.btn-danger{color:var(--danger)}.btn-danger:active{background:color-mix(in srgb, var(--danger) 10%, var(--bg) 90%)}.btn-ghost{box-shadow:none;background:0 0}.btn-ghost:active{box-shadow:var(--shadow-in)}.btn-icon{border-radius:var(--radius-md);width:42px;height:42px;font-size:var(--fs-lg);padding:0}.btn-row{gap:var(--space-3);display:flex}.btn-row>.btn{flex:1}.card{background:var(--bg);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-out-sm)}.card-title{font-size:var(--fs-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.8px;font-weight:var(--fw-semibold);margin:0 0 var(--space-3)}.card-inset{background:var(--bg);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-in)}.card+.card{margin-top:var(--space-3)}.toggle-row{padding:var(--space-3) var(--space-1);cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;display:flex}.toggle-row+.toggle-row{border-top:1px solid color-mix(in srgb, var(--text) 8%, transparent)}.toggle-label{font-size:var(--fs-md);color:var(--text);align-items:center;gap:var(--space-3);display:flex}.toggle-switch{background:var(--bg);border-radius:var(--radius-pill);width:52px;height:30px;box-shadow:var(--shadow-in);transition:background var(--duration-base) var(--ease-out);flex-shrink:0;position:relative}.toggle-switch:after{content:"";background:var(--bg);width:22px;height:22px;box-shadow:var(--shadow-out-sm);transition:all var(--duration-base) var(--ease-spring);border-radius:50%;position:absolute;top:4px;left:4px}.toggle-row input[type=checkbox]{display:none}.toggle-row input[type=checkbox]:checked+.toggle-switch{background:var(--accent)}.toggle-row input[type=checkbox]:checked+.toggle-switch:after{background:#fff;left:26px;box-shadow:2px 2px 6px #0000004d}.status-bar{justify-content:center;align-items:center;gap:var(--space-3);padding:12px var(--space-4);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-in);font-size:var(--fs-md);color:var(--text-muted);transition:all var(--duration-base) var(--ease-out);border:1px solid #0000;display:flex}.status-dot{border:1.5px solid var(--text-muted);box-sizing:border-box;width:8px;height:8px;transition:all var(--duration-base) var(--ease-out);background:0 0;border-radius:50%;flex-shrink:0}.status-bar.ok{color:var(--accent);font-weight:var(--fw-semibold);background:color-mix(in srgb, var(--accent) 8%, var(--bg) 92%);border-color:color-mix(in srgb, var(--accent) 20%, transparent)}.status-bar.ok .status-dot{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 20%, transparent);border:none;animation:1.8s ease-in-out infinite pulse}.status-bar.err{color:var(--danger);background:color-mix(in srgb, var(--danger) 8%, var(--bg) 92%);border-color:color-mix(in srgb, var(--danger) 20%, transparent)}.status-bar.err .status-dot{background:var(--danger);border:none;box-shadow:0 0 0 3px #ff5c5c33}.status-bar.heard{color:var(--text);font-style:italic}.status-bar.heard .status-dot{background:var(--accent);border:none;animation:.6s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.85)}}.slider-wrap{padding:var(--space-2) var(--space-1)}.slider-header{margin-bottom:var(--space-2);justify-content:space-between;align-items:center;display:flex}.slider-label{font-size:var(--fs-md);color:var(--text)}.slider-value{font-size:var(--fs-base);color:var(--accent);font-weight:var(--fw-semibold);font-variant-numeric:tabular-nums}input[type=range].soft-slider{appearance:none;border-radius:var(--radius-pill);background:var(--bg);width:100%;height:10px;box-shadow:var(--shadow-in);cursor:pointer;outline:none}input[type=range].soft-slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--accent);width:24px;height:24px;transition:transform var(--duration-fast) var(--ease-spring);border-radius:50%;box-shadow:2px 2px 6px #00000040,inset 0 1px #ffffff4d}input[type=range].soft-slider::-webkit-slider-thumb:active{transform:scale(1.15)}input[type=range].soft-slider::-moz-range-thumb{background:var(--accent);border:none;border-radius:50%;width:24px;height:24px;box-shadow:2px 2px 6px #00000040}.input{border-radius:var(--radius-md);background:var(--bg);width:100%;color:var(--text);font-size:var(--fs-md);box-shadow:var(--shadow-in);transition:box-shadow var(--duration-fast) var(--ease-out);border:none;outline:none;padding:12px 14px}.input:focus{box-shadow:var(--shadow-in), 0 0 0 2px var(--accent)}.input::placeholder{color:var(--text-muted)}.chip-group{gap:var(--space-3);padding:var(--space-2) 0;flex-wrap:wrap;display:flex}.chip{cursor:pointer;width:36px;height:36px;box-shadow:var(--shadow-out-sm);transition:all var(--duration-fast) var(--ease-out);border:2px solid #0000;border-radius:50%}.chip:hover{transform:scale(1.05)}.chip:active{transform:scale(.95)}.chip.selected{border-color:var(--text);transform:scale(1.1)}.segmented{background:var(--bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-in);gap:4px;padding:5px;display:flex}.segmented-btn{border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--fs-base);font-weight:var(--fw-semibold);cursor:pointer;transition:all var(--duration-base) var(--ease-out);background:0 0;border:none;flex:1;padding:10px 14px}.segmented-btn.active{background:var(--bg);color:var(--accent);box-shadow:var(--shadow-out-xs)}.segmented-btn:active{transform:scale(.97)}.badge{align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);background:var(--bg);box-shadow:var(--shadow-in);font-size:var(--fs-xs);font-weight:var(--fw-semibold);color:var(--text-secondary);letter-spacing:.5px;padding:4px 10px;display:inline-flex}.badge.accent{color:var(--accent);background:color-mix(in srgb, var(--accent) 12%, var(--bg) 88%);box-shadow:none}.badge.mono{font-family:var(--font-mono);letter-spacing:2px}.app-header{margin-bottom:var(--space-5);justify-content:space-between;align-items:center;min-height:42px;display:flex}.app-title{font-size:var(--fs-lg);font-weight:var(--fw-bold);color:var(--text);letter-spacing:-.2px}.header-spacer{width:42px}.log{font-family:var(--font-mono);font-size:var(--fs-sm);text-align:left;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:var(--bg);box-shadow:var(--shadow-in);color:var(--text-muted);white-space:pre-wrap;word-break:break-word;max-height:160px;line-height:1.6;overflow-y:auto}.divider{background:color-mix(in srgb, var(--text) 8%, transparent);height:1px;margin:var(--space-3) 0;border:none}.spinner{border:2px solid color-mix(in srgb, var(--text) 15%, transparent);border-top-color:var(--accent);border-radius:50%;width:16px;height:16px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.dropzone{justify-content:center;align-items:center;gap:var(--space-3);min-height:260px;padding:var(--space-6) var(--space-5);border-radius:var(--radius-lg);background:var(--bg);box-shadow:var(--shadow-in-lg);cursor:pointer;text-align:center;will-change:transform, box-shadow;outline:none;flex-direction:column;transition:box-shadow .35s cubic-bezier(.34,1.56,.64,1),transform .35s cubic-bezier(.34,1.56,.64,1),background .25s;display:flex;position:relative;overflow:hidden;transform:translateY(0)scale(1)}.dropzone:before{content:"";border-radius:calc(var(--radius-lg) - 6px);border:2px dashed color-mix(in srgb, var(--text-muted) 35%, transparent);pointer-events:none;transition:border-color .25s,border-style .1s;position:absolute;inset:8px}.dropzone:hover{box-shadow:var(--shadow-in-lg), 0 0 0 1px color-mix(in srgb, var(--accent) 15%, transparent)}.dropzone:hover:before{border-color:color-mix(in srgb, var(--accent) 40%, transparent)}.dropzone:focus-visible{box-shadow:var(--shadow-in-lg), 0 0 0 3px color-mix(in srgb, var(--accent) 40%, transparent)}.dropzone.drag-over{box-shadow:var(--shadow-out-lg), 0 16px 40px color-mix(in srgb, var(--accent) 30%, transparent), 0 0 0 2px var(--accent), inset 0 1px 0 #ffffff80;background:color-mix(in srgb, var(--accent) 5%, var(--bg) 95%);transform:translateY(-10px)scale(1.03)}.dropzone.drag-over:before{border-color:var(--accent);border-style:solid;border-width:2px}.dropzone.drag-over .dropzone-icon{color:var(--accent);filter:drop-shadow(0 8px 16px color-mix(in srgb, var(--accent) 50%, transparent));transform:translateY(-8px)scale(1.2)}.dropzone.drag-over .dropzone-title{color:var(--accent)}.dropzone.drag-over .dropzone-hint{opacity:.6}.dropzone.drag-over .btn-pick{opacity:0;transform:translateY(8px)}.dropzone.invalid{background:color-mix(in srgb, var(--danger) 6%, var(--bg) 94%);animation:.4s shake}.dropzone.invalid:before{border-color:var(--danger)}@keyframes shake{0%,to{transform:translateY(0)scale(1)}25%{transform:translateY(0)translate(-8px)scale(1)}75%{transform:translateY(0)translate(8px)scale(1)}}.dropzone-icon{color:var(--text-muted);-webkit-user-select:none;user-select:none;font-size:56px;line-height:1;transition:all .35s cubic-bezier(.34,1.56,.64,1)}.dropzone-title{font-size:var(--fs-lg);font-weight:var(--fw-semibold);color:var(--text);transition:all .25s}.dropzone-hint{font-size:var(--fs-base);color:var(--text-muted);max-width:280px;line-height:1.5;transition:opacity .25s}.dropzone .btn-pick{margin-top:var(--space-1);border-radius:var(--radius-md);background:var(--bg);color:var(--text);font-size:var(--fs-md);font-weight:var(--fw-semibold);box-shadow:var(--shadow-out-sm);pointer-events:none;padding:10px 20px;transition:all .25s}.dropzone-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
