@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";:root{--bg-dark:#fff;--bg-panel:#f9fafb;--bg-panel-solid:#fff;--bg-card:#fff;--bg-card-hover:#f3f4f6;--border-color:#e5e7eb;--border-dark:#111;--text-primary:#111;--text-secondary:#4b5563;--text-muted:#9ca3af;--font-display:"Inter", system-ui, -apple-system, sans-serif;--font-sans:"Inter", system-ui, -apple-system, sans-serif}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;margin:0;padding:0}body{background-color:var(--bg-dark);color:var(--text-primary);font-family:var(--font-sans);background-image:radial-gradient(#e5e7eb 1px,#0000 1px);background-size:16px 16px;width:100vw;height:100vh;overflow:hidden}#root{width:100%;height:100%}.app-container{background:var(--bg-dark);width:100vw;height:100vh;display:flex;overflow:hidden}.left-pane{border-right:1px solid var(--border-color);background:var(--bg-dark);flex-direction:column;flex:50%;max-width:50%;height:100%;padding:24px;transition:all .3s;display:flex}.left-pane.perform-active{border-right:none;flex:100%;max-width:100%;padding:40px}.right-pane{background:var(--bg-panel);border-left:1px solid var(--border-color);flex-direction:column;flex:50%;max-width:50%;height:100%;transition:all .3s;display:flex;overflow:hidden}.right-pane.collapsed{opacity:0;pointer-events:none;border-left:none;flex:0 0;max-width:0%}.pane-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;margin-bottom:24px;padding-bottom:16px;display:flex}.pane-title{font-family:var(--font-display);letter-spacing:.5px;color:var(--text-primary);font-size:1.1rem;font-weight:700}.button-group{gap:8px;display:flex}.btn{border:1px solid var(--border-color);color:var(--text-primary);cursor:pointer;font-family:var(--font-sans);background:#fff;border-radius:4px;justify-content:center;align-items:center;padding:6px 12px;font-size:.75rem;font-weight:500;transition:all .15s;display:inline-flex}.btn:hover{background:var(--bg-card-hover);border-color:#9ca3af}.btn.active{background:var(--border-dark);color:#fff;border-color:var(--border-dark)}.btn-cyan{border-color:var(--border-color)}.btn-cyan:hover,.btn-cyan.active{background:var(--border-dark);color:#fff;border-color:var(--border-dark)}.btn-magenta{border-color:var(--border-color)}.btn-magenta:hover,.btn-magenta.active{background:var(--border-dark);color:#fff;border-color:var(--border-dark)}.btn-green{border-color:var(--border-color)}.btn-green:hover{background:var(--bg-card-hover)}.controls-layout{flex-direction:column;flex:1;gap:32px;display:flex;overflow-y:auto}.perform-active .controls-layout{justify-content:center;gap:40px}.grid-section{flex-direction:column;gap:16px;display:flex}.grid-section-title{font-family:var(--font-sans);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;font-size:.75rem;font-weight:600}.dials-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.perform-active .dials-grid{grid-template-columns:repeat(4,1fr);gap:32px;max-width:800px;margin:0 auto}.pads-grid{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.perform-active .pads-grid{grid-template-columns:repeat(4,1fr);gap:24px;max-width:800px;margin:0 auto}.dial-container{background:var(--bg-card);--dial-bg:var(--bg-card);border:1px solid var(--border-color);cursor:pointer;border-radius:6px;flex-direction:column;align-items:center;padding:16px 8px;transition:all .15s;display:flex;position:relative;overflow:hidden}.dial-container:hover{background:var(--bg-card-hover);--dial-bg:var(--bg-card-hover);border-color:#9ca3af}.dial-container.selected{border-color:var(--border-dark);background:var(--bg-card);--dial-bg:var(--bg-card)}.dial-svg{width:80px;height:80px;display:block;overflow:visible}.perform-active .dial-svg{width:130px;height:130px}.control-targets-stack{scrollbar-width:none}.control-targets-stack::-webkit-scrollbar{display:none}.dial-label{font-family:var(--font-sans);color:var(--text-secondary);margin-top:10px;font-size:.75rem;font-weight:500}.dial-value{font-family:var(--font-sans);color:var(--text-muted);margin-top:2px;font-size:.7rem}.pad-container{background:var(--bg-card);border:1px solid var(--border-color);aspect-ratio:1.2;cursor:pointer;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;transition:all .1s;display:flex;position:relative;overflow:hidden}.pad-container:hover{border-color:#9ca3af}.pad-container.selected{border-color:var(--border-dark)}.pad-container.active{background:var(--border-dark);border-color:var(--border-dark)}.pad-container.active .pad-label{color:#fff}.pad-container.active .pad-mode-tag{color:#9ca3af}.pad-label{font-family:var(--font-sans);color:var(--text-primary);font-size:.8rem;font-weight:600;position:absolute;top:8px}.pad-mode-tag{color:var(--text-muted);text-transform:uppercase;font-size:.55rem;position:absolute;bottom:8px}.control-setup{flex-direction:column;height:100%;display:flex;overflow:hidden}.setup-header{border-bottom:1px solid var(--border-color);background:#fff;flex-direction:column;gap:16px;padding:20px;display:flex}.setup-title-row{justify-content:space-between;align-items:center;display:flex}.selected-name{font-family:var(--font-display);color:var(--text-primary);font-size:1rem;font-weight:600}.input-mapping-panel{border:1px solid var(--border-color);background:#fff;border-radius:4px;flex-direction:column;gap:10px;padding:12px;display:flex}.mapping-title{color:var(--text-muted);letter-spacing:.5px;text-transform:uppercase;font-size:.65rem;font-weight:600}.mapping-controls{align-items:center;gap:12px;display:flex}.map-value{font-family:var(--font-sans);color:var(--text-primary);background:var(--bg-panel);border:1px solid var(--border-color);border-radius:3px;padding:4px 8px;font-size:.75rem;font-weight:600}.map-inputs{align-items:center;gap:8px;display:flex}.number-input-group{flex-direction:column;gap:4px;display:flex}.number-input-group label{color:var(--text-secondary);text-transform:uppercase;font-size:.6rem;font-weight:500}.number-input-box{border:1px solid var(--border-color);color:var(--text-primary);font-family:var(--font-sans);text-align:center;background:#fff;border-radius:3px;width:54px;padding:4px 6px;font-size:.75rem}.number-input-box:focus{border-color:var(--border-dark);outline:none}.select-box{border:1px solid var(--border-color);color:var(--text-primary);font-family:var(--font-sans);background:#fff;border-radius:3px;padding:4px 6px;font-size:.75rem}.select-box:focus{border-color:var(--border-dark);outline:none}.macros-list{flex-direction:column;flex:1;gap:20px;min-height:0;padding:20px 20px 40px;display:flex;overflow-y:auto}.macro-card{border:1px solid var(--border-color);break-inside:avoid;background:#fff;border-radius:6px;flex-direction:column;flex-shrink:0;margin-bottom:20px;transition:border-color .25s cubic-bezier(.4,0,.2,1),box-shadow .25s cubic-bezier(.4,0,.2,1),transform .25s cubic-bezier(.4,0,.2,1);display:flex;overflow:hidden;box-shadow:0 1px 3px #00000005,0 2px 8px #0000000a}.macro-card:hover{border-color:#cbd5e1;transform:translateY(-1px);box-shadow:0 4px 12px #0000000d,0 2px 4px #00000005}.add-macro-btn-full{flex-shrink:0}.macro-card:hover{border-color:#9ca3af}.macro-card-content{flex-direction:column;gap:16px;padding:16px;display:flex}.macro-title-row{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding-bottom:10px;display:flex}.macro-meta-inputs{align-items:center;gap:12px;display:flex}.cc-graph-widget{aspect-ratio:2.2;border:1px solid var(--border-color);cursor:crosshair;background:#fff;border-radius:4px;width:100%;position:relative;overflow:visible}.cc-graph-svg{width:100%;height:100%;display:block}.graph-point{cursor:grab}.graph-point:hover{opacity:.8}.graph-line{stroke-width:1px;fill:none}.graph-playhead{stroke-width:1px;stroke-dasharray:2 2;pointer-events:none}.graph-indicator{pointer-events:none;font-family:var(--font-sans);font-size:.65rem}.button-range-widget{aspect-ratio:4;border:1px solid var(--border-color);background:#fff;border-radius:4px;width:100%;position:relative;overflow:hidden}.range-svg{width:100%;height:100%}.range-slider-handle{fill:#fff;cursor:ew-resize}.range-slider-handle:hover{fill:var(--border-dark)}.momentary-marker{cursor:ew-resize;fill:#111}.add-macro-panel{border-top:1px solid var(--border-color);background:#fff;gap:12px;padding:16px 20px;display:flex}.add-macro-panel .btn{flex:1}.midi-console{border-top:1px solid var(--border-color);background:#fff;flex-direction:column;height:140px;display:flex}.perform-active .midi-console{border:1px solid var(--border-color);border-radius:4px;width:100%;max-width:800px;height:160px;margin:32px auto 0}.console-header{border-bottom:1px solid var(--border-color);color:var(--text-secondary);justify-content:space-between;align-items:center;padding:8px 16px;font-size:.7rem;font-weight:600;display:flex}.console-logs{flex-direction:column;flex:1;gap:4px;padding:8px 16px;font-family:monospace;font-size:.7rem;display:flex;overflow-y:auto}.console-line{white-space:nowrap;line-height:1.4}.console-line.input{color:#4b5563}.console-line.output{color:#111;font-weight:500}.console-line.learned{color:#10b981;font-weight:700}.console-line.info{color:#9ca3af}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#e5e7eb;border-radius:2px}::-webkit-scrollbar-thumb:hover{background:#d1d5db}.cc-graph-svg path,.cc-graph-svg line,.range-svg line,.range-svg rect,.range-svg circle{vector-effect:non-scaling-stroke!important}.graph-line{fill:none;stroke-width:1px!important}.graph-playhead{stroke-dasharray:2 2;pointer-events:none;stroke-width:1px!important}.cc-graph-svg line{stroke-width:.5px!important}.range-svg line,.range-svg rect,.range-svg circle{stroke-width:1px!important}.left-pane.perform-active{border-right:none;flex:100%;max-width:100%;height:100vh;padding:20px 24px;overflow:hidden}.perform-active .controls-layout{flex-direction:column;flex:1;justify-content:stretch;gap:0;min-height:0;display:flex;overflow:hidden!important}.perform-active .performance-grid{flex:1;width:100%;height:100%;min-height:0;gap:12px!important}.perform-active .dial-container,.perform-active .pad-container{flex-direction:column!important;justify-content:center!important;width:100%!important;height:100%!important;min-height:0!important;max-height:100%!important;padding:8px 12px!important;display:flex!important}.perform-active .dial-svg{flex:auto;min-height:0;width:100%!important;height:auto!important;max-height:calc(100% - 70px)!important}.perform-active .pad-label{font-size:.85rem!important}.perform-active .perform-table{font-size:.7rem!important;line-height:1.2!important}.perform-active .perform-table td{padding:2px 0!important}.perform-active .midi-console{flex-shrink:0;height:100px!important;margin:16px auto 0!important}.midi-settings-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.midi-settings-modal{background:var(--bg-card);border:1px solid var(--border-color);border-radius:12px;width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #00000026}.midi-settings-header{border-bottom:1px solid var(--border-color);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.midi-settings-title{letter-spacing:.05em;text-transform:uppercase;font-size:.85rem;font-weight:600}.midi-settings-close{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:1.1rem;transition:all .15s}.midi-settings-close:hover{background:var(--bg-card-hover);color:var(--text-primary)}.midi-settings-body{padding:16px 20px 20px}.midi-port-section{margin-bottom:20px}.midi-port-section-title{align-items:baseline;gap:8px;margin-bottom:10px;display:flex}.midi-port-direction{letter-spacing:.08em;text-transform:uppercase;color:var(--text-primary);font-size:.7rem;font-weight:700}.midi-port-hint{color:var(--text-muted);font-size:.65rem}.midi-port-row{cursor:pointer;border-radius:8px;align-items:center;gap:10px;padding:8px 10px;transition:background .12s;display:flex}.midi-port-row:hover{background:var(--bg-card-hover)}.midi-port-name{color:var(--text-primary);flex:1;font-size:.8rem;font-weight:500}.midi-port-name.disconnected{color:var(--text-muted);text-decoration:line-through}.midi-port-status{font-size:.6rem}.midi-port-status.connected{color:#22c55e}.midi-port-status.disconnected{color:var(--text-muted)}.midi-port-empty{color:var(--text-muted);padding:12px 10px;font-size:.75rem;font-style:italic}.midi-port-toggle{flex-shrink:0;width:34px;height:18px;position:relative}.midi-port-toggle input{opacity:0;width:0;height:0}.midi-port-slider{cursor:pointer;background:#d1d5db;border-radius:9px;transition:background .2s;position:absolute;inset:0}.midi-port-slider:before{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .2s;position:absolute;bottom:2px;left:2px;box-shadow:0 1px 3px #00000026}.midi-port-toggle input:checked+.midi-port-slider{background:#111}.midi-port-toggle input:checked+.midi-port-slider:before{transform:translate(16px)}.midi-settings-tip{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0;border-radius:8px;margin-top:4px;padding:10px 12px;font-size:.7rem;line-height:1.5}.midi-settings-tip strong{font-weight:600}.btn-settings{border:1px solid var(--border-color);cursor:pointer;color:var(--text-secondary);background:0 0;border-radius:6px;padding:4px 8px;font-size:.85rem;transition:all .15s}.btn-settings:hover{background:var(--bg-card-hover);color:var(--text-primary);border-color:var(--border-dark)}.macros-columns-container{columns:2;column-gap:20px;width:100%}@media (width<=1200px),(orientation:portrait){.macros-columns-container{columns:1}}.clickable-target-badge{transition:all .12s ease-in-out}.clickable-target-badge:hover{transform:scale(1.05);background:#00000014!important;border-color:#00000026!important}.pad-container.active .clickable-target-badge:hover{background:#ffffff40!important;border-color:#ffffff4d!important}.learn-card.flash-green{animation:.8s ease-out flash-green-anim}@keyframes flash-green-anim{0%{background-color:#10b98166;border-color:#10b981;box-shadow:0 0 10px #10b98180}to{border-color:var(--border-color,#d1d5db);box-shadow:none;background-color:#fff}}.control-setup{transition:background-color .3s}.control-setup.aftertouch-mode{background-color:#f0f7ff}.control-setup.aftertouch-mode .setup-header,.control-setup.aftertouch-mode .notches-panel,.control-setup.aftertouch-mode .add-macro-panel{transition:background-color .3s;background-color:#e0f0ff!important}.control-setup.aftertouch-mode .input-mapping-panel,.control-setup.aftertouch-mode .macro-card,.control-setup.aftertouch-mode .macro-card>div,.control-setup.aftertouch-mode .empty-macros-placeholder{transition:background-color .3s;background-color:#f5f9ff!important}
