/* Touch kiosk: labels cannot select, but dialog fields remain editable. */
.device,.device *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
input,textarea,[contenteditable=true]{-webkit-user-select:text;user-select:text;-webkit-touch-callout:default}
.device img{-webkit-user-drag:none}
@media(min-width:581px){.left{grid-template-rows:222px minmax(0,1fr) 18px}}
.nav-region{min-height:0;overflow:hidden;background:var(--recess);padding:0 5px}
.nav-heading{height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 2px 0 4px;color:var(--muted);font-size:12px}
.nav-heading #add-module{position:relative;isolation:isolate;width:44px;height:44px;min-height:44px;padding:0;border:0;clip-path:none;background:transparent;color:#f4eed8;font:24px 'Redaction 50',serif}
.nav-heading #add-module::before{content:'';position:absolute;inset:5px;z-index:-1;border:8px solid transparent;border-image:var(--cap-rest) 4 fill / 8px / 0 stretch;image-rendering:pixelated;pointer-events:none}
.radial-nav{position:relative;width:198px;height:160px;margin:0 auto;color:var(--ink)}
.radial-nav button{position:absolute;isolation:isolate;min-width:48px;min-height:48px;margin:0;padding:3px 1px;border:0;clip-path:none;background:transparent!important;box-shadow:none!important;color:#f5efda;font:12px 'Redaction 50',serif;line-height:1;touch-action:manipulation}
.radial-nav button:focus-visible,.nav-heading button:focus-visible{outline:2px solid #f4b75e;outline-offset:-3px}
.radial-nav .nav-node::before,.radial-nav .dial-prev::before,.radial-nav .dial-next::before{content:'';position:absolute;inset:0;z-index:-1;border:8px solid transparent;border-image:var(--cap-rest) 4 fill / 8px / 0 stretch;image-rendering:pixelated;pointer-events:none}
.radial-nav .nav-node[aria-current=page]::before{border-image-source:var(--cap-selected)}
.radial-nav .nav-hub,.radial-nav .dial-center{border:3px solid var(--seam);border-radius:50%;background:var(--plate)!important;box-shadow:inset 2px 2px var(--plate-light),inset -2px -2px var(--plate-shadow)!important;color:var(--ink)}
.nav-hub strong,.dial-center strong,.dial-center small,.nav-hub small{display:block}.nav-hub small,.dial-center small{font:9px system-ui,sans-serif;opacity:.8;margin-top:2px}
.orbit .nav-hub{left:74px;top:56px;width:50px;height:48px}.orbit .n0{left:73px;top:0;width:52px}.orbit .n1{left:140px;top:18px;width:52px}.orbit .n2{left:140px;top:94px;width:52px}.orbit .n3{left:73px;top:112px;width:52px}.orbit .n4{left:6px;top:94px;width:52px}.orbit .n5{left:6px;top:18px;width:52px}
.fan .nav-hub{left:0;top:108px;width:48px;height:48px}.fan .n0{left:0;top:0;width:50px}.fan .n1{left:51px;top:0;width:50px}.fan .n2{left:102px;top:0;width:50px}.fan .n3{left:148px;top:45px;width:50px}.fan .n4{left:132px;top:100px;width:50px}.fan .n5{left:72px;top:108px;width:50px}
.nav-hint{position:absolute;top:110px;left:45px;font-size:11px;line-height:1.2;color:var(--muted);text-align:center;max-width:110px}.fan .nav-hint{top:55px;left:55px}
.dial-ring{position:absolute;left:3px;right:3px;top:20px;height:100px;border:2px solid var(--plate-shadow);border-radius:50%;background:var(--recess-light)}
.dial .dial-prev{left:4px;top:25px;width:48px;font-size:24px}.dial .dial-next{right:4px;top:25px;width:48px;font-size:24px}.dial .dial-center{left:57px;top:11px;width:74px;height:74px}
.dial p{position:absolute;top:125px;left:0;right:0;margin:0;text-align:center;font-size:11px;color:var(--muted)}
#rack.home-view{padding:6px;background:var(--rack-surface,var(--plate));overflow-y:auto}
.effects-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.effect-card{min-width:0;background:var(--recess);border:2px solid var(--seam);box-shadow:inset 1px 1px var(--plate-light);padding:4px}
.effect-card-head{display:flex;align-items:center;gap:4px;min-height:50px;color:#f5f0dc}.effect-card-head img{width:48px;height:48px;object-fit:contain;image-rendering:pixelated;flex:none}.effect-card-head div{min-width:0;display:flex;flex-direction:column;gap:3px}.effect-card-head strong{font-size:14px;line-height:1;overflow-wrap:anywhere}.effect-card-head small{font-size:10px;color:#dad9c4}
.effect-card-actions{display:grid;grid-template-columns:1fr 1fr;gap:3px}
.effect-card-actions button{position:relative;isolation:isolate;min-width:44px;min-height:44px;padding:3px;border:0;clip-path:none;background:transparent!important;color:#f6f0dc;font:13px 'Redaction 50',serif}
.effect-card-actions button::before{content:'';position:absolute;z-index:-1;inset:0;border:8px solid transparent;border-image:var(--cap-rest) 4 fill / 8px / 0 stretch;image-rendering:pixelated;pointer-events:none}
.effect-card-actions .effect-power[aria-pressed=true]::before{border-image-source:var(--cap-on)}
.effect-card-actions button:focus-visible{outline:2px solid #f4b75e;outline-offset:-3px}
.radial-nav .nav-hub,.radial-nav .dial-center{border:3px solid var(--seam)!important}
.radial-nav .nav-hub::before,.radial-nav .nav-hub::after,.radial-nav .dial-center::before,.radial-nav .dial-center::after{display:none!important}
.pedal-artwork{position:relative;display:block;width:48px;height:48px;flex:none}
/* The source sprite says “distortion”; cover that baked-in word on generic uses. */
.pedal-artwork::after{content:'';position:absolute;left:12%;right:12%;top:44%;height:12%;background:#30221e;pointer-events:none}
/* Keep the fan's adjacent touch targets from overlapping. */
.fan .n3{top:50px}
