/* Shared 4px spacing grid, typography and 44px touch baseline. */
:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--space-8:32px;--touch-target:44px;--control-gap:var(--space-2);--panel-inset:var(--space-3);--label-size:16px;--section-size:20px}
.hardware-choice{position:relative;isolation:isolate}
.hardware-choice::before{content:'';position:absolute;z-index:-1;pointer-events:none}
#identity-dialog{width:960px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:0;overflow:hidden;border:3px solid var(--seam);color:var(--ink)}
#identity-form{display:flex;flex-direction:column;gap:0;max-height:calc(100dvh - 30px)}
#identity-form>header,#identity-form>footer{flex:none;display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--plate);margin:0}
#identity-form>header{border-bottom:2px solid var(--seam)}
#identity-form h2{font:28px/1.1 'Redaction 50',serif}
#identity-form #close-editor{width:var(--touch-target);height:var(--touch-target);min-height:var(--touch-target);margin:0;flex:none;font-size:28px}
#identity-form .identity-grid{min-height:0;overflow-y:auto;overscroll-behavior:contain;touch-action:none;display:grid;grid-template-columns:minmax(0,2fr) minmax(240px,1fr);gap:var(--space-6);padding:var(--space-4)}
#identity-form .identity-instrument,#identity-form .identity-details{min-width:0;display:flex;flex-direction:column;gap:var(--space-6)}
#identity-form fieldset{margin:0;padding:0;border:0;min-width:0}
#identity-form label,#identity-form fieldset legend{font:var(--label-size)/1.25 'Redaction 50',serif;gap:var(--space-2)}
#identity-form fieldset legend{padding:0 0 var(--space-2)}
#identity-form input:not([type=radio]),#identity-form textarea{height:48px;padding:var(--space-2);font:18px/1.3 'Redaction 50',serif;background:var(--glass);color:var(--glass-ink);border:2px solid var(--seam)}
#identity-form textarea{height:88px;resize:none}
#identity-form .guitar-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--control-gap)}
#identity-form .guitar-choice{min-width:0;min-height:136px;padding:var(--space-2);gap:var(--space-1);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;border:0}
#identity-form .guitar-choice img{width:84px;height:84px;max-width:100%;object-fit:contain;image-rendering:pixelated}
#identity-form .guitar-choice span{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.15;min-height:36px;display:flex;align-items:center;justify-content:center;font-size:16px}
#identity-form .hardware-choice:has(input:checked){outline:2px solid var(--accent-light);outline-offset:-4px}
#identity-form .hardware-choice:has(input:focus-visible){outline:3px solid #ffd28a;outline-offset:1px}
#identity-form .finish-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--control-gap)}
#identity-form .finish-choice{min-width:0;height:48px;padding:var(--space-2);font-size:15px}
#identity-form .finish-choice span{min-width:0;height:auto;background:none;color:inherit;text-shadow:inherit;gap:var(--space-2)}
#identity-form .finish-choice:not(.original) span::before{content:'';width:14px;height:14px;flex:none;background:var(--finish);border:1px solid #f7f0d780}
#identity-form .finish-custom{min-height:48px;display:flex;flex-direction:row;font-size:15px;gap:var(--space-1)}
#identity-form #guitar-custom{width:44px;height:44px;padding:3px;flex:none}
#identity-form .theme-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--control-gap)}
#identity-form .theme-choice{margin:0;min-height:64px;padding:var(--space-2);font-size:15px;justify-content:center;display:flex;flex-direction:column;gap:var(--space-2)}
#identity-form .theme-swatch{height:16px;width:100%}
#identity-form .theme-legacy input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}
#identity-form>footer{justify-content:flex-end;border-top:2px solid var(--seam)}
#identity-form>footer button{min-height:48px;min-width:112px;padding:var(--space-2) var(--space-4);font:18px/1 'Redaction 50',serif}
#tone-tabs{gap:var(--control-gap);padding:2px var(--space-1)}
#tone-tabs .tone-tab{min-height:var(--touch-target)}
#tone-module.active :is(.group-header,.eq-header){height:76px;min-height:76px;margin:0;padding:var(--space-1) 0;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:var(--space-1);border-bottom:1px solid var(--plate-shadow);font:16px/20px 'Redaction 50',serif;letter-spacing:0;color:var(--ink)}
#tone-module.active .group-header h2{font:inherit;line-height:20px;min-height:20px;margin:0;color:inherit}
#tone-module.active :is(.group-header,.eq-header) .toggle{width:64px;min-width:44px;height:44px;min-height:44px;padding:0;margin:0;font:16px/1 'Redaction 50',serif;letter-spacing:0}
#tone-module.active #rack.chorus-tone{grid-template-rows:76px minmax(0,1fr)}
#tone-module.active #rack.eq-view{padding:var(--space-1) var(--space-2) var(--space-2)}
#tone-module.active .group-section{padding:var(--space-1) var(--space-2) var(--space-2)}
#tone-module.active .group-section.single .group-header .toggle{width:min(64px,100%)}
#rack .preset-entry{min-height:64px;display:grid;grid-template-columns:32px minmax(0,1fr) 54px;align-items:center;gap:var(--space-2);padding:var(--space-3);font:17px/1.15 'Redaction 50',serif}
#rack .preset-entry strong{font:inherit;overflow-wrap:anywhere}
#rack .preset-entry[aria-current=true]{outline:2px solid var(--accent-light);outline-offset:-4px}
#rack .preset-number{font:14px ui-monospace,monospace;opacity:.8}
#rack .preset-marker{font:12px/1.1 'Redaction 50',serif;color:#ffd28a;letter-spacing:0;text-align:right}
#rack .preset-current{background:var(--glass);color:var(--glass-ink);border:2px solid var(--accent-light);opacity:1}
#rack .preset-current .preset-marker{color:inherit}
@media(max-width:700px){#identity-form .identity-grid{grid-template-columns:1fr;gap:var(--space-6)}#identity-form .guitar-options{grid-template-columns:repeat(3,minmax(0,1fr))}#identity-form .theme-options{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-height:600px){#identity-form>header,#identity-form>footer{padding:var(--space-2) var(--space-3)}#identity-form h2{font-size:24px}}
#rack.visual-panel-view{display:grid;grid-template-rows:56px minmax(0,1fr);padding:0;gap:0;border:3px solid var(--seam);background:var(--glass);overflow:hidden}
.visual-panel-bar{display:flex;align-items:center;justify-content:flex-end;gap:var(--control-gap);padding:var(--space-1) var(--space-2);background:var(--recess);border-bottom:2px solid var(--seam)}
.visual-action{position:relative;isolation:isolate;min-height:var(--touch-target);min-width:110px;padding:var(--space-2) var(--space-3);font:16px/1 'Redaction 50',serif;cursor:pointer;touch-action:manipulation}
.visual-action::before{content:'';position:absolute;z-index:-1}
#visual-panel-canvas{width:100%;height:100%;min-height:0;display:block;image-rendering:pixelated}
#visualizer-back{min-height:44px!important;min-width:100px;font:18px/1 'Redaction 50',serif!important}
#tone-module.active #rack.chorus-tone{padding:var(--space-1) var(--space-2) var(--space-2)}
#rack.visual-panel-view{grid-template-columns:minmax(0,1fr);grid-auto-flow:row}
#rack.visual-panel-view>*{grid-column:1}
/* Fullscreen has no visible chrome. Its one semantic exit target is the whole screen. */
#visualizer-overlay{position:fixed;inset:0;width:100vw;height:100dvh;z-index:1000;margin:0;padding:0;border:0;background:#101722;cursor:none;touch-action:none}
#visualizer-canvas{inset:0;display:block;width:100%;height:100%;pointer-events:none}
#visualizer-exit{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;min-width:0!important;min-height:0!important;max-width:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;outline:none!important;clip-path:none!important;transform:none!important;translate:none!important;cursor:none!important;touch-action:none}
#visualizer-exit::before,#visualizer-exit::after{display:none!important}
.visual-idle-label{display:flex;align-items:center;gap:var(--space-2);margin-right:auto;color:var(--ink);font:14px/1 'Redaction 50',serif;white-space:nowrap}
.visual-idle-label select{width:76px;height:44px;min-height:44px;margin:0;padding:4px 22px 4px 8px;font:16px/1 'Redaction 50',serif;color:var(--glass-ink);background-color:var(--glass);border:2px solid var(--seam);border-radius:0;cursor:pointer;touch-action:manipulation}
.visual-idle-label select:focus-visible{outline:2px solid var(--accent-light);outline-offset:1px}
